diff --git a/.gitignore b/.gitignore index 3ab9e16..f6ab985 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ diffutils-2.8.1.tar.gz +/diffutils-3.0.tar.xz diff --git a/diffutils-2.8.1-badc.patch b/diffutils-2.8.1-badc.patch deleted file mode 100644 index aa1ead6..0000000 --- a/diffutils-2.8.1-badc.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- diffutils-2.8.1/src/analyze.c.badc 2004-01-08 10:05:59.094598972 +0000 -+++ diffutils-2.8.1/src/analyze.c 2004-01-08 10:06:22.294841900 +0000 -@@ -983,7 +983,7 @@ - changes = briefly_report (changes, cmp->file); - else - { -- if (changes | !no_diff_means_no_output) -+ if (changes || !no_diff_means_no_output) - { - /* Record info for starting up output, - to be used if and when we have some output to print. */ diff --git a/diffutils-2.8.4-i18n.patch b/diffutils-2.8.4-i18n.patch deleted file mode 100644 index d601e6f..0000000 --- a/diffutils-2.8.4-i18n.patch +++ /dev/null @@ -1,806 +0,0 @@ ---- diffutils-2.8.1/src/diff.c.i18n 2002-03-24 07:35:28.000000000 +0000 -+++ diffutils-2.8.1/src/diff.c 2007-08-14 10:39:40.000000000 +0100 -@@ -273,6 +273,13 @@ - re_set_syntax (RE_SYNTAX_GREP | RE_NO_POSIX_BACKTRACKING); - excluded = new_exclude (); - -+#ifdef HANDLE_MULTIBYTE -+ if (MB_CUR_MAX > 1) -+ lines_differ = lines_differ_multibyte; -+ else -+#endif -+ lines_differ = lines_differ_singlebyte; -+ - /* Decode the options. */ - - while ((c = getopt_long (argc, argv, shortopts, longopts, 0)) != -1) ---- diffutils-2.8.1/src/diff.h.i18n 2002-03-11 21:24:42.000000000 +0000 -+++ diffutils-2.8.1/src/diff.h 2007-08-14 10:41:21.000000000 +0100 -@@ -25,6 +25,19 @@ - - #define TAB_WIDTH 8 - -+/* For platform which support the ISO C amendement 1 functionality we -+ support user defined character classes. */ -+#if defined HAVE_WCTYPE_H && defined HAVE_WCHAR_H -+/* Solaris 2.5 has a bug: must be included before . */ -+# include -+# include -+# if defined (HAVE_MBRTOWC) -+# define HANDLE_MULTIBYTE 1 -+# endif -+#endif -+ -+#define TAB_WIDTH 8 -+ - /* What kind of changes a hunk contains. */ - enum changes - { -@@ -349,7 +362,13 @@ - extern char const pr_program[]; - char *concat (char const *, char const *, char const *); - char *dir_file_pathname (char const *, char const *); --bool lines_differ (char const *, char const *); -+ -+bool (*lines_differ) (char const *, size_t, char const *, size_t); -+bool lines_differ_singlebyte (char const *, size_t, char const *, size_t); -+#ifdef HANDLE_MULTIBYTE -+bool lines_differ_multibyte (char const *, size_t, char const *, size_t); -+#endif -+ - lin translate_line_number (struct file_data const *, lin); - struct change *find_change (struct change *); - struct change *find_reverse_change (struct change *); ---- diffutils-2.8.1/src/io.c.i18n 2002-03-25 04:58:36.000000000 +0000 -+++ diffutils-2.8.1/src/io.c 2007-08-14 10:40:05.000000000 +0100 -@@ -25,6 +25,7 @@ - #include - #include - #include -+#include - - /* Rotate an unsigned value to the left. */ - #define ROL(v, n) ((v) << (n) | (v) >> (sizeof (v) * CHAR_BIT - (n))) -@@ -212,6 +213,28 @@ - - /* Split the file into lines, simultaneously computing the equivalence - class for each line. */ -+#ifdef HANDLE_MULTIBYTE -+# define MBC2WC(P, END, MBLENGTH, WC, STATE, CONVFAIL) \ -+do \ -+{ \ -+ mbstate_t state_bak = STATE; \ -+ \ -+ CONVFAIL = 0; \ -+ MBLENGTH = mbrtowc (&WC, P, END - (char const *)P, &STATE); \ -+ \ -+ switch (MBLENGTH) \ -+ { \ -+ case (size_t)-2: \ -+ case (size_t)-1: \ -+ STATE = state_bak; \ -+ ++CONVFAIL; \ -+ /* Fall through. */ \ -+ case 0: \ -+ MBLENGTH = 1; \ -+ } \ -+} \ -+while (0) -+#endif - - static void - find_and_hash_each_line (struct file_data *current) -@@ -238,12 +261,280 @@ - bool same_length_diff_contents_compare_anyway = - diff_length_compare_anyway | ignore_case; - -+#ifdef HANDLE_MULTIBYTE -+ wchar_t wc; -+ size_t mblength; -+ mbstate_t state; -+ int convfail; -+ -+ memset (&state, '\0', sizeof (mbstate_t)); -+#endif -+ - while ((char const *) p < suffix_begin) - { - char const *ip = (char const *) p; - - h = 0; -+#ifdef HANDLE_MULTIBYTE -+ if (MB_CUR_MAX > 1) -+ { -+ wchar_t lo_wc; -+ char mbc[MB_LEN_MAX]; -+ mbstate_t state_wc; -+ -+ /* Hash this line until we find a newline. */ -+ switch (ignore_white_space) -+ { -+ case IGNORE_ALL_SPACE: -+ while (1) -+ { -+ if (*p == '\n') -+ { -+ ++p; -+ break; -+ } -+ -+ MBC2WC (p, suffix_begin, mblength, wc, state, convfail); -+ -+ if (convfail) -+ mbc[0] = *p++; -+ else if (!iswspace (wc)) -+ { -+ bool flag = 0; -+ -+ if (ignore_case) -+ { -+ lo_wc = towlower (wc); -+ if (lo_wc != wc) -+ { -+ flag = 1; -+ -+ p += mblength; -+ memset (&state_wc, '\0', sizeof(mbstate_t)); -+ mblength = wcrtomb (mbc, lo_wc, &state_wc); -+ -+ assert (mblength != (size_t)-1 && -+ mblength != (size_t)-2); -+ -+ mblength = (mblength < 1) ? 1 : mblength; -+ } -+ } -+ -+ if (!flag) -+ { -+ for (i = 0; i < mblength; i++) -+ mbc[i] = *p++; -+ } -+ } -+ else -+ { -+ p += mblength; -+ continue; -+ } -+ -+ for (i = 0; i < mblength; i++) -+ h = HASH (h, mbc[i]); -+ } -+ break; -+ -+ case IGNORE_SPACE_CHANGE: -+ while (1) -+ { -+ if (*p == '\n') -+ { -+ ++p; -+ break; -+ } - -+ MBC2WC (p, suffix_begin, mblength, wc, state, convfail); -+ -+ if (!convfail && iswspace (wc)) -+ { -+ while (1) -+ { -+ if (*p == '\n') -+ { -+ ++p; -+ goto hashing_done; -+ } -+ -+ p += mblength; -+ MBC2WC (p, suffix_begin, mblength, wc, state, convfail); -+ if (convfail || (!convfail && !iswspace (wc))) -+ break; -+ } -+ h = HASH (h, ' '); -+ } -+ -+ /* WC is now the first non-space. */ -+ if (convfail) -+ mbc[0] = *p++; -+ else -+ { -+ bool flag = 0; -+ -+ if (ignore_case) -+ { -+ lo_wc = towlower (wc); -+ if (lo_wc != wc) -+ { -+ flag = 1; -+ -+ p += mblength; -+ memset (&state_wc, '\0', sizeof(mbstate_t)); -+ mblength = wcrtomb (mbc, lo_wc, &state_wc); -+ -+ assert (mblength != (size_t)-1 && -+ mblength != (size_t)-2); -+ -+ mblength = (mblength < 1) ? 1 : mblength; -+ } -+ } -+ -+ if (!flag) -+ { -+ for (i = 0; i < mblength; i++) -+ mbc[i] = *p++; -+ } -+ } -+ -+ for (i = 0; i < mblength; i++) -+ h = HASH (h, mbc[i]); -+ } -+ break; -+ -+ case IGNORE_TAB_EXPANSION: -+ { -+ size_t column = 0; -+ -+ while (1) -+ { -+ if (*p == '\n') -+ { -+ ++p; -+ break; -+ } -+ -+ MBC2WC (p, suffix_begin, mblength, wc, state, convfail); -+ -+ if (convfail) -+ { -+ h = HASH (h, *p++); -+ ++column; -+ } -+ else -+ { -+ bool flag; -+ -+ switch (wc) -+ { -+ case L'\b': -+ column -= 0 < column; -+ h = HASH (h, '\b'); -+ ++p; -+ break; -+ -+ case L'\t': -+ { -+ int repetitions; -+ -+ repetitions = TAB_WIDTH - column % TAB_WIDTH; -+ column += repetitions; -+ do -+ h = HASH (h, ' '); -+ while (--repetitions != 0); -+ ++p; -+ } -+ break; -+ -+ case L'\r': -+ column = 0; -+ h = HASH (h, '\r'); -+ ++p; -+ break; -+ -+ default: -+ flag = 0; -+ column += wcwidth (wc); -+ if (ignore_case) -+ { -+ lo_wc = towlower (wc); -+ if (lo_wc != wc) -+ { -+ flag = 1; -+ p += mblength; -+ memset (&state_wc, '\0', sizeof(mbstate_t)); -+ mblength = wcrtomb (mbc, lo_wc, &state_wc); -+ -+ assert (mblength != (size_t)-1 && -+ mblength != (size_t)-2); -+ -+ mblength = (mblength < 1) ? 1 : mblength; -+ } -+ } -+ -+ if (!flag) -+ { -+ for (i = 0; i < mblength; i++) -+ mbc[i] = *p++; -+ } -+ -+ for (i = 0; i < mblength; i++) -+ h = HASH (h, mbc[i]); -+ } -+ } -+ } -+ } -+ break; -+ -+ default: -+ while (1) -+ { -+ if (*p == '\n') -+ { -+ ++p; -+ break; -+ } -+ -+ MBC2WC (p, suffix_begin, mblength, wc, state, convfail); -+ -+ if (convfail) -+ mbc[0] = *p++; -+ else -+ { -+ int flag = 0; -+ -+ if (ignore_case) -+ { -+ lo_wc = towlower (wc); -+ if (lo_wc != wc) -+ { -+ flag = 1; -+ p += mblength; -+ memset (&state_wc, '\0', sizeof(mbstate_t)); -+ mblength = wcrtomb (mbc, lo_wc, &state_wc); -+ -+ assert (mblength != (size_t)-1 && -+ mblength != (size_t)-2); -+ -+ mblength = (mblength < 1) ? 1 : mblength; -+ } -+ } -+ -+ if (!flag) -+ { -+ for (i = 0; i < mblength; i++) -+ mbc[i] = *p++; -+ } -+ } -+ -+ for (i = 0; i < mblength; i++) -+ h = HASH (h, mbc[i]); -+ } -+ } -+ } -+ else -+#endif - /* Hash this line until we find a newline. */ - if (ignore_case) - switch (ignore_white_space) -@@ -438,7 +729,7 @@ - else if (!diff_length_compare_anyway) - continue; - -- if (! lines_differ (eqline, ip)) -+ if (! lines_differ (eqline, eqs[i].length + 1, ip, length + 1)) - break; - } - ---- diffutils-2.8.1/src/side.c.i18n 2002-02-07 18:17:04.000000000 +0000 -+++ diffutils-2.8.1/src/side.c 2007-08-14 10:39:40.000000000 +0100 -@@ -74,11 +74,72 @@ - register unsigned int out_position = 0; - register char const *text_pointer = line[0]; - register char const *text_limit = line[1]; -+#if defined HAVE_WCHAR_H && defined HAVE_WCTYPE_H -+ unsigned char mbc[MB_LEN_MAX]; -+ wchar_t wc; -+ mbstate_t state, state_bak; -+ size_t mbc_pos, mblength; -+ int mbc_loading_flag = 0; -+ int wc_width; -+ -+ memset (&state, '\0', sizeof (mbstate_t)); -+#endif - - while (text_pointer < text_limit) - { - register unsigned char c = *text_pointer++; - -+#if defined HAVE_WCHAR_H && defined HAVE_WCTYPE_H -+ if (MB_CUR_MAX > 1 && mbc_loading_flag) -+ { -+ mbc_loading_flag = 0; -+ state_bak = state; -+ mbc[mbc_pos++] = c; -+ -+process_mbc: -+ mblength = mbrtowc (&wc, mbc, mbc_pos, &state); -+ -+ switch (mblength) -+ { -+ case (size_t)-2: /* Incomplete multibyte character. */ -+ mbc_loading_flag = 1; -+ state = state_bak; -+ break; -+ -+ case (size_t)-1: /* Invalid as a multibyte character. */ -+ if (in_position++ < out_bound) -+ { -+ out_position = in_position; -+ putc (mbc[0], out); -+ } -+ memmove (mbc, mbc + 1, --mbc_pos); -+ if (mbc_pos > 0) -+ { -+ mbc[mbc_pos] = '\0'; -+ goto process_mbc; -+ } -+ break; -+ -+ default: -+ wc_width = wcwidth (wc); -+ if (wc_width < 1) /* Unprintable multibyte character. */ -+ { -+ if (in_position <= out_bound) -+ fprintf (out, "%lc", (wint_t)wc); -+ } -+ else /* Printable multibyte character. */ -+ { -+ in_position += wc_width; -+ if (in_position <= out_bound) -+ { -+ out_position = in_position; -+ fprintf (out, "%lc", (wint_t)wc); -+ } -+ } -+ } -+ continue; -+ } -+#endif - switch (c) - { - case '\t': -@@ -136,8 +197,39 @@ - break; - - default: -- if (! ISPRINT (c)) -- goto control_char; -+#if defined HAVE_WCHAR_H && defined HAVE_WCTYPE_H -+ if (MB_CUR_MAX > 1) -+ { -+ memset (mbc, '\0', MB_LEN_MAX); -+ mbc_pos = 0; -+ mbc[mbc_pos++] = c; -+ state_bak = state; -+ -+ mblength = mbrtowc (&wc, mbc, mbc_pos, &state); -+ -+ /* The value of mblength is always less than 2 here. */ -+ switch (mblength) -+ { -+ case (size_t)-2: /* Incomplete multibyte character. */ -+ state = state_bak; -+ mbc_loading_flag = 1; -+ continue; -+ -+ case (size_t)-1: /* Invalid as a multibyte character. */ -+ state = state_bak; -+ break; -+ -+ default: -+ if (! iswprint (wc)) -+ goto control_char; -+ } -+ } -+ else -+#endif -+ { -+ if (! ISPRINT (c)) -+ goto control_char; -+ } - /* falls through */ - case ' ': - if (in_position++ < out_bound) ---- diffutils-2.8.1/src/util.c.i18n 2002-02-28 04:23:10.000000000 +0000 -+++ diffutils-2.8.1/src/util.c 2007-08-14 10:42:19.000000000 +0100 -@@ -312,7 +312,8 @@ - Return nonzero if the lines differ. */ - - bool --lines_differ (char const *s1, char const *s2) -+lines_differ_singlebyte (char const *s1, size_t s1len, -+ char const *s2, size_t s2len) - { - register unsigned char const *t1 = (unsigned char const *) s1; - register unsigned char const *t2 = (unsigned char const *) s2; -@@ -441,6 +442,294 @@ - - return 1; - } -+ -+#ifdef HANDLE_MULTIBYTE -+# define MBC2WC(T, END, MBLENGTH, WC, STATE, CONVFAIL) \ -+do \ -+{ \ -+ mbstate_t bak = STATE; \ -+ \ -+ CONVFAIL = 0; \ -+ MBLENGTH = mbrtowc (&WC, T, END - T, &STATE); \ -+ \ -+ switch (MBLENGTH) \ -+ { \ -+ case (size_t)-2: \ -+ case (size_t)-1: \ -+ STATE = bak; \ -+ ++CONVFAIL; \ -+ /* Fall through. */ \ -+ case 0: \ -+ MBLENGTH = 1; \ -+ } \ -+} \ -+while (0) -+ -+bool -+lines_differ_multibyte (char const *s1, size_t s1len, -+ char const *s2, size_t s2len) -+{ -+ unsigned char const *end1, *end2; -+ unsigned char c1, c2; -+ wchar_t wc1, wc2, wc1_bak, wc2_bak; -+ size_t mblen1, mblen2; -+ mbstate_t state1, state2, state1_bak, state2_bak; -+ int convfail1, convfail2, convfail1_bak, convfail2_bak; -+ -+ unsigned char const *t1 = (unsigned char const *) s1; -+ unsigned char const *t2 = (unsigned char const *) s2; -+ unsigned char const *t1_bak, *t2_bak; -+ size_t column = 0; -+ -+ if (ignore_white_space == IGNORE_NO_WHITE_SPACE && !ignore_case) -+ { -+ while (*t1 != '\n') -+ if (*t1++ != * t2++) -+ return 1; -+ return 0; -+ } -+ -+ memset (&state1, '\0', sizeof (mbstate_t)); -+ memset (&state2, '\0', sizeof (mbstate_t)); -+ -+ end1 = s1 + s1len; -+ end2 = s2 + s2len; -+ -+ while (1) -+ { -+ c1 = *t1; -+ c2 = *t2; -+ MBC2WC (t1, end1, mblen1, wc1, state1, convfail1); -+ MBC2WC (t2, end2, mblen2, wc2, state2, convfail2); -+ -+ /* Test for exact char equality first, since it's a common case. */ -+ if (convfail1 ^ convfail2) -+ break; -+ else if (convfail1 && convfail2 && c1 != c2) -+ break; -+ else if (!convfail1 && !convfail2 && wc1 != wc2) -+ { -+ switch (ignore_white_space) -+ { -+ case IGNORE_ALL_SPACE: -+ /* For -w, just skip past any white space. */ -+ while (1) -+ { -+ if (convfail1) -+ break; -+ else if (wc1 == L'\n' || !iswspace (wc1)) -+ break; -+ -+ t1 += mblen1; -+ c1 = *t1; -+ MBC2WC (t1, end1, mblen1, wc1, state1, convfail1); -+ } -+ -+ while (1) -+ { -+ if (convfail2) -+ break; -+ else if (wc2 == L'\n' || !iswspace (wc2)) -+ break; -+ -+ t2 += mblen2; -+ c2 = *t2; -+ MBC2WC (t2, end2, mblen2, wc2, state2, convfail2); -+ } -+ t1 += mblen1; -+ t2 += mblen2; -+ break; -+ -+ case IGNORE_SPACE_CHANGE: -+ /* For -b, advance past any sequence of white space in -+ line 1 and consider it just one space, or nothing at -+ all if it is at the end of the line. */ -+ if (wc1 != L'\n' && iswspace (wc1)) -+ { -+ size_t mblen_bak; -+ mbstate_t state_bak; -+ -+ do -+ { -+ t1 += mblen1; -+ mblen_bak = mblen1; -+ state_bak = state1; -+ MBC2WC (t1, end1, mblen1, wc1, state1, convfail1); -+ } -+ while (!convfail1 && (wc1 != L'\n' && iswspace (wc1))); -+ -+ state1 = state_bak; -+ mblen1 = mblen_bak; -+ t1 -= mblen1; -+ convfail1 = 0; -+ wc1 = L' '; -+ } -+ -+ /* Likewise for line 2. */ -+ if (wc2 != L'\n' && iswspace (wc2)) -+ { -+ size_t mblen_bak; -+ mbstate_t state_bak; -+ -+ do -+ { -+ t2 += mblen2; -+ mblen_bak = mblen2; -+ state_bak = state2; -+ MBC2WC (t2, end2, mblen2, wc2, state2, convfail2); -+ } -+ while (!convfail2 && (wc2 != L'\n' && iswspace (wc2))); -+ -+ state2 = state_bak; -+ mblen2 = mblen_bak; -+ t2 -= mblen2; -+ convfail2 = 0; -+ wc2 = L' '; -+ } -+ -+ if (wc1 != wc2) -+ { -+ if (wc2 == L' ' && wc1 != L'\n' && -+ t1 > (unsigned char const *)s1 && -+ !convfail1_bak && iswspace (wc1_bak)) -+ { -+ t1 = t1_bak; -+ wc1 = wc1_bak; -+ state1 = state1_bak; -+ convfail1 = convfail1_bak; -+ continue; -+ } -+ if (wc1 == L' ' && wc2 != L'\n' -+ && t2 > (unsigned char const *)s2 -+ && !convfail2_bak && iswspace (wc2_bak)) -+ { -+ t2 = t2_bak; -+ wc2 = wc2_bak; -+ state2 = state2_bak; -+ convfail2 = convfail2_bak; -+ continue; -+ } -+ } -+ -+ t1_bak = t1; t2_bak = t2; -+ wc1_bak = wc1; wc2_bak = wc2; -+ state1_bak = state1; state2_bak = state2; -+ convfail1_bak = convfail1; convfail2_bak = convfail2; -+ -+ if (wc1 == L'\n') -+ wc1 = L' '; -+ else -+ t1 += mblen1; -+ -+ if (wc2 == L'\n') -+ wc2 = L' '; -+ else -+ t2 += mblen2; -+ -+ break; -+ -+ case IGNORE_TAB_EXPANSION: -+ if ((wc1 == L' ' && wc2 == L'\t') -+ || (wc1 == L'\t' && wc2 == L' ')) -+ { -+ size_t column2 = column; -+ -+ while (1) -+ { -+ if (convfail1) -+ { -+ ++t1; -+ break; -+ } -+ else if (wc1 == L' ') -+ column++; -+ else if (wc1 == L'\t') -+ column += TAB_WIDTH - column % TAB_WIDTH; -+ else -+ { -+ t1 += mblen1; -+ break; -+ } -+ -+ t1 += mblen1; -+ c1 = *t1; -+ MBC2WC (t1, end1, mblen1, wc1, state1, convfail1); -+ } -+ -+ while (1) -+ { -+ if (convfail2) -+ { -+ ++t2; -+ break; -+ } -+ else if (wc2 == L' ') -+ column2++; -+ else if (wc2 == L'\t') -+ column2 += TAB_WIDTH - column2 % TAB_WIDTH; -+ else -+ { -+ t2 += mblen2; -+ break; -+ } -+ -+ t2 += mblen2; -+ c2 = *t2; -+ MBC2WC (t2, end2, mblen2, wc2, state2, convfail2); -+ } -+ -+ if (column != column2) -+ return 1; -+ } -+ else -+ { -+ t1 += mblen1; -+ t2 += mblen2; -+ } -+ break; -+ -+ case IGNORE_NO_WHITE_SPACE: -+ t1 += mblen1; -+ t2 += mblen2; -+ break; -+ } -+ -+ /* Lowercase all letters if -i is specified. */ -+ if (ignore_case) -+ { -+ if (!convfail1) -+ wc1 = towlower (wc1); -+ if (!convfail2) -+ wc2 = towlower (wc2); -+ } -+ -+ if (convfail1 ^ convfail2) -+ break; -+ else if (convfail1 && convfail2 && c1 != c2) -+ break; -+ else if (!convfail1 && !convfail2 && wc1 != wc2) -+ break; -+ } -+ else -+ { -+ t1_bak = t1; t2_bak = t2; -+ wc1_bak = wc1; wc2_bak = wc2; -+ state1_bak = state1; state2_bak = state2; -+ convfail1_bak = convfail1; convfail2_bak = convfail2; -+ -+ t1 += mblen1; t2 += mblen2; -+ } -+ -+ if (!convfail1 && wc1 == L'\n') -+ return 0; -+ -+ column += convfail1 ? 1 : -+ (wc1 == L'\t') ? TAB_WIDTH - column % TAB_WIDTH : wcwidth (wc1); -+ } -+ -+ return 1; -+} -+#endif - - /* Find the consecutive changes at the start of the script START. - Return the last link before the first gap. */ diff --git a/diffutils-3.0.tar.xz.sig b/diffutils-3.0.tar.xz.sig new file mode 100644 index 0000000..6974050 --- /dev/null +++ b/diffutils-3.0.tar.xz.sig @@ -0,0 +1,17 @@ +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v2.0.14 (GNU/Linux) + +iQIcBAABCAAGBQJL3wDxAAoJENd//eG5q5oWlUAP/1aCzNiRZs5+7HF4wNh4mvUp +9slL1cYbhdpbfeXg2lNtNcVVRO6ZsZR4qlT4aoEeq59adSkntM2lQNiPPAyX48sV +GfOefOD8qHup15EcsYY55P5Ojv/ZfOiBiy41iWiJ5ROk0UlIXksXzHB7B4vVq3Ep +vzX+Q3oe9V4gcPvMtNr7RfJbHyRU3ZN+ElcuXH2FAnBmHv8xPJNw6Dzvg8CBfhHS +h0f+P2yxIHsqVWzQQpo03cZtaDy+//LI6I9a4QClhguGmLJng119rW+t4tlSSiOK +F8AWcHH5iaQkEMhEH29zdm7q7B/92j560LcvI4vCT5D0Rq+AT6yjAPjehNFwYSJr +4zPVz4TsIvGa8tDwyWGCLZaLOYfsaVlGs7a/tg6NUPkItniV+POvcEqmPMg/i+zG +4hcixDLegRWqIohMq7B4aW5gzcftLk1tt9R/rp8p+iELLXxtQdjwFbBXXnd7TfF1 +4ynVF6lzMiIUfRndFpLiyLPmCaXODHcsCACjySVbrxzTLcqPwWK5DkO7I8HQoRjY +OJx2ju7WCjSRIYxEknNroy24JcHGn8rS2BJ2WMYKh44PSMGDR4Ct6bKMUQu5Jzk/ +ICutk5PEnafpWRicD7naxw+up1jRkQ2fFfocr3jIGCFC/RVmlRruHGNgCYiJKdEy +doNSoc0P9KxZUIpldr0i +=Kax9 +-----END PGP SIGNATURE----- diff --git a/diffutils-sdiff-E.patch b/diffutils-sdiff-E.patch deleted file mode 100644 index 575adaa..0000000 --- a/diffutils-sdiff-E.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up diffutils-2.8.1/src/sdiff.c.sdiff-E diffutils-2.8.1/src/sdiff.c ---- diffutils-2.8.1/src/sdiff.c.sdiff-E 2009-02-13 17:00:38.000000000 +0000 -+++ diffutils-2.8.1/src/sdiff.c 2009-02-13 17:31:08.000000000 +0000 -@@ -464,7 +464,7 @@ main (int argc, char *argv[]) - diffarg (DEFAULT_DIFF_PROGRAM); - - /* parse command line args */ -- while ((opt = getopt_long (argc, argv, "abBdHiI:lo:stvw:W", longopts, 0)) -+ while ((opt = getopt_long (argc, argv, "abBdEHiI:lo:stvw:W", longopts, 0)) - != -1) - { - switch (opt) diff --git a/diffutils-sdiff.patch b/diffutils-sdiff.patch deleted file mode 100644 index ce862f1..0000000 --- a/diffutils-sdiff.patch +++ /dev/null @@ -1,12 +0,0 @@ ---- diffutils-2.8.1/src/sdiff.c.sdiff 2005-04-06 14:59:26.000000000 +0100 -+++ diffutils-2.8.1/src/sdiff.c 2005-04-06 15:02:36.000000000 +0100 -@@ -724,7 +724,8 @@ - if (! interact_ok) - exiterr (); - -- ck_editor_status (werrno, wstatus); -+ if (!WIFEXITED(wstatus)) -+ ck_editor_status (werrno, wstatus); - untrapsig (0); - checksigs (); - exit (WEXITSTATUS (wstatus)); diff --git a/diffutils.spec b/diffutils.spec index 58df5f8..cdb1d02 100644 --- a/diffutils.spec +++ b/diffutils.spec @@ -1,14 +1,10 @@ Summary: A GNU collection of diff utilities Name: diffutils -Version: 2.8.1 -Release: 30%{?dist} +Version: 3.0 +Release: 1%{?dist} Group: Applications/Text URL: http://www.gnu.org/software/diffutils/diffutils.html -Source: ftp://ftp.gnu.org/gnu/diffutils/diffutils-%{version}.tar.gz -Patch0: diffutils-2.8.4-i18n.patch -Patch1: diffutils-2.8.1-badc.patch -Patch2: diffutils-sdiff.patch -Patch3: diffutils-sdiff-E.patch +Source: ftp://ftp.gnu.org/gnu/diffutils/diffutils-%{version}.tar.xz Patch4: diffutils-cmp-s-empty.patch License: GPLv2+ Requires(post): /sbin/install-info @@ -31,18 +27,6 @@ Install diffutils if you need to compare text files. %prep %setup -q -# Multibyte support. -%patch0 -p1 -b .i18n - -# Unintentional use of '|' instead of '||'. -%patch1 -p1 -b .badc - -# Fixed sdiff exit code handling (bug #152967). -%patch2 -p1 -b .sdiff - -# Fixed 'sdiff -E' (bug #484892). -%patch3 -p1 -b .sdiff-E - # For 'cmp -s', compare file sizes only if both non-zero (bug #563618). %patch4 -p1 -b .cmp-s-empty @@ -57,6 +41,9 @@ make DESTDIR=$RPM_BUILD_ROOT install rm -f $RPM_BUILD_ROOT%{_infodir}/dir %find_lang %{name} +%check +make check + %post if [ -f %{_infodir}/diff.info.gz ]; then /sbin/install-info %{_infodir}/diff.info.gz %{_infodir}/dir --entry="* diff: (diff). The GNU diff." @@ -80,6 +67,10 @@ rm -rf $RPM_BUILD_ROOT %{_infodir}/diff.info*gz %changelog +* Wed Apr 13 2011 Tim Waugh 3.0-1 +- 3.0 (bug #566482). +- The i18n patch is dropped for the time being. + * Tue Feb 08 2011 Fedora Release Engineering - 2.8.1-30 - Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild diff --git a/sources b/sources index d66526b..4aebe0f 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -71f9c5ae19b60608f6c7f162da86a428 diffutils-2.8.1.tar.gz +7624eb7e6b53ea3ce38958a092d2216e diffutils-3.0.tar.xz