Compare commits
No commits in common. "c10" and "c8" have entirely different histories.
1
.diffutils.metadata
Normal file
1
.diffutils.metadata
Normal file
@ -0,0 +1 @@
|
|||||||
|
1287a553868b808ebfff3790a5cdc6fdf7cb2886 SOURCES/diffutils-3.6.tar.xz
|
2
.gitignore
vendored
2
.gitignore
vendored
@ -1 +1 @@
|
|||||||
diffutils-3.10.tar.xz
|
SOURCES/diffutils-3.6.tar.xz
|
||||||
|
74
SOURCES/diffutils-3.6-covscan.patch
Normal file
74
SOURCES/diffutils-3.6-covscan.patch
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
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;
|
||||||
|
}
|
||||||
|
|
45
SOURCES/diffutils-3.6-shows_incorrect_data.patch
Normal file
45
SOURCES/diffutils-3.6-shows_incorrect_data.patch
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
commit ffd63aedad3c0eb08ebb27103e5f242f8732dc0c
|
||||||
|
Author: Paul Eggert <eggert@cs.ucla.edu>
|
||||||
|
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
|
20
SOURCES/diffutils-cmp-s-empty.patch
Normal file
20
SOURCES/diffutils-cmp-s-empty.patch
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
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);
|
@ -1,7 +1,7 @@
|
|||||||
diff -up diffutils-3.10/src/diff.c.i18n diffutils-3.10/src/diff.c
|
diff -up diffutils-3.6/src/diff.c.i18n diffutils-3.6/src/diff.c
|
||||||
--- diffutils-3.10/src/diff.c.i18n 2023-05-20 11:17:26.000000000 +0200
|
--- diffutils-3.6/src/diff.c.i18n 2017-05-06 20:02:54.000000000 +0100
|
||||||
+++ diffutils-3.10/src/diff.c 2023-06-29 13:24:19.567608253 +0200
|
+++ diffutils-3.6/src/diff.c 2017-05-22 10:52:21.989254674 +0100
|
||||||
@@ -76,6 +76,8 @@ static _Noreturn void try_help (char con
|
@@ -76,6 +76,8 @@ static void try_help (char const *, char
|
||||||
static void check_stdout (void);
|
static void check_stdout (void);
|
||||||
static void usage (void);
|
static void usage (void);
|
||||||
|
|
||||||
@ -10,9 +10,9 @@ diff -up diffutils-3.10/src/diff.c.i18n diffutils-3.10/src/diff.c
|
|||||||
/* If comparing directories, compare their common subdirectories
|
/* If comparing directories, compare their common subdirectories
|
||||||
recursively. */
|
recursively. */
|
||||||
static bool recursive;
|
static bool recursive;
|
||||||
@@ -310,6 +312,14 @@ main (int argc, char **argv)
|
@@ -298,6 +300,13 @@ main (int argc, char **argv)
|
||||||
|
excluded = new_exclude ();
|
||||||
presume_output_tty = false;
|
presume_output_tty = false;
|
||||||
xstdopen ();
|
|
||||||
|
|
||||||
+#ifdef HANDLE_MULTIBYTE
|
+#ifdef HANDLE_MULTIBYTE
|
||||||
+ if (MB_CUR_MAX > 1)
|
+ if (MB_CUR_MAX > 1)
|
||||||
@ -20,17 +20,16 @@ diff -up diffutils-3.10/src/diff.c.i18n diffutils-3.10/src/diff.c
|
|||||||
+ else
|
+ else
|
||||||
+#endif
|
+#endif
|
||||||
+ lines_differ = lines_differ_singlebyte;
|
+ lines_differ = lines_differ_singlebyte;
|
||||||
+
|
|
||||||
+
|
+
|
||||||
/* Decode the options. */
|
/* Decode the options. */
|
||||||
|
|
||||||
while ((c = getopt_long (argc, argv, shortopts, longopts, nullptr)) != -1)
|
while ((c = getopt_long (argc, argv, shortopts, longopts, NULL)) != -1)
|
||||||
diff -up diffutils-3.10/src/diff.h.i18n diffutils-3.10/src/diff.h
|
diff -up diffutils-3.6/src/diff.h.i18n diffutils-3.6/src/diff.h
|
||||||
--- diffutils-3.10/src/diff.h.i18n 2023-05-20 11:37:55.000000000 +0200
|
--- diffutils-3.6/src/diff.h.i18n 2017-01-01 11:22:36.000000000 +0000
|
||||||
+++ diffutils-3.10/src/diff.h 2023-06-29 13:25:49.451271873 +0200
|
+++ diffutils-3.6/src/diff.h 2017-05-22 10:51:09.050371844 +0100
|
||||||
@@ -33,6 +33,17 @@ _GL_INLINE_HEADER_BEGIN
|
@@ -23,6 +23,17 @@
|
||||||
# define XTERN extern
|
#include <stdio.h>
|
||||||
#endif
|
#include <unlocked-io.h>
|
||||||
|
|
||||||
+/* For platforms which support the ISO C ammendment 1 functionality we
|
+/* For platforms which support the ISO C ammendment 1 functionality we
|
||||||
+ support user-defined character classes. */
|
+ support user-defined character classes. */
|
||||||
@ -39,29 +38,29 @@ diff -up diffutils-3.10/src/diff.h.i18n diffutils-3.10/src/diff.h
|
|||||||
+# include <wchar.h>
|
+# include <wchar.h>
|
||||||
+# include <wctype.h>
|
+# include <wctype.h>
|
||||||
+# if defined (HAVE_MBRTOWC)
|
+# if defined (HAVE_MBRTOWC)
|
||||||
+# define HANDLE_MULTIBYTE 1
|
+# define HANDLE_MULTIBYTE 1
|
||||||
+# endif
|
+# endif
|
||||||
+#endif
|
+#endif
|
||||||
+
|
+
|
||||||
/* What kind of changes a hunk contains. */
|
/* What kind of changes a hunk contains. */
|
||||||
enum changes
|
enum changes
|
||||||
{
|
{
|
||||||
@@ -392,7 +403,11 @@ extern void print_sdiff_script (struct c
|
@@ -381,7 +392,11 @@ extern void print_sdiff_script (struct c
|
||||||
/* util.c */
|
|
||||||
extern char const change_letter[4];
|
extern char const change_letter[4];
|
||||||
extern char const pr_program[];
|
extern char const pr_program[];
|
||||||
-extern bool lines_differ (char const *, char const *) ATTRIBUTE_PURE;
|
extern char *concat (char const *, char const *, char const *);
|
||||||
+extern bool (*lines_differ) (char const *, size_t, char const *, size_t);
|
-extern bool lines_differ (char const *, char const *) _GL_ATTRIBUTE_PURE;
|
||||||
+extern bool lines_differ_singlebyte (char const *, size_t, char const *, size_t) 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;
|
||||||
+#ifdef HANDLE_MULTIBYTE
|
+#ifdef HANDLE_MULTIBYTE
|
||||||
+extern bool lines_differ_multibyte (char const *, size_t, char const *, size_t) ATTRIBUTE_PURE;
|
+extern bool lines_differ_multibyte (char const *, size_t, char const *, size_t) _GL_ATTRIBUTE_PURE;
|
||||||
+#endif
|
+#endif
|
||||||
extern lin translate_line_number (struct file_data const *, lin);
|
extern lin translate_line_number (struct file_data const *, lin);
|
||||||
extern struct change *find_change (struct change *);
|
extern struct change *find_change (struct change *);
|
||||||
extern struct change *find_reverse_change (struct change *);
|
extern struct change *find_reverse_change (struct change *);
|
||||||
diff -up diffutils-3.10/src/io.c.i18n diffutils-3.10/src/io.c
|
diff -up diffutils-3.6/src/io.c.i18n diffutils-3.6/src/io.c
|
||||||
--- diffutils-3.10/src/io.c.i18n 2023-05-20 11:17:26.000000000 +0200
|
--- diffutils-3.6/src/io.c.i18n 2017-01-01 11:22:36.000000000 +0000
|
||||||
+++ diffutils-3.10/src/io.c 2023-06-29 13:20:52.457820950 +0200
|
+++ diffutils-3.6/src/io.c 2017-05-22 10:51:09.050371844 +0100
|
||||||
@@ -23,6 +23,7 @@
|
@@ -23,6 +23,7 @@
|
||||||
#include <cmpbuf.h>
|
#include <cmpbuf.h>
|
||||||
#include <file-type.h>
|
#include <file-type.h>
|
||||||
@ -70,7 +69,7 @@ diff -up diffutils-3.10/src/io.c.i18n diffutils-3.10/src/io.c
|
|||||||
|
|
||||||
/* Rotate an unsigned value to the left. */
|
/* Rotate an unsigned value to the left. */
|
||||||
#define ROL(v, n) ((v) << (n) | (v) >> (sizeof (v) * CHAR_BIT - (n)))
|
#define ROL(v, n) ((v) << (n) | (v) >> (sizeof (v) * CHAR_BIT - (n)))
|
||||||
@@ -223,6 +224,28 @@ slurp (struct file_data *current)
|
@@ -215,6 +216,28 @@ slurp (struct file_data *current)
|
||||||
|
|
||||||
/* Split the file into lines, simultaneously computing the equivalence
|
/* Split the file into lines, simultaneously computing the equivalence
|
||||||
class for each line. */
|
class for each line. */
|
||||||
@ -99,7 +98,7 @@ diff -up diffutils-3.10/src/io.c.i18n diffutils-3.10/src/io.c
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
find_and_hash_each_line (struct file_data *current)
|
find_and_hash_each_line (struct file_data *current)
|
||||||
@@ -249,12 +272,300 @@ find_and_hash_each_line (struct file_dat
|
@@ -241,12 +264,300 @@ find_and_hash_each_line (struct file_dat
|
||||||
bool same_length_diff_contents_compare_anyway =
|
bool same_length_diff_contents_compare_anyway =
|
||||||
diff_length_compare_anyway | ig_case;
|
diff_length_compare_anyway | ig_case;
|
||||||
|
|
||||||
@ -399,20 +398,20 @@ diff -up diffutils-3.10/src/io.c.i18n diffutils-3.10/src/io.c
|
|||||||
+
|
+
|
||||||
/* Hash this line until we find a newline. */
|
/* Hash this line until we find a newline. */
|
||||||
switch (ig_white_space)
|
switch (ig_white_space)
|
||||||
{
|
{
|
||||||
@@ -405,7 +716,7 @@ find_and_hash_each_line (struct file_dat
|
@@ -397,7 +708,7 @@ find_and_hash_each_line (struct file_dat
|
||||||
else if (!diff_length_compare_anyway)
|
else if (!diff_length_compare_anyway)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
- if (! lines_differ (eqline, ip))
|
- if (! lines_differ (eqline, ip))
|
||||||
+ if (! lines_differ (eqline, eqs[i].length + 1, ip, length + 1))
|
+ if (! lines_differ (eqline, eqs[i].length + 1, ip, length + 1))
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
diff -up diffutils-3.10/src/util.c.i18n diffutils-3.10/src/util.c
|
diff -up diffutils-3.6/src/util.c.i18n diffutils-3.6/src/util.c
|
||||||
--- diffutils-3.10/src/util.c.i18n 2023-02-19 19:04:39.000000000 +0100
|
--- diffutils-3.6/src/util.c.i18n 2017-05-18 18:39:59.000000000 +0100
|
||||||
+++ diffutils-3.10/src/util.c 2023-06-29 13:20:52.457820950 +0200
|
+++ diffutils-3.6/src/util.c 2017-05-22 10:51:09.050371844 +0100
|
||||||
@@ -1085,7 +1085,8 @@ finish_output (void)
|
@@ -985,7 +985,8 @@ finish_output (void)
|
||||||
Return nonzero if the lines differ. */
|
Return nonzero if the lines differ. */
|
||||||
|
|
||||||
bool
|
bool
|
||||||
@ -422,7 +421,7 @@ diff -up diffutils-3.10/src/util.c.i18n diffutils-3.10/src/util.c
|
|||||||
{
|
{
|
||||||
register char const *t1 = s1;
|
register char const *t1 = s1;
|
||||||
register char const *t2 = s2;
|
register char const *t2 = s2;
|
||||||
@@ -1241,6 +1242,354 @@ lines_differ (char const *s1, char const
|
@@ -1141,6 +1142,354 @@ lines_differ (char const *s1, char const
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
@ -1,19 +1,20 @@
|
|||||||
Summary: GNU collection of diff utilities
|
Summary: A GNU collection of diff utilities
|
||||||
Name: diffutils
|
Name: diffutils
|
||||||
Version: 3.10
|
Version: 3.6
|
||||||
Release: 8%{?dist}
|
Release: 6%{?dist}
|
||||||
URL: https://www.gnu.org/software/diffutils/diffutils.html
|
Group: Applications/Text
|
||||||
Source: https://ftp.gnu.org/gnu/diffutils/diffutils-%{version}.tar.xz
|
URL: http://www.gnu.org/software/diffutils/diffutils.html
|
||||||
# Multibyte
|
Source: ftp://ftp.gnu.org/gnu/diffutils/diffutils-%{version}.tar.xz
|
||||||
Patch0: diffutils-i18n.patch
|
Patch1: diffutils-cmp-s-empty.patch
|
||||||
Patch1: diffutils-3.10-cmp-s-empty.patch
|
Patch2: diffutils-i18n.patch
|
||||||
Patch2: diffutils-3.10-coverity.patch
|
Patch3: diffutils-3.6-covscan.patch
|
||||||
License: GPL-3.0-or-later
|
Patch4: diffutils-3.6-shows_incorrect_data.patch
|
||||||
|
License: GPLv3+
|
||||||
|
Requires(post): info
|
||||||
|
Requires(preun): info
|
||||||
Provides: bundled(gnulib)
|
Provides: bundled(gnulib)
|
||||||
BuildRequires: gcc
|
|
||||||
BuildRequires: help2man
|
BuildRequires: help2man
|
||||||
BuildRequires: autoconf, automake, texinfo
|
BuildRequires: autoconf, automake, texinfo
|
||||||
BuildRequires: make
|
|
||||||
|
|
||||||
%description
|
%description
|
||||||
Diffutils includes four utilities: diff, cmp, diff3 and sdiff. Diff
|
Diffutils includes four utilities: diff, cmp, diff3 and sdiff. Diff
|
||||||
@ -29,18 +30,29 @@ to merge two files interactively.
|
|||||||
Install diffutils if you need to compare text files.
|
Install diffutils if you need to compare text files.
|
||||||
|
|
||||||
%prep
|
%prep
|
||||||
%autosetup -p1
|
%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
|
||||||
|
|
||||||
# Run autoreconf for aarch64 support (bug #925256).
|
# Run autoreconf for aarch64 support (bug #925256).
|
||||||
autoreconf
|
autoreconf
|
||||||
|
|
||||||
%build
|
%build
|
||||||
export CFLAGS="$RPM_OPT_FLAGS -DGCC_LINT"
|
export CFLAGS="$RPM_OPT_FLAGS -Dlint"
|
||||||
%configure
|
%configure
|
||||||
make PR_PROGRAM=%{_bindir}/pr V=1
|
make PR_PROGRAM=%{_bindir}/pr
|
||||||
|
|
||||||
%install
|
%install
|
||||||
%make_install
|
rm -rf $RPM_BUILD_ROOT
|
||||||
|
make DESTDIR=$RPM_BUILD_ROOT install
|
||||||
|
|
||||||
rm -f $RPM_BUILD_ROOT%{_infodir}/dir
|
rm -f $RPM_BUILD_ROOT%{_infodir}/dir
|
||||||
%find_lang %{name}
|
%find_lang %{name}
|
||||||
@ -50,94 +62,32 @@ rm -f $RPM_BUILD_ROOT%{_infodir}/dir
|
|||||||
>gnulib-tests/test-update-copyright.sh
|
>gnulib-tests/test-update-copyright.sh
|
||||||
make check
|
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
|
%files -f %{name}.lang
|
||||||
|
%defattr(-,root,root)
|
||||||
%doc NEWS README
|
%doc NEWS README
|
||||||
|
%{!?_licensedir:%global license %%doc}
|
||||||
%license COPYING
|
%license COPYING
|
||||||
%{_bindir}/*
|
%{_bindir}/*
|
||||||
%{_mandir}/*/*
|
%{_mandir}/*/*
|
||||||
%{_infodir}/diffutils.info*
|
%{_infodir}/diffutils.info*gz
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
* Tue Oct 29 2024 Troy Dawson <tdawson@redhat.com> - 3.10-8
|
* Tue Nov 19 2019 Than Ngo <than@redhat.com> - 3.6-6
|
||||||
- Bump release for October 2024 mass rebuild:
|
- Resolves: #1732960 - cmp -b shows incorrect data
|
||||||
Resolves: RHEL-64018
|
|
||||||
|
|
||||||
* Tue Jul 30 2024 Than Ngo <than@redhat.com> - 3.10-7
|
* Mon Aug 13 2018 Than Ngo <than@redhat.com> - 3.6-5
|
||||||
- Resolves: RHEL-50780, regression, compare file sizes only if both non-zero
|
- Resolves: #1606949, covscan issues
|
||||||
|
|
||||||
* Mon Jun 24 2024 Troy Dawson <tdawson@redhat.com> - 3.10-6
|
|
||||||
- Bump release for June 2024 mass rebuild
|
|
||||||
|
|
||||||
* Wed Jan 24 2024 Fedora Release Engineering <releng@fedoraproject.org> - 3.10-5
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
|
|
||||||
|
|
||||||
* Fri Jan 19 2024 Fedora Release Engineering <releng@fedoraproject.org> - 3.10-4
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
|
|
||||||
|
|
||||||
* Wed Jul 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 3.10-3
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
|
|
||||||
|
|
||||||
* Wed Jul 05 2023 Than Ngo <than@redhat.com> - 3.10-2
|
|
||||||
- Fix output of "diff -l -y" for non-ASCII input files
|
|
||||||
|
|
||||||
* Thu Jun 29 2023 Than Ngo <than@redhat.com> - 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 <than@redhat.com> - 3.9-4
|
|
||||||
- Fix deprecated patch rpm marco
|
|
||||||
|
|
||||||
* Tue Feb 21 2023 Than Ngo <than@redhat.com> - 3.9-3
|
|
||||||
- migrated to SPDX license
|
|
||||||
|
|
||||||
* Thu Jan 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 3.9-2
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
|
|
||||||
|
|
||||||
* Mon Jan 16 2023 Tim Waugh <twaugh@redhat.com> - 3.9-1
|
|
||||||
- 3.9 (bug #2161117).
|
|
||||||
|
|
||||||
* Thu Jul 21 2022 Fedora Release Engineering <releng@fedoraproject.org> - 3.8-3
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
|
|
||||||
|
|
||||||
* Thu Jan 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 3.8-2
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
|
|
||||||
|
|
||||||
* Mon Aug 2 2021 Tim Waugh <twaugh@redhat.com> - 3.8-1
|
|
||||||
- 3.8.
|
|
||||||
|
|
||||||
* Wed Jul 21 2021 Fedora Release Engineering <releng@fedoraproject.org> - 3.7-10
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
|
|
||||||
|
|
||||||
* Mon Apr 12 2021 Tim Waugh <twaugh@redhat.com> - 3.7-9
|
|
||||||
- Handle SIGSTKSZ no longer being a constant (bug #1943016).
|
|
||||||
|
|
||||||
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 3.7-8
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
|
|
||||||
|
|
||||||
* Thu Oct 8 2020 Tim Waugh <twaugh@redhat.com> - 3.7-7
|
|
||||||
- Fix from gnulib upstream, commit 175e0bc (bug #1863423).
|
|
||||||
|
|
||||||
* Sat Aug 01 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.7-6
|
|
||||||
- Second attempt - Rebuilt for
|
|
||||||
https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
|
|
||||||
|
|
||||||
* Mon Jul 27 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.7-5
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
|
|
||||||
|
|
||||||
* Tue Jan 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.7-4
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
|
|
||||||
|
|
||||||
* Wed Jul 24 2019 Fedora Release Engineering <releng@fedoraproject.org> - 3.7-3
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
|
|
||||||
|
|
||||||
* Thu Jan 31 2019 Fedora Release Engineering <releng@fedoraproject.org> - 3.7-2
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
|
|
||||||
|
|
||||||
* Mon Jan 07 2019 Than Ngo <than@redhat.com> - 3.7-1
|
|
||||||
- 3.7
|
|
||||||
|
|
||||||
* Thu Jul 12 2018 Fedora Release Engineering <releng@fedoraproject.org> - 3.6-5
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
|
|
||||||
|
|
||||||
* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 3.6-4
|
* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 3.6-4
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
|
@ -1,31 +0,0 @@
|
|||||||
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)
|
|
@ -1,184 +0,0 @@
|
|||||||
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);
|
|
Loading…
Reference in New Issue
Block a user