diff --git a/gpgkey-F576AAAC1B0FF849792D8CB129A794FD2272BC86.gpg b/gpgkey-F576AAAC1B0FF849792D8CB129A794FD2272BC86.gpg new file mode 100644 index 0000000000000000000000000000000000000000..c17e1624260aff4dd566355b6dd34e03aa523431 Binary files /dev/null and b/gpgkey-F576AAAC1B0FF849792D8CB129A794FD2272BC86.gpg differ diff --git a/time-1.9-Fix-formatting-a-trailing-backslash-and-a-percent-si.patch b/time-1.9-Fix-formatting-a-trailing-backslash-and-a-percent-si.patch new file mode 100644 index 0000000000000000000000000000000000000000..c61de51ec14580b3c25379e526a45264620422e9 --- /dev/null +++ b/time-1.9-Fix-formatting-a-trailing-backslash-and-a-percent-si.patch @@ -0,0 +1,68 @@ +From f88ec3114dfdb5f284367d7602a06dc021409616 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= +Date: Fri, 26 Jan 2024 10:36:07 +0100 +Subject: [PATCH] Fix formatting a trailing backslash and a percent sign +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +There was a bug report that a trailing backslash leads to printing +a nul byte and an commandline: + +$ /usr/bin/time -f 'abc\' sleep 1 2>&1 | hexdump -vC +00000000 61 62 63 3f 5c 00 73 6c 65 65 70 0a |abc?\.sleep.| +0000000c + +This patch fixes it. + +A similar fix was already in place for a trailing percent sign, but it +was missing printing an implicit newline as mandated by +the documentation. This patch fixes it either. + +Signed-off-by: Petr Písař +--- + src/time.c | 12 +++++++++--- + 1 file changed, 9 insertions(+), 3 deletions(-) + +diff --git a/src/time.c b/src/time.c +index 2f2b702..2184e4e 100644 +--- a/src/time.c ++++ b/src/time.c +@@ -585,12 +585,13 @@ summarize (fp, fmt, command, resp) + break; + case '\0': + putc ('?', fp); +- return; ++ break; + default: + putc ('?', fp); + putc (*fmt, fp); + } +- ++fmt; ++ if (*fmt != '\0') ++ ++fmt; + break; + + case '\\': /* Format escape. */ +@@ -605,12 +606,17 @@ summarize (fp, fmt, command, resp) + case '\\': + putc ('\\', fp); + break; ++ case '\0': ++ putc ('?', fp); ++ putc ('\\', fp); ++ break; + default: + putc ('?', fp); + putc ('\\', fp); + putc (*fmt, fp); + } +- ++fmt; ++ if (*fmt != '\0') ++ ++fmt; + break; + + default: +-- +2.43.0 + diff --git a/time-1.9-Improve-info-directory-index-entry-description.patch b/time-1.9-Improve-info-directory-index-entry-description.patch new file mode 100644 index 0000000000000000000000000000000000000000..99cc110d75c6f9c8962bf4d0f711c762dab5842d --- /dev/null +++ b/time-1.9-Improve-info-directory-index-entry-description.patch @@ -0,0 +1,32 @@ +From d8cf31417c84646497657280830c432b6f412495 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= +Date: Mon, 18 Jun 2018 10:05:06 +0200 +Subject: [PATCH] Improve info directory index entry description +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Describing "time" as "time" is not explanatory. Use better +description. + +Signed-off-by: Petr Písař +--- + doc/time.texi | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/doc/time.texi b/doc/time.texi +index 63d25b4..dac65b4 100644 +--- a/doc/time.texi ++++ b/doc/time.texi +@@ -28,7 +28,7 @@ Texts. A copy of the license is included in the section entitled + + @dircategory Basics + @direntry +-* Time: (time). time ++* Time: (time). GNU time utility. + @end direntry + + +-- +2.14.4 + diff --git a/time-1.9-Use-kibibytes-instead-of-kilobytes-in-a-documentatio.patch b/time-1.9-Use-kibibytes-instead-of-kilobytes-in-a-documentatio.patch new file mode 100644 index 0000000000000000000000000000000000000000..de751d8e2fc88435a7314c2b53666ba05cd0ab9a --- /dev/null +++ b/time-1.9-Use-kibibytes-instead-of-kilobytes-in-a-documentatio.patch @@ -0,0 +1,189 @@ +From 9fd52d5705fad70c0cb4ad8d508596a488262acf Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= +Date: Mon, 13 Jul 2020 09:24:35 +0200 +Subject: [PATCH] Use kibibytes instead of kilobytes in a documentation +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This patch does not changes any output of the time program. It only +clarifies a manual and the comments. + + + +Signed-off-by: Petr Písař +--- + configure.ac | 6 +++--- + doc/time.texi | 12 ++++++------ + src/rusage-kb.c | 4 ++-- + src/rusage-kb.h | 10 +++++----- + src/time.c | 6 +++--- + tests/time-max-rss.sh | 4 ++-- + 6 files changed, 21 insertions(+), 21 deletions(-) + +diff --git a/configure.ac b/configure.ac +index d2950bd..67738b5 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -90,7 +90,7 @@ if test -z "$time_getrusage_mem_units" ; then + + solaris*) time_getrusage_mem_units=pages ;; + +- # As a fallback, assume KB (the most common value). ++ # As a fallback, assume KiB (the most common value). + # Set the 'warn' variable to warn the user at the end + # of ./configure + *) time_getrusage_mem_units=kb +@@ -104,7 +104,7 @@ case $time_getrusage_mem_units in + kb) + AC_DEFINE([GETRUSAGE_RETURNS_KB],[1], + [Define to 1 if getrusage(2) on this systems returns +- ru_maxrss in kilobytes]) ++ ru_maxrss in kibibytes]) + ;; + + bytes) +@@ -140,7 +140,7 @@ AC_OUTPUT + # Warn the user if getrusage(2) behaviour on this OS is unknown + if test "$warn_getrusage_mem_units" ; then + AC_MSG_WARN([unknown getrusage behavior on operating system '$host_os'. +- Assuming Kilobytes. ++ Assuming kibibytes. + please report this with the output of 'uname -a' to + bug-time@gnu.org]) + fi +diff --git a/doc/time.texi b/doc/time.texi +index dac65b4..3a05ed9 100644 +--- a/doc/time.texi ++++ b/doc/time.texi +@@ -241,22 +241,22 @@ times divied by the total running time. + @table @code + @item M + Maximum resident set size of the process during its lifetime, in +-Kilobytes. ++kibibytes. + + @item t +-Average resident set size of the process, in Kilobytes. ++Average resident set size of the process, in kibibytes. + + @item K +-Average total (data+stack+text) memory use of the process, in Kilobytes. ++Average total (data+stack+text) memory use of the process, in kibibytes. + + @item D +-Average size of the process's unshared data area, in Kilobytes. ++Average size of the process's unshared data area, in kibibytes. + + @item p +-Average size of the process's unshared stack, in Kilobytes. ++Average size of the process's unshared stack, in kibibytes. + + @item X +-Average size of the process's shared text, in Kilobytes. ++Average size of the process's shared text, in kibibytes. + + @item Z + System's page size, in bytes. This is a per-system constant, but +diff --git a/src/rusage-kb.c b/src/rusage-kb.c +index aad06b8..04352cd 100644 +--- a/src/rusage-kb.c ++++ b/src/rusage-kb.c +@@ -25,8 +25,8 @@ + #include + #include + +-/* Return the number of kilobytes corresponding to a number of pages PAGES. +- (Actually, we use it to convert pages*ticks into kilobytes*ticks.) ++/* Return the number of kibibytes corresponding to a number of pages PAGES. ++ (Actually, we use it to convert pages*ticks into kibibytes*ticks.) + + Try to do arithmetic so that the risk of overflow errors is minimized. + This is funky since the pagesize could be less than 1K. +diff --git a/src/rusage-kb.h b/src/rusage-kb.h +index 4a53515..b7b1155 100644 +--- a/src/rusage-kb.h ++++ b/src/rusage-kb.h +@@ -19,7 +19,7 @@ + #ifndef _RUSAGE_KB_ + #define _RUSAGE_KB_ + +-/* As of 2017, most kernels' getrusage(2) returns ru_maxrss in kilobytes: ++/* As of 2017, most kernels' getrusage(2) returns ru_maxrss in kibibytes: + Linux, Hurd, Free/Open/Net-BSD, MINIX, AIX7 + + OpenSolaris's getrusage(2) documents a return value in pages, +@@ -32,20 +32,20 @@ + + #if GETRUSAGE_RETURNS_KB + +-/* define as no-op, as RUSAGE values are already in KB */ ++/* define as no-op, as RUSAGE values are already in KiB */ + #define RUSAGE_MEM_TO_KB(x) (x) + + #elif GETRUSAGE_RETURNS_BYTES + +-/* Convert bytes to kilobytes */ ++/* Convert bytes to kibibytes */ + #define RUSAGE_MEM_TO_KB(x) ((x)/1024) + + #elif GETRUSAGE_RETURNS_PAGES + +-/* Convert bytes to kilobytes */ ++/* Convert bytes to kibibytes */ + #define RUSAGE_MEM_TO_KB(x) (ptok (x)) + +-/* A function to get the system's page size and convert pages to KB */ ++/* A function to get the system's page size and convert pages to KiB */ + unsigned long + ptok (unsigned long pages); + +diff --git a/src/time.c b/src/time.c +index 7e07995..f76265a 100644 +--- a/src/time.c ++++ b/src/time.c +@@ -108,8 +108,8 @@ typedef RETSIGTYPE (*sighandler) (); + and 100 on the sun4. + + Some manuals have an apparent error, claiming that units for average +- sizes are kb*sec. Judging by the contents of `struct rusage', it +- looks like it should be kb*ticks, like on SunOS. Ticks/sec seems ++ sizes are KiB*sec. Judging by the contents of `struct rusage', it ++ looks like it should be KiB*ticks, like on SunOS. Ticks/sec seems + to be (empirically): + 50 Mt. Xinu + 250 Ultrix (mips) +@@ -412,7 +412,7 @@ linear_argv (argv) + x == exit status of command + + Various memory usages are found by converting from page-seconds +- to kbytes by multiplying by the page size, dividing by 1024, ++ to kibibytes by multiplying by the page size, dividing by 1024, + and dividing by elapsed real time. + + FP is the stream to print to. +diff --git a/tests/time-max-rss.sh b/tests/time-max-rss.sh +index 0adda5c..5ecd3f2 100755 +--- a/tests/time-max-rss.sh ++++ b/tests/time-max-rss.sh +@@ -27,7 +27,7 @@ fail= + # The auxiliary program should be built and runnable + time-aux || framework_failure_ "time-aux is missing/not runnable" + +-# Get the baseline number of MAX-RSS kilobytes ++# Get the baseline number of MAX-RSS kibibytes + # use by the program when not allocating any extra memory + env time -o mem-baseline -f "%M" time-aux \ + || framework_failure_ "failed to run time/time-aux (baseline max-rss)" +@@ -49,7 +49,7 @@ test "$b" -eq "0" && test "$c" -eq 0 \ + # There could be alot of variation between each invocation, + # accept a reasonable range + if test "$d" -ge 5000 && test "$d" -le 6000 ; then +- : # acceptable values: 5000-6000 KB ++ : # acceptable values: 5000-6000 KiB + else + cat<&2 + time(1) failed to detect 5MB allcoation. +-- +2.25.4 + diff --git a/time-1.9-drop-flawed-rss-test.patch b/time-1.9-drop-flawed-rss-test.patch new file mode 100644 index 0000000000000000000000000000000000000000..9304bcb56900ca3df6b41afeecd1b30775f440f5 --- /dev/null +++ b/time-1.9-drop-flawed-rss-test.patch @@ -0,0 +1,11 @@ +diff --color -ruN time-1.9.orig/Makefile.am time-1.9/Makefile.am +--- time-1.9.orig/Makefile.am 2017-11-08 16:31:54.000000000 -0500 ++++ time-1.9/Makefile.am 2023-06-28 13:26:45.271212609 -0400 +@@ -74,7 +74,6 @@ + + + TESTS = tests/help-version.sh \ +- tests/time-max-rss.sh \ + tests/time-exit-codes.sh \ + tests/time-posix-quiet.sh + diff --git a/time-1.9.tar.gz.sig b/time-1.9.tar.gz.sig new file mode 100644 index 0000000000000000000000000000000000000000..f101395128683d22ffdecec5fcc3d3f9a24b674d --- /dev/null +++ b/time-1.9.tar.gz.sig @@ -0,0 +1,17 @@ +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v1 + +iQIcBAABCgAGBQJapvw2AAoJEAoRth02V7kBwpcP/3uhXpenR0/SAZ8HEUlD+fnV +cSp+Yg8D0YGhs6thvVT7cNYWfAXeUeHPNRoHmMpvwGBktRDf5MPKA7v42d8peoVJ +MpotpeoUHiGiw8KBDRMSBjFoZrn5hjM7FZDPFtrChVAor8FCw4mbMknK4KLrkmyt +2B1M3PPVeQ/2m+sho+XKYZTIV4JIV9rbZn5fXjSnr3QhDGyeRgSip548LTD8Li97 +EquxdaPd9bibvBEH8ZX4+XG9qWKJyThA21VmBhrylwpFAj7W4yBPSaW3B7HRvuCY +X65cpJem6JYSpe/Hh6rHQrFdIrw3X+cO9U3vpHQq4AfSaCLIfmWw8GAXE2+6btsz +aDMDafQy4OaFo45TGURQ6V73aa9d5et7Rt6btmatNP+vG5pU9iSDK9ViN+AmX5CL +wLTtWlUyAZDzLn5UuiIAtrLtY7UWD5EcyKVe9B8T9ypRk9oAxaLgIGToukeZN6Dk +qa0AhE7xtxC0yxUPR1Pwdt7XYYpAP8/dL2hPX6jRtKnLkvMMwYheUARx60Wm9Y6W +YcE5fI+f5PoZprCbC6skwQvNbT8KmJcDrefPlSSTvj0e10IB2HZ9O1M1vNNUDL66 +0zt2j4ddtyc1NG1fLRCF52XAfIqI5a983yD40CKSRqcG3bYcyygQBhGx34Ez0buQ +YGWpJ6ZvDh8d8j77Z0n4 +=FnFy +-----END PGP SIGNATURE----- diff --git a/time.spec b/time.spec index 59cd000c2d0f1c726b8d92cedea006601a3f2b28..c5e9310dabeffb6af86369570fc246e3c108db19 100644 --- a/time.spec +++ b/time.spec @@ -1,8 +1,8 @@ -%define anolis_release 1 +%define anolis_release 2 Summary: A GNU utility for monitoring a program's use of system resources Name: time -Version: 1.9 +Version: 1.9 Release: %{anolis_release}%{?dist} # src/time.c: GPLv3+ # COPYING: GPLv3 text @@ -42,7 +42,9 @@ Release: %{anolis_release}%{?dist} # tests/time-posix-quiet.sh: GPLv3+ License: GPLv3+ and GFDL Url: https://www.gnu.org/software/%{name}/ -Source0: https://ftp.gnu.org/gnu/%{name}/%{name}-%{version}.tar.gz +Source0: https://ftp.gnu.org/gnu/time/time-1.9.tar.gz +Source1: https://ftp.gnu.org/gnu/time/time-1.9.tar.gz.sig +Source2: gpgkey-F576AAAC1B0FF849792D8CB129A794FD2272BC86.gpg # Fix measuring time when a clock experiences a jump. # Patch0: time-1.8-Prefer-clock_gettime-CLOCK_MONOTONIC.patch @@ -50,6 +52,10 @@ Patch0: time-1.8-Prefer-clock_gettime-CLOCK_MONOTONIC.patch # proposed to an upstream, # Patch3: time-1.9-Close-outfp-before-exec.patch +Patch4: time-1.9-Fix-formatting-a-trailing-backslash-and-a-percent-si.patch +Patch5: time-1.9-drop-flawed-rss-test.patch +Patch6: time-1.9-Improve-info-directory-index-entry-description.patch +Patch7: time-1.9-Use-kibibytes-instead-of-kilobytes-in-a-documentatio.patch BuildRequires: autoconf BuildRequires: automake BuildRequires: bash @@ -106,5 +112,8 @@ rm -f $RPM_BUILD_ROOT%{_infodir}/dir %doc AUTHORS ChangeLog NEWS README %changelog +* Mon Sep 29 2025 wenyuzifang - 1.9-2 +- Fix improper handling of trailing backslash and percent sign; ensure correct output formatting and prevent potential undefined behavior +- Remove the flaky test to improve test suite reliability * Mon Mar 20 2023 Yuanhong Peng - 1.9-1 - Init from upstream