From 769ab9e681d23c395e111bbff356090d738e33f3984252061c944b1902c7d85d Mon Sep 17 00:00:00 2001 From: OBS User unknown Date: Sun, 20 Apr 2008 13:43:34 +0000 Subject: [PATCH] OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/coreutils?expand=0&rev=25 --- coreutils-5.3.0-i18n-0.1.patch | 478 ++++++++++----------- coreutils-6.10.tar.gz | 3 - coreutils-6.10.diff => coreutils-6.11.diff | 20 +- coreutils-6.11.tar.gz | 3 + coreutils.changes | 66 +++ coreutils.spec | 72 +++- frexpl.diff | 36 -- testsuite.diff | 22 - 8 files changed, 383 insertions(+), 317 deletions(-) delete mode 100644 coreutils-6.10.tar.gz rename coreutils-6.10.diff => coreutils-6.11.diff (92%) create mode 100644 coreutils-6.11.tar.gz delete mode 100644 frexpl.diff delete mode 100644 testsuite.diff diff --git a/coreutils-5.3.0-i18n-0.1.patch b/coreutils-5.3.0-i18n-0.1.patch index b132d98..73c0682 100644 --- a/coreutils-5.3.0-i18n-0.1.patch +++ b/coreutils-5.3.0-i18n-0.1.patch @@ -1,5 +1,5 @@ ---- coreutils-6.9-316-e6f4b/lib/linebuffer.h -+++ coreutils-6.9-316-e6f4b/lib/linebuffer.h +--- coreutils-6.11/lib/linebuffer.h ++++ coreutils-6.11/lib/linebuffer.h @@ -21,6 +21,11 @@ # include @@ -22,8 +22,8 @@ }; /* Initialize linebuffer LINEBUFFER for use. */ ---- coreutils-6.9-316-e6f4b/src/cut.c -+++ coreutils-6.9-316-e6f4b/src/cut.c +--- coreutils-6.11/src/cut.c ++++ coreutils-6.11/src/cut.c @@ -28,6 +28,12 @@ #include #include @@ -167,7 +167,7 @@ /* True if the --output-delimiter=STRING option was specified. */ static bool output_delimiter_specified; -@@ -206,7 +281,7 @@ Mandatory arguments to long options are +@@ -206,7 +281,7 @@ Mandatory arguments to long options are -f, --fields=LIST select only these fields; also print any line\n\ that contains no delimiter character, unless\n\ the -s option is specified\n\ @@ -607,8 +607,8 @@ } if (optind == argc) ---- coreutils-6.9-316-e6f4b/src/expand.c -+++ coreutils-6.9-316-e6f4b/src/expand.c +--- coreutils-6.11/src/expand.c ++++ coreutils-6.11/src/expand.c @@ -37,11 +37,31 @@ #include #include @@ -837,8 +837,8 @@ if (have_read_stdin && fclose (stdin) != 0) error (EXIT_FAILURE, errno, "-"); ---- coreutils-6.9-316-e6f4b/src/fold.c -+++ coreutils-6.9-316-e6f4b/src/fold.c +--- coreutils-6.11/src/fold.c ++++ coreutils-6.11/src/fold.c @@ -22,6 +22,19 @@ #include #include @@ -936,7 +936,7 @@ {"spaces", no_argument, NULL, 's'}, {"width", required_argument, NULL, 'w'}, {GETOPT_HELP_OPTION_DECL}, -@@ -80,6 +142,7 @@ Mandatory arguments to long options are +@@ -80,6 +142,7 @@ Mandatory arguments to long options are "), stdout); fputs (_("\ -b, --bytes count bytes rather than columns\n\ @@ -944,7 +944,7 @@ -s, --spaces break at spaces\n\ -w, --width=WIDTH use WIDTH columns instead of 80\n\ "), stdout); -@@ -97,7 +160,7 @@ Mandatory arguments to long options are +@@ -97,7 +160,7 @@ Mandatory arguments to long options are static size_t adjust_column (size_t column, char c) { @@ -970,7 +970,7 @@ int c; size_t column = 0; /* Screen column where next char will go. */ size_t offset_out = 0; /* Index in `line_out' for next char. */ -@@ -131,20 +189,6 @@ fold_file (char const *filename, size_t +@@ -131,20 +189,6 @@ fold_file (char const *filename, size_t static size_t allocated_out = 0; int saved_errno; @@ -991,7 +991,7 @@ while ((c = getc (istream)) != EOF) { if (offset_out + 1 >= allocated_out) -@@ -222,6 +266,234 @@ fold_file (char const *filename, size_t +@@ -222,6 +266,234 @@ fold_file (char const *filename, size_t if (offset_out) fwrite (line_out, sizeof (char), (size_t) offset_out, stdout); @@ -1254,8 +1254,8 @@ break; case 's': /* Break at word boundaries. */ ---- coreutils-6.9-316-e6f4b/src/join.c -+++ coreutils-6.9-316-e6f4b/src/join.c +--- coreutils-6.11/src/join.c ++++ coreutils-6.11/src/join.c @@ -22,6 +22,16 @@ #include #include @@ -1273,9 +1273,9 @@ #include "system.h" #include "error.h" #include "hard-locale.h" -@@ -32,6 +42,11 @@ - #include "xmemcoll.h" +@@ -33,6 +43,11 @@ #include "xstrtol.h" + #include "argmatch.h" +/* Some systems, like BeOS, have multibyte encodings but lack mbstate_t. */ +#if HAVE_MBRTOWC && defined mbstate_t @@ -1285,7 +1285,7 @@ /* The official name of this program (e.g., no `g' prefix). */ #define PROGRAM_NAME "join" -@@ -103,10 +118,13 @@ static struct outlist outlist_head; +@@ -113,10 +128,13 @@ static struct outlist outlist_head; /* Last element in `outlist', where a new element can be added. */ static struct outlist *outlist_end = &outlist_head; @@ -1299,9 +1299,9 @@ +/* The number of bytes used for tab. */ +static size_t tablen = 0; - static struct option const longopts[] = - { -@@ -198,10 +216,10 @@ xfields (struct line *line) + /* If nonzero, check that the input is correctly ordered. */ + static enum +@@ -230,10 +248,10 @@ xfields (struct line *line) if (ptr == lim) return; @@ -1314,8 +1314,146 @@ extract_field (line, ptr, sep - ptr); } else -@@ -228,6 +246,133 @@ xfields (struct line *line) - extract_field (line, ptr, lim - ptr); +@@ -305,56 +323,115 @@ keycmp (struct line const *line1, struct + size_t jf_1, size_t jf_2) + { + /* Start of field to compare in each file. */ +- char *beg1; +- char *beg2; +- +- size_t len1; +- size_t len2; /* Length of fields to compare. */ ++ char *beg[2]; ++ char *copy[2]; ++ size_t len[2]; /* Length of fields to compare. */ + int diff; ++ int i, j; + + if (jf_1 < line1->nfields) + { +- beg1 = line1->fields[jf_1].beg; +- len1 = line1->fields[jf_1].len; ++ beg[0] = line1->fields[jf_1].beg; ++ len[0] = line1->fields[jf_1].len; + } + else + { +- beg1 = NULL; +- len1 = 0; ++ beg[0] = NULL; ++ len[0] = 0; + } + + if (jf_2 < line2->nfields) + { +- beg2 = line2->fields[jf_2].beg; +- len2 = line2->fields[jf_2].len; ++ beg[1] = line2->fields[jf_2].beg; ++ len[1] = line2->fields[jf_2].len; + } + else + { +- beg2 = NULL; +- len2 = 0; ++ beg[1] = NULL; ++ len[1] = 0; + } + +- if (len1 == 0) +- return len2 == 0 ? 0 : -1; +- if (len2 == 0) ++ if (len[0] == 0) ++ return len[1] == 0 ? 0 : -1; ++ if (len[1] == 0) + return 1; + + if (ignore_case) + { +- /* FIXME: ignore_case does not work with NLS (in particular, +- with multibyte chars). */ +- diff = memcasecmp (beg1, beg2, MIN (len1, len2)); ++#ifdef HAVE_MBRTOWC ++ if (MB_CUR_MAX > 1) ++ { ++ size_t mblength; ++ wchar_t wc, uwc; ++ mbstate_t state, state_bak; ++ ++ memset (&state, '\0', sizeof (mbstate_t)); ++ ++ for (i = 0; i < 2; i++) ++ { ++ copy[i] = alloca (len[i] + 1); ++ ++ for (j = 0; j < MIN (len[0], len[1]);) ++ { ++ state_bak = state; ++ mblength = mbrtowc (&wc, beg[i] + j, len[i] - j, &state); ++ ++ switch (mblength) ++ { ++ case (size_t) -1: ++ case (size_t) -2: ++ state = state_bak; ++ /* Fall through */ ++ case 0: ++ mblength = 1; ++ break; ++ ++ default: ++ uwc = towupper (wc); ++ ++ if (uwc != wc) ++ { ++ mbstate_t state_wc; ++ ++ memset (&state_wc, '\0', sizeof (mbstate_t)); ++ wcrtomb (copy[i] + j, uwc, &state_wc); ++ } ++ else ++ memcpy (copy[i] + j, beg[i] + j, mblength); ++ } ++ j += mblength; ++ } ++ copy[i][j] = '\0'; ++ } ++ return xmemcoll (copy[0], len[0], copy[1], len[1]); ++ } ++#endif ++ if (hard_LC_COLLATE) ++ { ++ for (i = 0; i < 2; i++) ++ { ++ copy[i] = alloca (len[i] + 1); ++ ++ for (j = 0; j < MIN (len[0], len[1]); j++) ++ copy[i][j] = toupper (beg[i][j]); ++ ++ copy[i][j] = '\0'; ++ } ++ return xmemcoll (copy[0], len[0], copy[1], len[1]); ++ } ++ else ++ diff = memcasecmp (beg[0], beg[1], MIN (len[0], len[1])); + } + else + { + if (hard_LC_COLLATE) +- return xmemcoll (beg1, len1, beg2, len2); +- diff = memcmp (beg1, beg2, MIN (len1, len2)); ++ return xmemcoll (beg[0], len[0], beg[1], len[1]); ++ diff = memcmp (beg[0], beg[1], MIN (len[0], len[1])); + } + + if (diff) + return diff; +- return len1 < len2 ? -1 : len1 != len2; ++ return len[0] < len[1] ? -1 : len[0] != len[1]; + } + + /* Check that successive input lines PREV and CURRENT from input file +@@ -393,6 +470,133 @@ check_order (const struct line *prev, + } } +#if HAVE_MBRTOWC @@ -1448,7 +1586,7 @@ /* Read a line from FP into LINE and split it into fields. Return true if successful. */ -@@ -248,7 +393,13 @@ get_line (FILE *fp, struct line *line) +@@ -413,7 +617,13 @@ get_line (FILE *fp, struct line *line, i line->nfields_allocated = 0; line->nfields = 0; line->fields = NULL; @@ -1460,148 +1598,10 @@ + else +#endif + xfields (line); - return true; - } -@@ -302,56 +453,115 @@ static int - keycmp (struct line const *line1, struct line const *line2) - { - /* Start of field to compare in each file. */ -- char *beg1; -- char *beg2; -- -- size_t len1; -- size_t len2; /* Length of fields to compare. */ -+ char *beg[2]; -+ char *copy[2]; -+ size_t len[2]; /* Length of fields to compare. */ - int diff; -+ int i, j; - - if (join_field_1 < line1->nfields) + if (prevline[which - 1]) { -- beg1 = line1->fields[join_field_1].beg; -- len1 = line1->fields[join_field_1].len; -+ beg[0] = line1->fields[join_field_1].beg; -+ len[0] = line1->fields[join_field_1].len; - } - else - { -- beg1 = NULL; -- len1 = 0; -+ beg[0] = NULL; -+ len[0] = 0; - } - - if (join_field_2 < line2->nfields) - { -- beg2 = line2->fields[join_field_2].beg; -- len2 = line2->fields[join_field_2].len; -+ beg[1] = line2->fields[join_field_2].beg; -+ len[1] = line2->fields[join_field_2].len; - } - else - { -- beg2 = NULL; -- len2 = 0; -+ beg[1] = NULL; -+ len[1] = 0; - } - -- if (len1 == 0) -- return len2 == 0 ? 0 : -1; -- if (len2 == 0) -+ if (len[0] == 0) -+ return len[1] == 0 ? 0 : -1; -+ if (len[1] == 0) - return 1; - - if (ignore_case) - { -- /* FIXME: ignore_case does not work with NLS (in particular, -- with multibyte chars). */ -- diff = memcasecmp (beg1, beg2, MIN (len1, len2)); -+#ifdef HAVE_MBRTOWC -+ if (MB_CUR_MAX > 1) -+ { -+ size_t mblength; -+ wchar_t wc, uwc; -+ mbstate_t state, state_bak; -+ -+ memset (&state, '\0', sizeof (mbstate_t)); -+ -+ for (i = 0; i < 2; i++) -+ { -+ copy[i] = alloca (len[i] + 1); -+ -+ for (j = 0; j < MIN (len[0], len[1]);) -+ { -+ state_bak = state; -+ mblength = mbrtowc (&wc, beg[i] + j, len[i] - j, &state); -+ -+ switch (mblength) -+ { -+ case (size_t) -1: -+ case (size_t) -2: -+ state = state_bak; -+ /* Fall through */ -+ case 0: -+ mblength = 1; -+ break; -+ -+ default: -+ uwc = towupper (wc); -+ -+ if (uwc != wc) -+ { -+ mbstate_t state_wc; -+ -+ memset (&state_wc, '\0', sizeof (mbstate_t)); -+ wcrtomb (copy[i] + j, uwc, &state_wc); -+ } -+ else -+ memcpy (copy[i] + j, beg[i] + j, mblength); -+ } -+ j += mblength; -+ } -+ copy[i][j] = '\0'; -+ } -+ return xmemcoll (copy[0], len[0], copy[1], len[1]); -+ } -+#endif -+ if (hard_LC_COLLATE) -+ { -+ for (i = 0; i < 2; i++) -+ { -+ copy[i] = alloca (len[i] + 1); -+ -+ for (j = 0; j < MIN (len[0], len[1]); j++) -+ copy[i][j] = toupper (beg[i][j]); -+ -+ copy[i][j] = '\0'; -+ } -+ return xmemcoll (copy[0], len[0], copy[1], len[1]); -+ } -+ else -+ diff = memcasecmp (beg[0], beg[1], MIN (len[0], len[1])); - } - else - { - if (hard_LC_COLLATE) -- return xmemcoll (beg1, len1, beg2, len2); -- diff = memcmp (beg1, beg2, MIN (len1, len2)); -+ return xmemcoll (beg[0], len[0], beg[1], len[1]); -+ diff = memcmp (beg[0], beg[1], MIN (len[0], len[1])); - } - - if (diff) - return diff; -- return len1 < len2 ? -1 : len1 != len2; -+ return len[0] < len[1] ? -1 : len[0] != len[1]; - } - - /* Print field N of LINE if it exists and is nonempty, otherwise -@@ -380,7 +590,8 @@ static void +@@ -513,7 +723,8 @@ static void prjoin (struct line const *line1, struct line const *line2) { const struct outlist *outlist; @@ -1611,7 +1611,7 @@ outlist = outlist_head.next; if (outlist) -@@ -415,7 +626,7 @@ prjoin (struct line const *line1, struct +@@ -548,7 +759,7 @@ prjoin (struct line const *line1, struct o = o->next; if (o == NULL) break; @@ -1620,7 +1620,7 @@ } putchar ('\n'); } -@@ -433,23 +644,23 @@ prjoin (struct line const *line1, struct +@@ -566,23 +777,23 @@ prjoin (struct line const *line1, struct prfield (join_field_1, line1); for (i = 0; i < join_field_1 && i < line1->nfields; ++i) { @@ -1648,7 +1648,7 @@ prfield (i, line2); } putchar ('\n'); -@@ -858,20 +1069,40 @@ main (int argc, char **argv) +@@ -1016,20 +1227,40 @@ main (int argc, char **argv) case 't': { @@ -1694,8 +1694,8 @@ } break; ---- coreutils-6.9-316-e6f4b/src/pr.c -+++ coreutils-6.9-316-e6f4b/src/pr.c +--- coreutils-6.11/src/pr.c ++++ coreutils-6.11/src/pr.c @@ -312,6 +312,32 @@ #include @@ -1729,7 +1729,7 @@ #include "system.h" #include "error.h" #include "hard-locale.h" -@@ -323,6 +349,18 @@ +@@ -322,6 +348,18 @@ #include "strftime.h" #include "xstrtol.h" @@ -1748,7 +1748,7 @@ /* The official name of this program (e.g., no `g' prefix). */ #define PROGRAM_NAME "pr" -@@ -414,8 +452,21 @@ struct COLUMN +@@ -413,8 +451,21 @@ struct COLUMN typedef struct COLUMN COLUMN; #define NULLCOL (COLUMN *)0 @@ -1771,7 +1771,7 @@ static bool read_line (COLUMN *p); static bool print_page (void); static bool print_stored (COLUMN *p); -@@ -425,6 +476,7 @@ static void print_header (void); +@@ -424,6 +475,7 @@ static void print_header (void); static void pad_across_to (int position); static void add_line_number (COLUMN *p); static void getoptarg (char *arg, char switch_char, char *character, @@ -1779,7 +1779,7 @@ int *number); void usage (int status); static void print_files (int number_of_files, char **av); -@@ -439,7 +491,6 @@ static void store_char (char c); +@@ -438,7 +490,6 @@ static void store_char (char c); static void pad_down (int lines); static void read_rest_of_line (COLUMN *p); static void skip_read (COLUMN *p, int column_number); @@ -1787,7 +1787,7 @@ static void cleanup (void); static void print_sep_string (void); static void separator_string (const char *optarg_S); -@@ -454,7 +505,7 @@ static COLUMN *column_vector; +@@ -453,7 +504,7 @@ static COLUMN *column_vector; we store the leftmost columns contiguously in buff. To print a line from buff, get the index of the first character from line_vector[i], and print up to line_vector[i + 1]. */ @@ -1796,7 +1796,7 @@ /* Index of the position in buff where the next character will be stored. */ -@@ -558,7 +609,7 @@ static int chars_per_column; +@@ -557,7 +608,7 @@ static int chars_per_column; static bool untabify_input = false; /* (-e) The input tab character. */ @@ -1805,7 +1805,7 @@ /* (-e) Tabstops are at chars_per_tab, 2*chars_per_tab, 3*chars_per_tab, ... where the leftmost column is 1. */ -@@ -568,7 +619,10 @@ static int chars_per_input_tab = 8; +@@ -567,7 +618,10 @@ static int chars_per_input_tab = 8; static bool tabify_output = false; /* (-i) The output tab character. */ @@ -1817,7 +1817,7 @@ /* (-i) The width of the output tab. */ static int chars_per_output_tab = 8; -@@ -642,7 +696,13 @@ static int power_10; +@@ -641,7 +695,13 @@ static int power_10; static bool numbered_lines = false; /* (-n) Character which follows each line number. */ @@ -1832,7 +1832,7 @@ /* (-n) line counting starts with 1st line of input file (not with 1st line of 1st page printed). */ -@@ -695,6 +755,7 @@ static bool use_col_separator = false; +@@ -694,6 +754,7 @@ static bool use_col_separator = false; -a|COLUMN|-m is a `space' and with the -J option a `tab'. */ static char *col_sep_string = ""; static int col_sep_length = 0; @@ -1840,7 +1840,7 @@ static char *column_separator = " "; static char *line_separator = "\t"; -@@ -851,6 +912,13 @@ separator_string (const char *optarg_S) +@@ -850,6 +911,13 @@ separator_string (const char *optarg_S) col_sep_length = (int) strlen (optarg_S); col_sep_string = xmalloc (col_sep_length + 1); strcpy (col_sep_string, optarg_S); @@ -1854,7 +1854,7 @@ } int -@@ -875,6 +943,21 @@ main (int argc, char **argv) +@@ -874,6 +942,21 @@ main (int argc, char **argv) atexit (close_stdout); @@ -1876,7 +1876,7 @@ n_files = 0; file_names = (argc > 1 ? xmalloc ((argc - 1) * sizeof (char *)) -@@ -951,8 +1034,12 @@ main (int argc, char **argv) +@@ -950,8 +1033,12 @@ main (int argc, char **argv) break; case 'e': if (optarg) @@ -1891,7 +1891,7 @@ /* Could check tab width > 0. */ untabify_input = true; break; -@@ -965,8 +1052,12 @@ main (int argc, char **argv) +@@ -964,8 +1051,12 @@ main (int argc, char **argv) break; case 'i': if (optarg) @@ -1906,7 +1906,7 @@ /* Could check tab width > 0. */ tabify_output = true; break; -@@ -993,8 +1084,8 @@ main (int argc, char **argv) +@@ -992,8 +1083,8 @@ main (int argc, char **argv) case 'n': numbered_lines = true; if (optarg) @@ -1917,7 +1917,7 @@ break; case 'N': skip_count = false; -@@ -1033,7 +1124,7 @@ main (int argc, char **argv) +@@ -1032,7 +1123,7 @@ main (int argc, char **argv) old_s = false; /* Reset an additional input of -s, -S dominates -s */ col_sep_string = ""; @@ -1926,7 +1926,7 @@ use_col_separator = true; if (optarg) separator_string (optarg); -@@ -1190,10 +1281,45 @@ main (int argc, char **argv) +@@ -1189,10 +1280,45 @@ main (int argc, char **argv) a number. */ static void @@ -1974,7 +1974,7 @@ if (*arg) { long int tmp_long; -@@ -1252,7 +1378,7 @@ init_parameters (int number_of_files) +@@ -1251,7 +1377,7 @@ init_parameters (int number_of_files) else col_sep_string = column_separator; @@ -1983,7 +1983,7 @@ use_col_separator = true; } /* It's rather pointless to define a TAB separator with column -@@ -1283,11 +1409,11 @@ init_parameters (int number_of_files) +@@ -1282,11 +1408,11 @@ init_parameters (int number_of_files) TAB_WIDTH (chars_per_input_tab, chars_per_number); */ /* Estimate chars_per_text without any margin and keep it constant. */ @@ -1997,7 +1997,7 @@ /* The number is part of the column width unless we are printing files in parallel. */ -@@ -1302,7 +1428,7 @@ init_parameters (int number_of_files) +@@ -1301,7 +1427,7 @@ init_parameters (int number_of_files) } chars_per_column = (chars_per_line - chars_used_by_number - @@ -2006,7 +2006,7 @@ if (chars_per_column < 1) error (EXIT_FAILURE, 0, _("page width too narrow")); -@@ -1427,7 +1553,7 @@ init_funcs (void) +@@ -1426,7 +1552,7 @@ init_funcs (void) /* Enlarge p->start_position of first column to use the same form of padding_not_printed with all columns. */ @@ -2015,7 +2015,7 @@ /* This loop takes care of all but the rightmost column. */ -@@ -1461,7 +1587,7 @@ init_funcs (void) +@@ -1460,7 +1586,7 @@ init_funcs (void) } else { @@ -2024,7 +2024,7 @@ h_next = h + chars_per_column; } } -@@ -1751,9 +1877,9 @@ static void +@@ -1750,9 +1876,9 @@ static void align_column (COLUMN *p) { padding_not_printed = p->start_position; @@ -2036,7 +2036,7 @@ padding_not_printed = ANYWHERE; } -@@ -2024,13 +2150,13 @@ store_char (char c) +@@ -2023,13 +2149,13 @@ store_char (char c) /* May be too generous. */ buff = X2REALLOC (buff, &buff_allocated); } @@ -2052,7 +2052,7 @@ char *s; int left_cut; -@@ -2053,22 +2179,24 @@ add_line_number (COLUMN *p) +@@ -2052,22 +2178,24 @@ add_line_number (COLUMN *p) /* Tabification is assumed for multiple columns, also for n-separators, but `default n-separator = TAB' hasn't been given priority over equal column_width also specified by POSIX. */ @@ -2081,7 +2081,7 @@ output_position = POS_AFTER_TAB (chars_per_output_tab, output_position); } -@@ -2229,7 +2357,7 @@ print_white_space (void) +@@ -2228,7 +2356,7 @@ print_white_space (void) while (goal - h_old > 1 && (h_new = POS_AFTER_TAB (chars_per_output_tab, h_old)) <= goal) { @@ -2090,7 +2090,7 @@ h_old = h_new; } while (++h_old <= goal) -@@ -2249,6 +2377,7 @@ print_sep_string (void) +@@ -2248,6 +2376,7 @@ print_sep_string (void) { char *s; int l = col_sep_length; @@ -2098,7 +2098,7 @@ s = col_sep_string; -@@ -2262,6 +2391,7 @@ print_sep_string (void) +@@ -2261,6 +2390,7 @@ print_sep_string (void) { for (; separators_not_printed > 0; --separators_not_printed) { @@ -2106,7 +2106,7 @@ while (l-- > 0) { /* 3 types of sep_strings: spaces only, spaces and chars, -@@ -2275,12 +2405,15 @@ print_sep_string (void) +@@ -2274,12 +2404,15 @@ print_sep_string (void) } else { @@ -2123,7 +2123,7 @@ /* sep_string ends with some spaces */ if (spaces_not_printed > 0) print_white_space (); -@@ -2307,8 +2440,9 @@ print_clump (COLUMN *p, int n, char *clu +@@ -2306,8 +2439,9 @@ print_clump (COLUMN *p, int n, char *clu a nonspace is encountered, call print_white_space() to print the required number of tabs and spaces. */ @@ -2134,7 +2134,7 @@ { if (tabify_output) { -@@ -2332,6 +2466,75 @@ print_char (char c) +@@ -2331,6 +2465,75 @@ print_char (char c) putchar (c); } @@ -2210,7 +2210,7 @@ /* Skip to page PAGE before printing. PAGE may be larger than total number of pages. */ -@@ -2509,9 +2712,9 @@ read_line (COLUMN *p) +@@ -2508,9 +2711,9 @@ read_line (COLUMN *p) align_empty_cols = false; } @@ -2222,7 +2222,7 @@ padding_not_printed = ANYWHERE; } -@@ -2612,9 +2815,9 @@ print_stored (COLUMN *p) +@@ -2611,9 +2814,9 @@ print_stored (COLUMN *p) } } @@ -2234,7 +2234,7 @@ padding_not_printed = ANYWHERE; } -@@ -2627,8 +2830,8 @@ print_stored (COLUMN *p) +@@ -2626,8 +2829,8 @@ print_stored (COLUMN *p) if (spaces_not_printed == 0) { output_position = p->start_position + end_vector[line]; @@ -2245,7 +2245,7 @@ } return true; -@@ -2646,8 +2849,9 @@ print_stored (COLUMN *p) +@@ -2645,8 +2848,9 @@ print_stored (COLUMN *p) characters in clump_buff. (e.g, the width of '\b' is -1, while the number of characters is 1.) */ @@ -2256,7 +2256,7 @@ { unsigned char uc = c; char *s = clump_buff; -@@ -2657,10 +2861,10 @@ char_to_clump (char c) +@@ -2656,10 +2860,10 @@ char_to_clump (char c) int chars; int chars_per_c = 8; @@ -2269,7 +2269,7 @@ { width = TAB_WIDTH (chars_per_c, input_position); -@@ -2731,6 +2935,155 @@ char_to_clump (char c) +@@ -2740,6 +2944,155 @@ char_to_clump (char c) return chars; } @@ -2425,8 +2425,8 @@ /* We've just printed some files and need to clean up things before looking for more options and printing the next batch of files. ---- coreutils-6.9-316-e6f4b/src/sort.c -+++ coreutils-6.9-316-e6f4b/src/sort.c +--- coreutils-6.11/src/sort.c ++++ coreutils-6.11/src/sort.c @@ -26,6 +26,19 @@ #include #include @@ -2523,7 +2523,7 @@ /* Flag to remove consecutive duplicate lines from the output. Only the last of a sequence of equal lines will be output. */ -@@ -638,6 +684,43 @@ reap_some (void) +@@ -653,6 +699,43 @@ reap_some (void) update_proc (pid); } @@ -2567,7 +2567,7 @@ /* Clean up any remaining temporary files. */ static void -@@ -977,7 +1060,7 @@ zaptemp (const char *name) +@@ -992,7 +1075,7 @@ zaptemp (const char *name) free (node); } @@ -2576,7 +2576,7 @@ static int struct_month_cmp (const void *m1, const void *m2) -@@ -1004,7 +1087,7 @@ inittables (void) +@@ -1019,7 +1102,7 @@ inittables (void) fold_toupper[i] = toupper (i); } @@ -2585,7 +2585,7 @@ /* If we're not in the "C" locale, read different names for months. */ if (hard_LC_TIME) { -@@ -1030,6 +1113,71 @@ inittables (void) +@@ -1045,6 +1128,71 @@ inittables (void) #endif } @@ -2657,7 +2657,7 @@ /* Specify the amount of main memory to use when sorting. */ static void specify_sort_size (int oi, char c, char const *s) -@@ -1240,7 +1388,7 @@ buffer_linelim (struct buffer const *buf +@@ -1255,7 +1403,7 @@ buffer_linelim (struct buffer const *buf by KEY in LINE. */ static char * @@ -2666,7 +2666,7 @@ { char *ptr = line->text, *lim = ptr + line->length - 1; size_t sword = key->sword; -@@ -1250,10 +1398,10 @@ begfield (const struct line *line, const +@@ -1265,10 +1413,10 @@ begfield (const struct line *line, const /* The leading field separator itself is included in a field when -t is absent. */ @@ -2679,7 +2679,7 @@ ++ptr; if (ptr < lim) ++ptr; -@@ -1281,11 +1429,70 @@ begfield (const struct line *line, const +@@ -1296,11 +1444,70 @@ begfield (const struct line *line, const return ptr; } @@ -2751,7 +2751,7 @@ { char *ptr = line->text, *lim = ptr + line->length - 1; size_t eword = key->eword, echar = key->echar; -@@ -1298,10 +1505,10 @@ limfield (const struct line *line, const +@@ -1313,10 +1520,10 @@ limfield (const struct line *line, const `beginning' is the first character following the delimiting TAB. Otherwise, leave PTR pointing at the first `blank' character after the preceding field. */ @@ -2764,7 +2764,7 @@ ++ptr; if (ptr < lim && (eword | echar)) ++ptr; -@@ -1347,7 +1554,7 @@ limfield (const struct line *line, const +@@ -1362,7 +1569,7 @@ limfield (const struct line *line, const */ /* Make LIM point to the end of (one byte past) the current field. */ @@ -2773,7 +2773,7 @@ { char *newlim; newlim = memchr (ptr, tab, lim - ptr); -@@ -1383,6 +1590,107 @@ limfield (const struct line *line, const +@@ -1398,6 +1605,107 @@ limfield (const struct line *line, const return ptr; } @@ -2881,7 +2881,7 @@ /* Fill BUF reading from FP, moving buf->left bytes from the end of buf->buf to the beginning first. If EOF is reached and the file wasn't terminated by a newline, supply one. Set up BUF's line -@@ -1465,8 +1773,22 @@ fillbuf (struct buffer *buf, FILE *fp, c +@@ -1480,8 +1788,22 @@ fillbuf (struct buffer *buf, FILE *fp, c else { if (key->skipsblanks) @@ -2906,7 +2906,7 @@ line->keybeg = line_start; } } -@@ -1521,15 +1843,59 @@ general_numcompare (const char *sa, cons +@@ -1536,15 +1858,59 @@ general_numcompare (const char *sa, cons /* FIXME: maybe add option to try expensive FP conversion only if A and B can't be compared more cheaply/accurately. */ @@ -2973,7 +2973,7 @@ return 1; /* Sort numbers in the usual way, where -0 == +0. Put NaNs after -@@ -1547,7 +1913,7 @@ general_numcompare (const char *sa, cons +@@ -1562,7 +1928,7 @@ general_numcompare (const char *sa, cons Return 0 if the name in S is not recognized. */ static int @@ -2982,7 +2982,7 @@ { size_t lo = 0; size_t hi = MONTHS_PER_YEAR; -@@ -1702,11 +2068,79 @@ compare_random (char *restrict texta, si +@@ -1717,11 +2083,79 @@ compare_random (char *restrict texta, si return diff; } @@ -3063,7 +3063,7 @@ { struct keyfield const *key = keylist; -@@ -1873,12 +2307,189 @@ keycompare (const struct line *a, const +@@ -1888,12 +2322,189 @@ keycompare (const struct line *a, const return 0; @@ -3255,7 +3255,7 @@ /* Compare two lines A and B, returning negative, zero, or positive depending on whether A compares less than, equal to, or greater than B. */ -@@ -2695,6 +3306,11 @@ set_ordering (const char *s, struct keyf +@@ -2710,6 +3321,11 @@ set_ordering (const char *s, struct keyf break; case 'M': key->month = true; @@ -3267,7 +3267,7 @@ break; case 'n': key->numeric = true; -@@ -2748,7 +3364,7 @@ main (int argc, char **argv) +@@ -2763,7 +3379,7 @@ main (int argc, char **argv) initialize_exit_failure (SORT_FAILURE); hard_LC_COLLATE = hard_locale (LC_COLLATE); @@ -3276,7 +3276,7 @@ hard_LC_TIME = hard_locale (LC_TIME); #endif -@@ -2761,14 +3377,40 @@ main (int argc, char **argv) +@@ -2776,14 +3392,40 @@ main (int argc, char **argv) add support for multibyte decimal points. */ decimal_point = to_uchar (locale->decimal_point[0]); if (! decimal_point || locale->decimal_point[1]) @@ -3319,7 +3319,7 @@ have_read_stdin = false; inittables (); -@@ -3017,13 +3659,32 @@ main (int argc, char **argv) +@@ -3035,13 +3677,32 @@ main (int argc, char **argv) case 't': { @@ -3356,7 +3356,7 @@ else { /* Provoke with `sort -txx'. Complain about -@@ -3034,9 +3695,12 @@ main (int argc, char **argv) +@@ -3052,9 +3713,12 @@ main (int argc, char **argv) quote (optarg)); } } @@ -3370,8 +3370,8 @@ } break; ---- coreutils-6.9-316-e6f4b/src/unexpand.c -+++ coreutils-6.9-316-e6f4b/src/unexpand.c +--- coreutils-6.11/src/unexpand.c ++++ coreutils-6.11/src/unexpand.c @@ -38,11 +38,34 @@ #include #include @@ -3659,8 +3659,8 @@ if (have_read_stdin && fclose (stdin) != 0) error (EXIT_FAILURE, errno, "-"); ---- coreutils-6.9-316-e6f4b/src/uniq.c -+++ coreutils-6.9-316-e6f4b/src/uniq.c +--- coreutils-6.11/src/uniq.c ++++ coreutils-6.11/src/uniq.c @@ -22,6 +22,16 @@ #include #include @@ -3705,7 +3705,7 @@ static struct option const longopts[] = { {"count", no_argument, NULL, 'c'}, -@@ -199,7 +222,7 @@ size_opt (char const *opt, char const *m +@@ -204,7 +227,7 @@ size_opt (char const *opt, char const *m return a pointer to the beginning of the line's field to be compared. */ static char * @@ -3714,7 +3714,7 @@ { size_t count; char *lp = line->buffer; -@@ -220,6 +243,83 @@ find_field (const struct linebuffer *lin +@@ -225,6 +248,83 @@ find_field (const struct linebuffer *lin return lp + i; } @@ -3798,7 +3798,7 @@ /* Return false if two strings OLD and NEW match, true if not. OLD and NEW point not to the beginnings of the lines but rather to the beginnings of the fields to compare. -@@ -244,6 +344,73 @@ different (char *old, char *new, size_t +@@ -249,6 +349,73 @@ different (char *old, char *new, size_t return oldlen != newlen || memcmp (old, new, oldlen); } @@ -3872,7 +3872,7 @@ /* Output the line in linebuffer LINE to standard output provided that the switches say it should be output. MATCH is true if the line matches the previous line. -@@ -296,15 +463,42 @@ check_file (const char *infile, const ch +@@ -301,15 +468,42 @@ check_file (const char *infile, const ch { char *prevfield IF_LINT (= NULL); size_t prevlen IF_LINT (= 0); @@ -3915,7 +3915,7 @@ if (prevline->length == 0 || different (thisfield, prevfield, thislen, prevlen)) { -@@ -323,17 +517,26 @@ check_file (const char *infile, const ch +@@ -328,17 +522,26 @@ check_file (const char *infile, const ch size_t prevlen; uintmax_t match_count = 0; bool first_delimiter = true; @@ -3942,7 +3942,7 @@ if (readlinebuffer_delim (thisline, stdin, delimiter) == 0) { if (ferror (stdin)) -@@ -342,6 +545,15 @@ check_file (const char *infile, const ch +@@ -347,6 +550,15 @@ check_file (const char *infile, const ch } thisfield = find_field (thisline); thislen = thisline->length - 1 - (thisfield - thisline->buffer); @@ -3958,7 +3958,7 @@ match = !different (thisfield, prevfield, thislen, prevlen); match_count += match; -@@ -374,6 +586,9 @@ check_file (const char *infile, const ch +@@ -379,6 +591,9 @@ check_file (const char *infile, const ch SWAP_LINES (prevline, thisline); prevfield = thisfield; prevlen = thislen; @@ -3968,7 +3968,7 @@ if (!match) match_count = 0; } -@@ -419,6 +634,18 @@ main (int argc, char **argv) +@@ -424,6 +639,18 @@ main (int argc, char **argv) atexit (close_stdout); diff --git a/coreutils-6.10.tar.gz b/coreutils-6.10.tar.gz deleted file mode 100644 index 9442bb9..0000000 --- a/coreutils-6.10.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1d013547889f20576460249c4210632d5314531c8477378a2e046b13a8ebeb7e -size 9193125 diff --git a/coreutils-6.10.diff b/coreutils-6.11.diff similarity index 92% rename from coreutils-6.10.diff rename to coreutils-6.11.diff index b3ae6cb..e5ee583 100644 --- a/coreutils-6.10.diff +++ b/coreutils-6.11.diff @@ -18,7 +18,7 @@ @command{date}: Print or set system date and time -@@ -12467,8 +12463,6 @@ information. +@@ -12515,8 +12511,6 @@ information. * arch invocation:: Print machine hardware name. * date invocation:: Print or set system date and time. * uname invocation:: Print system information. @@ -27,7 +27,7 @@ @end menu -@@ -13248,55 +13242,6 @@ Print the kernel version. +@@ -13296,55 +13290,6 @@ Print the kernel version. @exitstatus @@ -85,7 +85,7 @@ @chapter Modified command invocation --- gnulib-tests/test-isnanl.h +++ gnulib-tests/test-isnanl.h -@@ -57,7 +57,7 @@ main () +@@ -59,7 +59,7 @@ main () /* Quiet NaN. */ ASSERT (isnanl (0.0L / 0.0L)); @@ -94,7 +94,7 @@ /* A bit pattern that is different from a Quiet NaN. With a bit of luck, it's a Signalling NaN. */ { -@@ -99,6 +99,7 @@ main () +@@ -101,6 +101,7 @@ main () { LDBL80_WORDS (0xFFFF, 0x83333333, 0x00000000) }; ASSERT (isnanl (x.value)); } @@ -102,7 +102,7 @@ /* The isnanl function should recognize Pseudo-NaNs, Pseudo-Infinities, Pseudo-Zeroes, Unnormalized Numbers, and Pseudo-Denormals, as defined in Intel IA-64 Architecture Software Developer's Manual, Volume 1: -@@ -132,6 +133,7 @@ main () +@@ -134,6 +135,7 @@ main () ASSERT (isnanl (x.value)); } #endif @@ -112,7 +112,7 @@ } --- m4/gnulib-comp.m4 +++ m4/gnulib-comp.m4 -@@ -234,7 +234,6 @@ AC_DEFUN([gl_INIT], +@@ -248,7 +248,6 @@ AC_DEFUN([gl_INIT], gl_POSIXVER gl_FUNC_PRINTF_FREXP gl_FUNC_PRINTF_FREXPL @@ -126,8 +126,8 @@ PATH=../src$(PATH_SEPARATOR)$$PATH; export PATH; \ t=ls-files.$$$$; \ (cd $(srcdir) && ls -1 *.x) | sed 's/\.x$$//' | $(ASSORT) > $$t;\ -- (echo $(dist_man_MANS) $(NO_INSTALL_PROGS_DEFAULT) \ -+ (echo $(dist_man_MANS) $(NO_INSTALL_PROGS_DEFAULT) hostid \ +- (echo $(dist_man1_MANS) $(NO_INSTALL_PROGS_DEFAULT) \ ++ (echo $(dist_man1_MANS) $(NO_INSTALL_PROGS_DEFAULT) hostid \ | tr -s ' ' '\n' | sed 's/\.1$$//') \ | $(ASSORT) -u | diff - $$t || { rm $$t; exit 1; }; \ rm $$t @@ -144,7 +144,7 @@ /* Extract or fake data from a `struct stat'. --- tests/misc/help-version +++ tests/misc/help-version -@@ -205,6 +205,7 @@ lbracket_args=": ]" +@@ -180,6 +180,7 @@ lbracket_args=": ]" for i in $built_programs; do # Skip these. case $i in chroot|stty|tty|false|chcon|runcon) continue;; esac @@ -162,4 +162,4 @@ +test -f /bin/uname.bin && other_partition_tmpdir= if test -z "$other_partition_tmpdir"; then - cat <&2 + skip_test_ \ diff --git a/coreutils-6.11.tar.gz b/coreutils-6.11.tar.gz new file mode 100644 index 0000000..721b1a3 --- /dev/null +++ b/coreutils-6.11.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eb9976291aad92dd586c9ac41669024de065772cc2f2608200d50643ea3a8bce +size 9095150 diff --git a/coreutils.changes b/coreutils.changes index 251a0e5..f237997 100644 --- a/coreutils.changes +++ b/coreutils.changes @@ -1,3 +1,69 @@ +------------------------------------------------------------------- +Sun Apr 20 00:19:07 CEST 2008 - schwab@suse.de + +- Update to coreutils 6.11. + ** Bug fixes + configure --enable-no-install-program=groups now works. + "cp -fR fifo E" now succeeds with an existing E. Before this fix, using + -fR to copy a fifo or "special" file onto an existing file would fail + with EEXIST. Now, it once again unlinks the destination before trying + to create the destination file. [bug introduced in coreutils-5.90] + dd once again works with unnecessary options like if=/dev/stdin and + of=/dev/stdout. [bug introduced in fileutils-4.0h] + id now uses getgrouplist, when possible. This results in + much better performance when there are many users and/or groups. + ls no longer segfaults on files in /proc when linked with an older version + of libselinux. E.g., ls -l /proc/sys would dereference a NULL pointer. + md5sum would segfault for invalid BSD-style input, e.g., + echo 'MD5 (' | md5sum -c - Now, md5sum ignores that line. + sha1sum, sha224sum, sha384sum, and sha512sum are affected, too. + [bug introduced in coreutils-5.1.0] + md5sum -c would accept a NUL-containing checksum string like "abcd\0..." + and would unnecessarily read and compute the checksum of the named file, + and then compare that checksum to the invalid one: guaranteed to fail. + Now, it recognizes that the line is not valid and skips it. + sha1sum, sha224sum, sha384sum, and sha512sum are affected, too. + [bug present in the original version, in coreutils-4.5.1, 1995] + "mkdir -Z x dir" no longer segfaults when diagnosing invalid context "x" + mkfifo and mknod would fail similarly. Now they're fixed. + mv would mistakenly unlink a destination file before calling rename, + when the destination had two or more hard links. It no longer does that. + [bug introduced in coreutils-5.3.0] + "paste -d'\' file" no longer overruns memory (heap since coreutils-5.1.2, + stack before then) [bug present in the original version, in 1992] + "pr -e" with a mix of backspaces and TABs no longer corrupts the heap + [bug present in the original version, in 1992] + "ptx -F'\' long-file-name" would overrun a malloc'd buffer and corrupt + the heap. That was triggered by a lone backslash (or odd number of them) + at the end of the option argument to --flag-truncation=STRING (-F), + --word-regexp=REGEXP (-W), or --sentence-regexp=REGEXP (-S). + "rm -r DIR" would mistakenly declare to be "write protected" -- and + prompt about -- full DIR-relative names longer than MIN (PATH_MAX, 8192). + "rmdir --ignore-fail-on-non-empty" detects and ignores the failure + in more cases when a directory is empty. + "seq -f % 1" would issue the erroneous diagnostic "seq: memory exhausted" + rather than reporting the invalid string format. + [bug introduced in coreutils-6.0] + ** New features + join now verifies that the inputs are in sorted order. This check can + be turned off with the --nocheck-order option. + sort accepts the new option --sort=WORD, where WORD can be one of + general-numeric, month, numeric or random. These are equivalent to the + options --general-numeric-sort/-g, --month-sort/-M, --numeric-sort/-n + and --random-sort/-R, resp. + ** Improvements + id and groups work around an AFS-related bug whereby those programs + would print an invalid group number, when given no user-name argument. + ls --color no longer outputs unnecessary escape sequences + seq gives better diagnostics for invalid formats. + ** Portability + rm now works properly even on systems like BeOS and Haiku, + which have negative errno values. + ** Consistency + install, mkdir, rmdir and split now write --verbose output to stdout, + not to stderr. + + ------------------------------------------------------------------- Fri Apr 11 11:42:57 CEST 2008 - schwab@suse.de diff --git a/coreutils.spec b/coreutils.spec index 08f0c21..db9da99 100644 --- a/coreutils.spec +++ b/coreutils.spec @@ -1,5 +1,5 @@ # -# spec file for package coreutils (Version 6.10) +# spec file for package coreutils (Version 6.11) # # Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany. # This file and all modifications and additions to the pristine @@ -16,8 +16,8 @@ BuildRequires: help2man libacl-devel pam-devel Url: http://www.gnu.org/software/coreutils/ License: GNU Free Documentation License, Version 1.2 (GFDL 1.2); GPL v2 or later; GPL v3 or later Group: System/Base -Version: 6.10 -Release: 22 +Version: 6.11 +Release: 1 Provides: fileutils sh-utils stat textutils mktemp Obsoletes: fileutils sh-utils stat textutils mktemp Obsoletes: libselinux <= 1.23.11-3 libselinux-32bit >= 9 libselinux-64bit = 9 libselinux-x86 = 9 @@ -34,8 +34,6 @@ Patch4: coreutils-5.3.0-i18n-0.1.patch Patch5: i18n-uninit.diff Patch6: i18n-infloop.diff Patch8: coreutils-sysinfo.diff -Patch9: testsuite.diff -Patch10: frexpl.diff Patch11: i18n-monthsort.diff Patch12: i18n-random.diff Patch16: invalid-ids.diff @@ -105,8 +103,6 @@ Authors: %patch6 %patch %patch8 -p1 -%patch9 -p1 -%patch10 -p1 %patch11 %patch12 %patch16 -p1 @@ -182,6 +178,68 @@ rm -rf $RPM_BUILD_ROOT %defattr(-,root,root) %changelog +* Sun Apr 20 2008 schwab@suse.de +- Update to coreutils 6.11. + ** Bug fixes + configure --enable-no-install-program=groups now works. + "cp -fR fifo E" now succeeds with an existing E. Before this fix, using + -fR to copy a fifo or "special" file onto an existing file would fail + with EEXIST. Now, it once again unlinks the destination before trying + to create the destination file. [bug introduced in coreutils-5.90] + dd once again works with unnecessary options like if=/dev/stdin and + of=/dev/stdout. [bug introduced in fileutils-4.0h] + id now uses getgrouplist, when possible. This results in + much better performance when there are many users and/or groups. + ls no longer segfaults on files in /proc when linked with an older version + of libselinux. E.g., ls -l /proc/sys would dereference a NULL pointer. + md5sum would segfault for invalid BSD-style input, e.g., + echo 'MD5 (' | md5sum -c - Now, md5sum ignores that line. + sha1sum, sha224sum, sha384sum, and sha512sum are affected, too. + [bug introduced in coreutils-5.1.0] + md5sum -c would accept a NUL-containing checksum string like "abcd\0..." + and would unnecessarily read and compute the checksum of the named file, + and then compare that checksum to the invalid one: guaranteed to fail. + Now, it recognizes that the line is not valid and skips it. + sha1sum, sha224sum, sha384sum, and sha512sum are affected, too. + [bug present in the original version, in coreutils-4.5.1, 1995] + "mkdir -Z x dir" no longer segfaults when diagnosing invalid context "x" + mkfifo and mknod would fail similarly. Now they're fixed. + mv would mistakenly unlink a destination file before calling rename, + when the destination had two or more hard links. It no longer does that. + [bug introduced in coreutils-5.3.0] + "paste -d'\' file" no longer overruns memory (heap since coreutils-5.1.2, + stack before then) [bug present in the original version, in 1992] + "pr -e" with a mix of backspaces and TABs no longer corrupts the heap + [bug present in the original version, in 1992] + "ptx -F'\' long-file-name" would overrun a malloc'd buffer and corrupt + the heap. That was triggered by a lone backslash (or odd number of them) + at the end of the option argument to --flag-truncation=STRING (-F), + --word-regexp=REGEXP (-W), or --sentence-regexp=REGEXP (-S). + "rm -r DIR" would mistakenly declare to be "write protected" -- and + prompt about -- full DIR-relative names longer than MIN (PATH_MAX, 8192). + "rmdir --ignore-fail-on-non-empty" detects and ignores the failure + in more cases when a directory is empty. + "seq -f %% 1" would issue the erroneous diagnostic "seq: memory exhausted" + rather than reporting the invalid string format. + [bug introduced in coreutils-6.0] + ** New features + join now verifies that the inputs are in sorted order. This check can + be turned off with the --nocheck-order option. + sort accepts the new option --sort=WORD, where WORD can be one of + general-numeric, month, numeric or random. These are equivalent to the + options --general-numeric-sort/-g, --month-sort/-M, --numeric-sort/-n + and --random-sort/-R, resp. + ** Improvements + id and groups work around an AFS-related bug whereby those programs + would print an invalid group number, when given no user-name argument. + ls --color no longer outputs unnecessary escape sequences + seq gives better diagnostics for invalid formats. + ** Portability + rm now works properly even on systems like BeOS and Haiku, + which have negative errno values. + ** Consistency + install, mkdir, rmdir and split now write --verbose output to stdout, + not to stderr. * Fri Apr 11 2008 schwab@suse.de - Work around a recent glibc/getopt.c diagnostic change. - Fix frexpl test. diff --git a/frexpl.diff b/frexpl.diff deleted file mode 100644 index bce715b..0000000 --- a/frexpl.diff +++ /dev/null @@ -1,36 +0,0 @@ -commit 5ac7a821bd96ca5e531d5127f66ab6a258cd7fcb -Author: Andreas Schwab -Date: Thu Jan 31 00:25:53 2008 +0100 - - Fix autoconf test bug introduced on 2008-01-15. - -2008-01-30 Andreas Schwab - Bruno Haible - - * m4/frexpl.m4 (gl_FUNC_FREXPL_WORKS): Include and ensure a - correct definition of LDBL_MIN_EXP. - -diff --git a/m4/frexpl.m4 b/m4/frexpl.m4 -index a4f2bd8..c6bdff6 100644 ---- a/m4/frexpl.m4 -+++ b/m4/frexpl.m4 -@@ -1,4 +1,4 @@ --# frexpl.m4 serial 7 -+# frexpl.m4 serial 8 - dnl Copyright (C) 2007-2008 Free Software Foundation, Inc. - dnl This file is free software; the Free Software Foundation - dnl gives unlimited permission to copy and/or distribute it, -@@ -106,7 +106,13 @@ AC_DEFUN([gl_FUNC_FREXPL_WORKS], - AC_CACHE_CHECK([whether frexpl works], [gl_cv_func_frexpl_works], - [ - AC_TRY_RUN([ -+#include - #include -+/* Override the values of , like done in float.in.h. */ -+#if defined __i386__ && (defined __BEOS__ || defined __OpenBSD__) -+# undef LDBL_MIN_EXP -+# define LDBL_MIN_EXP (-16381) -+#endif - extern long double frexpl (long double, int *); - int main() - { diff --git a/testsuite.diff b/testsuite.diff deleted file mode 100644 index 136c740..0000000 --- a/testsuite.diff +++ /dev/null @@ -1,22 +0,0 @@ -commit 76576ba2f5e270bfb78e46604392d0258bbf6320 -Author: Jim Meyering -Date: Sat Mar 29 00:11:15 2008 +0100 - - Work around a recent glibc/getopt.c diagnostic change. - - * tests/misc/factor: Map new "-- '1'" to expected "-- 1". - - Signed-off-by: Jim Meyering - -diff --git a/tests/misc/factor b/tests/misc/factor -index a350ca9..de3f376 100755 ---- a/tests/misc/factor -+++ b/tests/misc/factor -@@ -65,6 +65,7 @@ my @Tests = - ['x', '4294966896', {OUT => '2 2 2 2 3 3 3 11 607 1489'}], - ['y', '4294966998', {OUT => '2 3 7 3917 26107'}], - ['z', '-1', -+ {ERR_SUBST => q!s/'1'/1/!}, # map newer glibc diagnostic to expected. - {ERR => "$prog: invalid option -- 1\n" - . "Try `$prog --help' for more information.\n"}, - {EXIT => 1}],