From 786c93ee35d9a52124d42fead52d10a9f74f1e7b Mon Sep 17 00:00:00 2001 From: eabdullin Date: Wed, 14 May 2025 18:59:32 +0000 Subject: [PATCH] import UBI diffutils-3.10-8.el10 --- .diffutils.metadata | 1 - .gitignore | 2 +- SOURCES/diffutils-3.6-covscan.patch | 74 ------- .../diffutils-3.6-shows_incorrect_data.patch | 45 ----- SOURCES/diffutils-cmp-s-empty.patch | 20 -- diffutils-3.10-cmp-s-empty.patch | 31 +++ diffutils-3.10-coverity.patch | 184 ++++++++++++++++++ ...ffutils-i18n.patch => diffutils-i18n.patch | 77 ++++---- SPECS/diffutils.spec => diffutils.spec | 142 +++++++++----- sources | 1 + 10 files changed, 352 insertions(+), 225 deletions(-) delete mode 100644 .diffutils.metadata delete mode 100644 SOURCES/diffutils-3.6-covscan.patch delete mode 100644 SOURCES/diffutils-3.6-shows_incorrect_data.patch delete mode 100644 SOURCES/diffutils-cmp-s-empty.patch create mode 100644 diffutils-3.10-cmp-s-empty.patch create mode 100644 diffutils-3.10-coverity.patch rename SOURCES/diffutils-i18n.patch => diffutils-i18n.patch (89%) rename SPECS/diffutils.spec => diffutils.spec (73%) create mode 100644 sources diff --git a/.diffutils.metadata b/.diffutils.metadata deleted file mode 100644 index 0a8c8e9..0000000 --- a/.diffutils.metadata +++ /dev/null @@ -1 +0,0 @@ -1287a553868b808ebfff3790a5cdc6fdf7cb2886 SOURCES/diffutils-3.6.tar.xz diff --git a/.gitignore b/.gitignore index a071027..3de43ac 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/diffutils-3.6.tar.xz +diffutils-3.10.tar.xz diff --git a/SOURCES/diffutils-3.6-covscan.patch b/SOURCES/diffutils-3.6-covscan.patch deleted file mode 100644 index 76e1000..0000000 --- a/SOURCES/diffutils-3.6-covscan.patch +++ /dev/null @@ -1,74 +0,0 @@ -diff -up diffutils-3.6/lib/quotearg.c.covscan diffutils-3.6/lib/quotearg.c ---- diffutils-3.6/lib/quotearg.c.covscan 2017-05-20 02:14:05.000000000 +0200 -+++ diffutils-3.6/lib/quotearg.c 2018-08-13 14:20:54.934196535 +0200 -@@ -886,8 +886,9 @@ quotearg_n_options (int n, char const *a - if (nslots <= n) - { - bool preallocated = (sv == &slotvec0); -- -- if (MIN (INT_MAX, MIN (PTRDIFF_MAX, SIZE_MAX) / sizeof *sv) <= n) -+ int nmax = MIN (INT_MAX, MIN (PTRDIFF_MAX, SIZE_MAX) / sizeof *sv) - 1; -+ -+ if (nmax < n) - xalloc_die (); - - slotvec = sv = xrealloc (preallocated ? NULL : sv, (n + 1) * sizeof *sv); -diff -up diffutils-3.6/src/diff.h.covscan diffutils-3.6/src/diff.h ---- diffutils-3.6/src/diff.h.covscan 2018-08-13 14:20:54.931196520 +0200 -+++ diffutils-3.6/src/diff.h 2018-08-13 14:20:54.935196541 +0200 -@@ -392,7 +392,7 @@ extern void print_sdiff_script (struct c - extern char const change_letter[4]; - extern char const pr_program[]; - extern char *concat (char const *, char const *, char const *); --extern bool (*lines_differ) (char const *, size_t, char const *, size_t) _GL_ATTRIBUTE_PURE; -+extern bool (*lines_differ) (char const *, size_t, char const *, size_t); - extern bool lines_differ_singlebyte (char const *, size_t, char const *, size_t) _GL_ATTRIBUTE_PURE; - #ifdef HANDLE_MULTIBYTE - extern bool lines_differ_multibyte (char const *, size_t, char const *, size_t) _GL_ATTRIBUTE_PURE; -diff -up diffutils-3.6/src/ifdef.c.covscan diffutils-3.6/src/ifdef.c ---- diffutils-3.6/src/ifdef.c.covscan 2017-05-18 19:39:59.000000000 +0200 -+++ diffutils-3.6/src/ifdef.c 2018-08-13 14:20:54.935196541 +0200 -@@ -362,20 +362,14 @@ do_printf_spec (FILE *out, char const *s - printint print_value = value; - size_t spec_prefix_len = f - spec - 2; - size_t pI_len = sizeof pI - 1; --#if 0 -- char format[spec_prefix_len + pI_len + 2]; --#else - char *format = xmalloc (spec_prefix_len + pI_len + 2); --#endif - char *p = format + spec_prefix_len + pI_len; - memcpy (format, spec, spec_prefix_len); - memcpy (format + spec_prefix_len, pI, pI_len); - *p++ = c; - *p = '\0'; - fprintf (out, format, print_value); --#if ! HAVE_C_VARARRAYS - free (format); --#endif - } - } - break; -diff -up diffutils-3.6/src/sdiff.c.covscan diffutils-3.6/src/sdiff.c ---- diffutils-3.6/src/sdiff.c.covscan 2018-08-13 14:41:13.969450849 +0200 -+++ diffutils-3.6/src/sdiff.c 2018-08-13 14:44:07.877344103 +0200 -@@ -230,8 +230,10 @@ cleanup (int signo __attribute__((unused - if (0 < diffpid) - kill (diffpid, SIGPIPE); - #endif -- if (tmpname) -+ if (tmpname) { - unlink (tmpname); -+ free (tmpname); -+ } - } - - static void exiterr (void) __attribute__((noreturn)); -@@ -685,6 +687,7 @@ main (int argc, char *argv[]) - if (tmpname) - { - unlink (tmpname); -+ free (tmpname); - tmpname = 0; - } - diff --git a/SOURCES/diffutils-3.6-shows_incorrect_data.patch b/SOURCES/diffutils-3.6-shows_incorrect_data.patch deleted file mode 100644 index 809451a..0000000 --- a/SOURCES/diffutils-3.6-shows_incorrect_data.patch +++ /dev/null @@ -1,45 +0,0 @@ -commit ffd63aedad3c0eb08ebb27103e5f242f8732dc0c -Author: Paul Eggert -Date: Tue Jul 24 10:18:28 2018 -0700 - - cmp: fix bug in -b diagnostic - - Problem reported by mancha (Bug#32249). - * src/cmp.c (count_newlines): Restore old value of sentinel. - * tests/cmp: Test for the bug. - -diff --git a/src/cmp.c b/src/cmp.c -index 04638e3..2811392 100644 ---- a/src/cmp.c -+++ b/src/cmp.c -@@ -639,9 +639,11 @@ count_newlines (char *buf, size_t bufsize) - size_t count = 0; - char *p; - char *lim = buf + bufsize; -+ char ch = *lim; - *lim = '\n'; - for (p = buf; (p = rawmemchr (p, '\n')) != lim; p++) - count++; -+ *lim = ch; - return count; - } - -diff --git a/tests/cmp b/tests/cmp -index 160c1ea..ca0fe5e 100755 ---- a/tests/cmp -+++ b/tests/cmp -@@ -208,4 +208,14 @@ done >out1 - - compare exp1 out1 || fail=1 - -+printf 'bad\n' >bad -+printf 'bug\n' >bug -+echo LC_ALL=C cmp -b bad bug -+LC_ALL=C cmp -b bad bug -+test $? -eq 1 || fail=1 -+case `LC_ALL=C cmp -b bad bug` in -+ 'bad bug differ: byte 2, line 1 is '*' a '*' u') ;; -+ *) echo 'expected cmp -b to report a and u'; fail=1;; -+esac -+ - Exit $fail diff --git a/SOURCES/diffutils-cmp-s-empty.patch b/SOURCES/diffutils-cmp-s-empty.patch deleted file mode 100644 index 7fc3a18..0000000 --- a/SOURCES/diffutils-cmp-s-empty.patch +++ /dev/null @@ -1,20 +0,0 @@ -diff -up diffutils-3.6/src/cmp.c.cmp-s-empty diffutils-3.6/src/cmp.c ---- diffutils-3.6/src/cmp.c.cmp-s-empty 2017-05-18 18:39:59.000000000 +0100 -+++ diffutils-3.6/src/cmp.c 2017-05-22 10:53:28.477147864 +0100 -@@ -330,12 +330,15 @@ main (int argc, char **argv) - - /* If only a return code is needed, - and if both input descriptors are associated with plain files, -+ and if both files are larger than 0 bytes (procfs files are always 0), - conclude that the files differ if they have different sizes - and if more bytes will be compared than are in the smaller file. */ - - if (comparison_type == type_status - && S_ISREG (stat_buf[0].st_mode) -- && S_ISREG (stat_buf[1].st_mode)) -+ && S_ISREG (stat_buf[1].st_mode) -+ && stat_buf[0].st_size > 0 -+ && stat_buf[1].st_size > 0) - { - off_t s0 = stat_buf[0].st_size - file_position (0); - off_t s1 = stat_buf[1].st_size - file_position (1); diff --git a/diffutils-3.10-cmp-s-empty.patch b/diffutils-3.10-cmp-s-empty.patch new file mode 100644 index 0000000..f970c69 --- /dev/null +++ b/diffutils-3.10-cmp-s-empty.patch @@ -0,0 +1,31 @@ +diff --git a/src/cmp.c b/src/cmp.c +index 4bf0a4c..936125c 100644 +--- a/src/cmp.c ++++ b/src/cmp.c +@@ -338,13 +338,14 @@ main (int argc, char **argv) + } + + /* If only a return code is needed, +- and if both input descriptors are associated with plain files, ++ and both input descriptors are associated with plain files, ++ and the file sizes are nonzero so they are not Linux /proc files, + conclude that the files differ if they have different sizes + and if more bytes will be compared than are in the smaller file. */ + + if (comparison_type == type_status +- && 0 <= stat_buf[0].st_size && S_ISREG (stat_buf[0].st_mode) +- && 0 <= stat_buf[1].st_size && S_ISREG (stat_buf[1].st_mode)) ++ && 0 < stat_buf[0].st_size && S_ISREG (stat_buf[0].st_mode) ++ && 0 < stat_buf[1].st_size && S_ISREG (stat_buf[1].st_mode)) + { + off_t s0 = stat_buf[0].st_size - file_position (0); + off_t s1 = stat_buf[1].st_size - file_position (1); +@@ -401,7 +402,7 @@ cmp (void) + ? bytes : TYPE_MAXIMUM (off_t)); + + for (f = 0; f < 2; f++) +- if (0 <= stat_buf[f].st_size && S_ISREG (stat_buf[f].st_mode)) ++ if (0 < stat_buf[f].st_size && S_ISREG (stat_buf[f].st_mode)) + { + off_t file_bytes = stat_buf[f].st_size - file_position (f); + if (file_bytes < byte_number_max) diff --git a/diffutils-3.10-coverity.patch b/diffutils-3.10-coverity.patch new file mode 100644 index 0000000..76fa07a --- /dev/null +++ b/diffutils-3.10-coverity.patch @@ -0,0 +1,184 @@ +diff -up diffutils-3.10/lib/nstrftime.c.orig diffutils-3.10/lib/nstrftime.c +--- diffutils-3.10/lib/nstrftime.c.orig 2023-05-20 11:05:07.000000000 +0200 ++++ diffutils-3.10/lib/nstrftime.c 2024-07-30 16:36:42.914438967 +0200 +@@ -882,6 +882,7 @@ __strftime_internal (STREAM_OR_CHAR_T *s + *u = '\0'; + len = strftime (ubuf, sizeof ubuf, ufmt, tp); + if (len != 0) ++ /* coverity[verrun-buffer-arg: FALSE] */ + cpy (len - 1, ubuf + 1); + } + break; +@@ -1044,10 +1045,13 @@ __strftime_internal (STREAM_OR_CHAR_T *s + i += padding; + width -= padding; + } ++ /* coverity[bad_memset : FALSE] */ ++ /* coverity[overrun-buffer-arg : FALSE] */ + width_add1 (0, sign_char); + width--; + } + ++ /* coverity[bad_memset : FALSE] */ + cpy (numlen, bufp); + } + break; +@@ -1126,7 +1130,9 @@ __strftime_internal (STREAM_OR_CHAR_T *s + buf[j - 1] = n % 10 + L_('0'), n /= 10; + if (!pad) + pad = L_('0'); ++ /* coverity[bad_memset : FALSE] */ + width_cpy (0, ndigs, buf); ++ /* coverity[bad_memset : FALSE] */ + width_add (width - ndigs, 0, (void) 0); + } + break; +@@ -1495,6 +1501,7 @@ __strftime_internal (STREAM_OR_CHAR_T *s + since this is most likely the right thing to do if a + multibyte string has been misparsed. */ + bad_format: ++ /* coverity[bad_memset : FALSE] */ + cpy (f - percent + 1, percent); + break; + } +diff -up diffutils-3.10/lib/regcomp.c.orig diffutils-3.10/lib/regcomp.c +--- diffutils-3.10/lib/regcomp.c.orig 2024-07-30 16:42:46.745614022 +0200 ++++ diffutils-3.10/lib/regcomp.c 2024-07-30 16:45:16.815548192 +0200 +@@ -1175,6 +1175,8 @@ analyze (regex_t *preg) + dfa->inveclosures = re_malloc (re_node_set, dfa->nodes_len); + if (__glibc_unlikely (dfa->inveclosures == NULL)) + return REG_ESPACE; ++ /* The 'postorder' function initializes that memory */ ++ /* coverity[alloc_fn: FALSE] */ + ret = calc_inveclosure (dfa); + } + +diff -up diffutils-3.10/lib/sigsegv.c.orig diffutils-3.10/lib/sigsegv.c +--- diffutils-3.10/lib/sigsegv.c.orig 2023-05-20 11:05:07.000000000 +0200 ++++ diffutils-3.10/lib/sigsegv.c 2024-07-30 16:36:42.914438967 +0200 +@@ -1459,6 +1459,7 @@ stackoverflow_deinstall_handler (void) + { + stack_t ss; + ss.ss_flags = SS_DISABLE; ++ /* coverity[uninit_use_in_call : FALSE] */ + if (sigaltstack (&ss, (stack_t *) 0) < 0) + perror ("gnulib sigsegv (stackoverflow_deinstall_handler)"); + } +diff -up diffutils-3.10/lib/stackvma.c.orig diffutils-3.10/lib/stackvma.c +--- diffutils-3.10/lib/stackvma.c.orig 2023-01-30 01:17:41.000000000 +0100 ++++ diffutils-3.10/lib/stackvma.c 2024-07-30 16:38:45.404872853 +0200 +@@ -176,7 +176,7 @@ rof_open (struct rofile *rof, const char + /* Attempt to read the contents in a single system call. */ + if (size > MIN_LEFTOVER) + { +- int n = read (fd, rof->buffer, size); ++ size_t n = read (fd, rof->buffer, size); + if (n < 0 && errno == EINTR) + goto retry; + # if defined __DragonFly__ +@@ -186,7 +186,7 @@ rof_open (struct rofile *rof, const char + if (n <= 0) + /* Empty file. */ + goto fail1; +- if (n + MIN_LEFTOVER <= size) ++ if (MIN_LEFTOVER <= size -n) + { + /* The buffer was sufficiently large. */ + rof->filled = n; +@@ -195,21 +195,23 @@ rof_open (struct rofile *rof, const char + large enough. We need the equivalent of full_read(). */ + for (;;) + { ++ /* rof->filled cannot exceed size (due to the buffer size check), the subtraction is unlikely to overflow. */ ++ /* coverity[overflow_sink : FALSE] */ + n = read (fd, rof->buffer + rof->filled, size - rof->filled); + if (n < 0 && errno == EINTR) + goto retry; + if (n < 0) + /* Some error. */ + goto fail1; +- if (n + MIN_LEFTOVER > size - rof->filled) +- /* Allocate a larger buffer. */ +- break; + if (n == 0) + { + /* Reached the end of file. */ + close (fd); + return 0; + } ++ if (size - rof->filled - n < MIN_LEFTOVER) ++ /* Allocate a larger buffer. */ ++ break; + rof->filled += n; + } + # else +diff -up diffutils-3.10/lib/time_rz.c.orig diffutils-3.10/lib/time_rz.c +--- diffutils-3.10/lib/time_rz.c.orig 2023-01-02 02:20:08.000000000 +0100 ++++ diffutils-3.10/lib/time_rz.c 2024-07-30 16:36:42.914438967 +0200 +@@ -303,10 +303,12 @@ mktime_z (timezone_t tz, struct tm *tm) + time_t t = mktime (&tm_1); + bool ok = 0 <= tm_1.tm_yday; + #if HAVE_STRUCT_TM_TM_ZONE || HAVE_TZNAME ++ /* coverity[uninit_use_in_call : FALSE] */ + ok = ok && save_abbr (tz, &tm_1); + #endif + if (revert_tz (old_tz) && ok) + { ++ /* coverity[uninit_use : FALSE] */ + *tm = tm_1; + return t; + } +diff -up diffutils-3.10/src/analyze.c.orig diffutils-3.10/src/analyze.c +--- diffutils-3.10/src/analyze.c.orig 2023-05-20 11:17:26.000000000 +0200 ++++ diffutils-3.10/src/analyze.c 2024-07-30 16:36:42.915438987 +0200 +@@ -689,6 +689,7 @@ diff_2_files (struct comparison *cmp) + for (f = 0; f < 2; f++) + { + free (cmp->file[f].equivs); ++ /* coverity[offset_free : FALSE] */ + free (cmp->file[f].linbuf + cmp->file[f].linbuf_base); + } + +diff -up diffutils-3.10/src/diff3.c.orig diffutils-3.10/src/diff3.c +--- diffutils-3.10/src/diff3.c.orig 2023-05-20 11:17:26.000000000 +0200 ++++ diffutils-3.10/src/diff3.c 2024-07-30 16:36:42.915438987 +0200 +@@ -798,6 +798,8 @@ using_to_diff3_block (struct diff_block + D_LINEARRAY (result, FILEC) + result_offset, + D_LENARRAY (result, FILEC) + result_offset, + D_NUMLINES (ptr, FC))) ++ /* There is a potential resource leak here, but it is not important */ ++ /* coverity[leaked_storage : FALSE] */ + return 0; + } + +@@ -827,6 +829,8 @@ using_to_diff3_block (struct diff_block + D_LINEARRAY (result, FILE0 + d) + result_offset, + D_LENARRAY (result, FILE0 + d) + result_offset, + D_NUMLINES (ptr, FO))) ++ /* There is a potential resource leak here, but it is not important */ ++ /* coverity[leaked_storage : FALSE] */ + return 0; + + /* Catch the lines between here and the next diff */ +diff -up diffutils-3.10/src/diff.c.orig diffutils-3.10/src/diff.c +--- diffutils-3.10/src/diff.c.orig 2024-07-30 16:35:17.766783183 +0200 ++++ diffutils-3.10/src/diff.c 2024-07-30 16:36:42.915438987 +0200 +@@ -429,6 +429,7 @@ main (int argc, char **argv) + sizeof C_ifdef_group_formats - 7 /* 7*"@" */, + &alloc)) + xalloc_die (); ++ /* coverity[alloc_strlen : FALSE] */ + char *b = xmalloc (alloc); + char *base = b; + int changes = 0; +diff -up diffutils-3.10/src/ifdef.c.orig diffutils-3.10/src/ifdef.c +--- diffutils-3.10/src/ifdef.c.orig 2023-02-19 19:04:39.000000000 +0100 ++++ diffutils-3.10/src/ifdef.c 2024-07-30 16:36:42.915438987 +0200 +@@ -361,6 +361,7 @@ do_printf_spec (FILE *out, char const *s + format spec "%3lx". Here the spec prefix is "%3". */ + size_t spec_prefix_len = f - spec - 2; + size_t pI_len = sizeof pI - 1; ++ /* coverity[bad_alloc_arithmetic : FALSE] */ + char *format = xmalloca (spec_prefix_len + pI_len + 2); + char *p = mempcpy (format, spec, spec_prefix_len); + p = stpcpy (p, pI); diff --git a/SOURCES/diffutils-i18n.patch b/diffutils-i18n.patch similarity index 89% rename from SOURCES/diffutils-i18n.patch rename to diffutils-i18n.patch index 6d2b341..fd41414 100644 --- a/SOURCES/diffutils-i18n.patch +++ b/diffutils-i18n.patch @@ -1,7 +1,7 @@ -diff -up diffutils-3.6/src/diff.c.i18n diffutils-3.6/src/diff.c ---- diffutils-3.6/src/diff.c.i18n 2017-05-06 20:02:54.000000000 +0100 -+++ diffutils-3.6/src/diff.c 2017-05-22 10:52:21.989254674 +0100 -@@ -76,6 +76,8 @@ static void try_help (char const *, char +diff -up diffutils-3.10/src/diff.c.i18n diffutils-3.10/src/diff.c +--- diffutils-3.10/src/diff.c.i18n 2023-05-20 11:17:26.000000000 +0200 ++++ diffutils-3.10/src/diff.c 2023-06-29 13:24:19.567608253 +0200 +@@ -76,6 +76,8 @@ static _Noreturn void try_help (char con static void check_stdout (void); static void usage (void); @@ -10,9 +10,9 @@ diff -up diffutils-3.6/src/diff.c.i18n diffutils-3.6/src/diff.c /* If comparing directories, compare their common subdirectories recursively. */ static bool recursive; -@@ -298,6 +300,13 @@ main (int argc, char **argv) - excluded = new_exclude (); +@@ -310,6 +312,14 @@ main (int argc, char **argv) presume_output_tty = false; + xstdopen (); +#ifdef HANDLE_MULTIBYTE + if (MB_CUR_MAX > 1) @@ -20,16 +20,17 @@ diff -up diffutils-3.6/src/diff.c.i18n diffutils-3.6/src/diff.c + else +#endif + lines_differ = lines_differ_singlebyte; ++ + /* Decode the options. */ - while ((c = getopt_long (argc, argv, shortopts, longopts, NULL)) != -1) -diff -up diffutils-3.6/src/diff.h.i18n diffutils-3.6/src/diff.h ---- diffutils-3.6/src/diff.h.i18n 2017-01-01 11:22:36.000000000 +0000 -+++ diffutils-3.6/src/diff.h 2017-05-22 10:51:09.050371844 +0100 -@@ -23,6 +23,17 @@ - #include - #include + while ((c = getopt_long (argc, argv, shortopts, longopts, nullptr)) != -1) +diff -up diffutils-3.10/src/diff.h.i18n diffutils-3.10/src/diff.h +--- diffutils-3.10/src/diff.h.i18n 2023-05-20 11:37:55.000000000 +0200 ++++ diffutils-3.10/src/diff.h 2023-06-29 13:25:49.451271873 +0200 +@@ -33,6 +33,17 @@ _GL_INLINE_HEADER_BEGIN + # define XTERN extern + #endif +/* For platforms which support the ISO C ammendment 1 functionality we + support user-defined character classes. */ @@ -38,29 +39,29 @@ diff -up diffutils-3.6/src/diff.h.i18n diffutils-3.6/src/diff.h +# include +# include +# if defined (HAVE_MBRTOWC) -+# define HANDLE_MULTIBYTE 1 ++# define HANDLE_MULTIBYTE 1 +# endif +#endif + /* What kind of changes a hunk contains. */ enum changes { -@@ -381,7 +392,11 @@ extern void print_sdiff_script (struct c +@@ -392,7 +403,11 @@ extern void print_sdiff_script (struct c + /* util.c */ extern char const change_letter[4]; extern char const pr_program[]; - extern char *concat (char const *, char const *, char const *); --extern bool lines_differ (char const *, char const *) _GL_ATTRIBUTE_PURE; -+extern bool (*lines_differ) (char const *, size_t, char const *, size_t) _GL_ATTRIBUTE_PURE; -+extern bool lines_differ_singlebyte (char const *, size_t, char const *, size_t) _GL_ATTRIBUTE_PURE; +-extern bool lines_differ (char const *, char const *) ATTRIBUTE_PURE; ++extern bool (*lines_differ) (char const *, size_t, char const *, size_t); ++extern bool lines_differ_singlebyte (char const *, size_t, char const *, size_t) ATTRIBUTE_PURE; +#ifdef HANDLE_MULTIBYTE -+extern bool lines_differ_multibyte (char const *, size_t, char const *, size_t) _GL_ATTRIBUTE_PURE; ++extern bool lines_differ_multibyte (char const *, size_t, char const *, size_t) ATTRIBUTE_PURE; +#endif extern lin translate_line_number (struct file_data const *, lin); extern struct change *find_change (struct change *); extern struct change *find_reverse_change (struct change *); -diff -up diffutils-3.6/src/io.c.i18n diffutils-3.6/src/io.c ---- diffutils-3.6/src/io.c.i18n 2017-01-01 11:22:36.000000000 +0000 -+++ diffutils-3.6/src/io.c 2017-05-22 10:51:09.050371844 +0100 +diff -up diffutils-3.10/src/io.c.i18n diffutils-3.10/src/io.c +--- diffutils-3.10/src/io.c.i18n 2023-05-20 11:17:26.000000000 +0200 ++++ diffutils-3.10/src/io.c 2023-06-29 13:20:52.457820950 +0200 @@ -23,6 +23,7 @@ #include #include @@ -69,7 +70,7 @@ diff -up diffutils-3.6/src/io.c.i18n diffutils-3.6/src/io.c /* Rotate an unsigned value to the left. */ #define ROL(v, n) ((v) << (n) | (v) >> (sizeof (v) * CHAR_BIT - (n))) -@@ -215,6 +216,28 @@ slurp (struct file_data *current) +@@ -223,6 +224,28 @@ slurp (struct file_data *current) /* Split the file into lines, simultaneously computing the equivalence class for each line. */ @@ -98,7 +99,7 @@ diff -up diffutils-3.6/src/io.c.i18n diffutils-3.6/src/io.c static void find_and_hash_each_line (struct file_data *current) -@@ -241,12 +264,300 @@ find_and_hash_each_line (struct file_dat +@@ -249,12 +272,300 @@ find_and_hash_each_line (struct file_dat bool same_length_diff_contents_compare_anyway = diff_length_compare_anyway | ig_case; @@ -398,20 +399,20 @@ diff -up diffutils-3.6/src/io.c.i18n diffutils-3.6/src/io.c + /* Hash this line until we find a newline. */ switch (ig_white_space) - { -@@ -397,7 +708,7 @@ find_and_hash_each_line (struct file_dat - else if (!diff_length_compare_anyway) - continue; + { +@@ -405,7 +716,7 @@ find_and_hash_each_line (struct file_dat + else if (!diff_length_compare_anyway) + continue; -- if (! lines_differ (eqline, ip)) -+ if (! lines_differ (eqline, eqs[i].length + 1, ip, length + 1)) - break; - } +- if (! lines_differ (eqline, ip)) ++ if (! lines_differ (eqline, eqs[i].length + 1, ip, length + 1)) + break; + } -diff -up diffutils-3.6/src/util.c.i18n diffutils-3.6/src/util.c ---- diffutils-3.6/src/util.c.i18n 2017-05-18 18:39:59.000000000 +0100 -+++ diffutils-3.6/src/util.c 2017-05-22 10:51:09.050371844 +0100 -@@ -985,7 +985,8 @@ finish_output (void) +diff -up diffutils-3.10/src/util.c.i18n diffutils-3.10/src/util.c +--- diffutils-3.10/src/util.c.i18n 2023-02-19 19:04:39.000000000 +0100 ++++ diffutils-3.10/src/util.c 2023-06-29 13:20:52.457820950 +0200 +@@ -1085,7 +1085,8 @@ finish_output (void) Return nonzero if the lines differ. */ bool @@ -421,7 +422,7 @@ diff -up diffutils-3.6/src/util.c.i18n diffutils-3.6/src/util.c { register char const *t1 = s1; register char const *t2 = s2; -@@ -1141,6 +1142,354 @@ lines_differ (char const *s1, char const +@@ -1241,6 +1242,354 @@ lines_differ (char const *s1, char const return true; } diff --git a/SPECS/diffutils.spec b/diffutils.spec similarity index 73% rename from SPECS/diffutils.spec rename to diffutils.spec index 6ff36b4..0ce2403 100644 --- a/SPECS/diffutils.spec +++ b/diffutils.spec @@ -1,20 +1,19 @@ -Summary: A GNU collection of diff utilities +Summary: GNU collection of diff utilities Name: diffutils -Version: 3.6 -Release: 6%{?dist} -Group: Applications/Text -URL: http://www.gnu.org/software/diffutils/diffutils.html -Source: ftp://ftp.gnu.org/gnu/diffutils/diffutils-%{version}.tar.xz -Patch1: diffutils-cmp-s-empty.patch -Patch2: diffutils-i18n.patch -Patch3: diffutils-3.6-covscan.patch -Patch4: diffutils-3.6-shows_incorrect_data.patch -License: GPLv3+ -Requires(post): info -Requires(preun): info +Version: 3.10 +Release: 8%{?dist} +URL: https://www.gnu.org/software/diffutils/diffutils.html +Source: https://ftp.gnu.org/gnu/diffutils/diffutils-%{version}.tar.xz +# Multibyte +Patch0: diffutils-i18n.patch +Patch1: diffutils-3.10-cmp-s-empty.patch +Patch2: diffutils-3.10-coverity.patch +License: GPL-3.0-or-later Provides: bundled(gnulib) +BuildRequires: gcc BuildRequires: help2man BuildRequires: autoconf, automake, texinfo +BuildRequires: make %description Diffutils includes four utilities: diff, cmp, diff3 and sdiff. Diff @@ -30,29 +29,18 @@ to merge two files interactively. Install diffutils if you need to compare text files. %prep -%setup -q -# For 'cmp -s', compare file sizes only if both non-zero (bug #563618). -%patch1 -p1 -b .cmp-s-empty - -%patch2 -p1 -b .i18n - -# covscan issues -%patch3 -p1 -b .covscan - -# bz#1732960, cmp -b shows incorrect data -%patch4 -p1 -b .shows_incorrect_data +%autosetup -p1 # Run autoreconf for aarch64 support (bug #925256). autoreconf %build -export CFLAGS="$RPM_OPT_FLAGS -Dlint" +export CFLAGS="$RPM_OPT_FLAGS -DGCC_LINT" %configure -make PR_PROGRAM=%{_bindir}/pr +make PR_PROGRAM=%{_bindir}/pr V=1 %install -rm -rf $RPM_BUILD_ROOT -make DESTDIR=$RPM_BUILD_ROOT install +%make_install rm -f $RPM_BUILD_ROOT%{_infodir}/dir %find_lang %{name} @@ -62,32 +50,94 @@ rm -f $RPM_BUILD_ROOT%{_infodir}/dir >gnulib-tests/test-update-copyright.sh make check -%post -/sbin/install-info %{_infodir}/%{name}.info %{_infodir}/dir || : - -%preun -if [ $1 = 0 ]; then - /sbin/install-info --delete %{_infodir}/%{name}.info %{_infodir}/dir || : -fi - -%clean -rm -rf $RPM_BUILD_ROOT - %files -f %{name}.lang -%defattr(-,root,root) %doc NEWS README -%{!?_licensedir:%global license %%doc} %license COPYING %{_bindir}/* %{_mandir}/*/* -%{_infodir}/diffutils.info*gz +%{_infodir}/diffutils.info* %changelog -* Tue Nov 19 2019 Than Ngo - 3.6-6 -- Resolves: #1732960 - cmp -b shows incorrect data +* Tue Oct 29 2024 Troy Dawson - 3.10-8 +- Bump release for October 2024 mass rebuild: + Resolves: RHEL-64018 -* Mon Aug 13 2018 Than Ngo - 3.6-5 -- Resolves: #1606949, covscan issues +* Tue Jul 30 2024 Than Ngo - 3.10-7 +- Resolves: RHEL-50780, regression, compare file sizes only if both non-zero + +* Mon Jun 24 2024 Troy Dawson - 3.10-6 +- Bump release for June 2024 mass rebuild + +* Wed Jan 24 2024 Fedora Release Engineering - 3.10-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Fri Jan 19 2024 Fedora Release Engineering - 3.10-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Wed Jul 19 2023 Fedora Release Engineering - 3.10-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Wed Jul 05 2023 Than Ngo - 3.10-2 +- Fix output of "diff -l -y" for non-ASCII input files + +* Thu Jun 29 2023 Than Ngo - 3.10-1 +- Fix bz#2208831, update to 3.10 +- Fix bz#2196671, diff -D no longer fails to output #ifndef lines introduced in 3.9 + +* Tue Mar 28 2023 Than Ngo - 3.9-4 +- Fix deprecated patch rpm marco + +* Tue Feb 21 2023 Than Ngo - 3.9-3 +- migrated to SPDX license + +* Thu Jan 19 2023 Fedora Release Engineering - 3.9-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Mon Jan 16 2023 Tim Waugh - 3.9-1 +- 3.9 (bug #2161117). + +* Thu Jul 21 2022 Fedora Release Engineering - 3.8-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Thu Jan 20 2022 Fedora Release Engineering - 3.8-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Mon Aug 2 2021 Tim Waugh - 3.8-1 +- 3.8. + +* Wed Jul 21 2021 Fedora Release Engineering - 3.7-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Mon Apr 12 2021 Tim Waugh - 3.7-9 +- Handle SIGSTKSZ no longer being a constant (bug #1943016). + +* Tue Jan 26 2021 Fedora Release Engineering - 3.7-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Thu Oct 8 2020 Tim Waugh - 3.7-7 +- Fix from gnulib upstream, commit 175e0bc (bug #1863423). + +* Sat Aug 01 2020 Fedora Release Engineering - 3.7-6 +- Second attempt - Rebuilt for + https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Mon Jul 27 2020 Fedora Release Engineering - 3.7-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Tue Jan 28 2020 Fedora Release Engineering - 3.7-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Wed Jul 24 2019 Fedora Release Engineering - 3.7-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Thu Jan 31 2019 Fedora Release Engineering - 3.7-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Mon Jan 07 2019 Than Ngo - 3.7-1 +- 3.7 + +* Thu Jul 12 2018 Fedora Release Engineering - 3.6-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild * Wed Feb 07 2018 Fedora Release Engineering - 3.6-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild diff --git a/sources b/sources new file mode 100644 index 0000000..97fc8bb --- /dev/null +++ b/sources @@ -0,0 +1 @@ +SHA512 (diffutils-3.10.tar.xz) = 219d2c815a120690c6589846271e43aee5c96c61a7ee4abbef97dfcdb3d6416652ed494b417de0ab6688c4322540d48be63b5e617beb6d20530b5d55d723ccbb