diff --git a/coreutils-8.31.tar.xz b/coreutils-8.31.tar.xz deleted file mode 100644 index 26b0f1e..0000000 --- a/coreutils-8.31.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ff7a9c918edce6b4f4b2725e3f9b37b0c4d193531cac49a48b56c4d0d3a9e9fd -size 5410140 diff --git a/coreutils-8.31.tar.xz.sig b/coreutils-8.31.tar.xz.sig deleted file mode 100644 index 8fcc8ec..0000000 --- a/coreutils-8.31.tar.xz.sig +++ /dev/null @@ -1,17 +0,0 @@ ------BEGIN PGP SIGNATURE----- -Version: GnuPG v2 - -iQIcBAABCAAGBQJchaqkAAoJEN9v2XEwYDfZKBMQAJNjmYU6VrbHvlSJm1d+9Qch -rvVtE5VGsTj3jUj1dh9MpuN9GhJifWJat9DEKUat0J4Z5G8d55LvyzQJppby2az2 -kwbp/ffK0wR1tfGNii3Hop3pMVizqJn+LbT01qcS3E7tVQ2nJP/JVIeXOtOf9kJk -gPviDaqO8OUiV2l3gCwLtuOETKHXRGyraWRxCb9ZxOS12Gspqfwui7t4jQUDf2Ge -Kvhcawas+XomGdWx+io/VxwkOZkOCr9vQdMM7ZqLDnu+d7nGsnPMxxdGcP72WBnV -1LxFxHIel52yuRh3T1RggQMKxXPFPEyDRgaBNN0Yfk3a2CHFHf+YtySgLzKSqyS5 -1P5syvSbNj9ASEuX428lpwI3EC5G3T9W/MLTKUpwVhfU8/WELI261F95dnFIfoar -mMPqbBMHwHpIasJfDy60m8H8/z8PEOmpRP0xfAuOtf47YpDLsH+AvrAJM4CH9kkS -lysMUZITyIqUBSoUs8mVygV7b4mq2X2US0Mkja/hDFAcq2O7m2eyvi61z7Oa1Y/r -tV+q/XS8ZTOtSTBBZzRVTJDPno1ZwFBl/MIiD5FgF7szgiR2z0KVMfAlVBdQwxKw -Mj6N/HYeP6yE3g9I5+8LmRLwQcXeC2B0ZzpvGE7DaKd5aFDC6YVDD8wyLEQFDAav -XGtN62+yfXArdYVjXygm -=LVk4 ------END PGP SIGNATURE----- diff --git a/coreutils-8.32.tar.xz b/coreutils-8.32.tar.xz new file mode 100644 index 0000000..ade8076 --- /dev/null +++ b/coreutils-8.32.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4458d8de7849df44ccab15e16b1548b285224dbba5f08fac070c1c0e0bcc4cfa +size 5547836 diff --git a/coreutils-8.32.tar.xz.sig b/coreutils-8.32.tar.xz.sig new file mode 100644 index 0000000..531e238 --- /dev/null +++ b/coreutils-8.32.tar.xz.sig @@ -0,0 +1,16 @@ +-----BEGIN PGP SIGNATURE----- + +iQIzBAABCAAdFiEEbDfcEhIaUAa8HbgE32/ZcTBgN9kFAl5hC5MACgkQ32/ZcTBg +N9n92Q//Td2GE1f8AZKkxCNI76Q/TqbxAwhjbkR+KdzvsyMePmgHcMgHG6sO2MNF +g6DIBmHpO3vWGzvUxUZRRhuW5QBOnMxHb/WXZ0p/g45d5MQdn4i0dA0wUJgByOqn +/WVfygNg9mrWFx/uTeCdhrwL11m71C7j/eQVu7Wr5DIb20VJ8+nVC2IWW33ZvxRj +Goa0wwDpeeD9qYe/Y+E5ZyhDYHJGRmNAlS03SXLO3+RfsbZFwdQEtzvr+v1VN6/S +9OsoI/GLdRjY1tByppaoZ63ZybB6iF5zZfJiWDF7Nw4MduJpjZQDSywiNleJ9vOi +fwR1180PjMV6aTXvPwqbqQxZjDl7nqvO36ghlTvErJbqdJVIYxmUGNjeJyjqI85l +Lhckh0GWos9K/kl13Ry9KWsxNQgfjNhtgjXGh+W47ojrho2kCiK5BTwDFeVU0jtU +H/1EePSGAIUF/Sfjz3rmGgLaaBwPiRiyzEIuZMyd4NCJWwfOTqgOshOYw15GCWYq +wGesN/4LWzEja7Au5lHP7imXjP0bp4qE/sYrOb4WzVVLCn+z2hu6SEIzjJzSm+D+ +8Wv3Ia1/ypVpR+Z7gUt7VtEvI8zAwlySd/6Jw5U7TL0rzvZsTVWmCvEjPp+o3jCB +Fy/4ybao1gowBFtT1AtPMmxmiJ41KWCxLFrTuGJpFYCGvBH2y8s= +=yHV6 +-----END PGP SIGNATURE----- diff --git a/coreutils-disable_tests.patch b/coreutils-disable_tests.patch index 7d54cba..efb32e8 100644 --- a/coreutils-disable_tests.patch +++ b/coreutils-disable_tests.patch @@ -6,7 +6,7 @@ Index: gnulib-tests/gnulib.mk =================================================================== --- gnulib-tests/gnulib.mk.orig +++ gnulib-tests/gnulib.mk -@@ -939,10 +939,10 @@ EXTRA_DIST += test-getloadavg.c signatur +@@ -951,10 +951,10 @@ EXTRA_DIST += test-getloadavg.c signatur ## begin gnulib module getlogin-tests diff --git a/coreutils-getaddrinfo.patch b/coreutils-getaddrinfo.patch index 1b44df8..410d377 100644 --- a/coreutils-getaddrinfo.patch +++ b/coreutils-getaddrinfo.patch @@ -6,7 +6,7 @@ Index: gnulib-tests/test-getaddrinfo.c =================================================================== --- gnulib-tests/test-getaddrinfo.c.orig +++ gnulib-tests/test-getaddrinfo.c -@@ -91,11 +91,7 @@ simple (char const *host, char const *se +@@ -93,11 +93,7 @@ simple (char const *host, char const *se the test merely because someone is down the country on their in-law's farm. */ if (res == EAI_AGAIN) diff --git a/coreutils-i18n.patch b/coreutils-i18n.patch index b9ef041..965d65b 100644 --- a/coreutils-i18n.patch +++ b/coreutils-i18n.patch @@ -13,7 +13,7 @@ src/pr.c | 443 ++++++++++++++++++++++--- src/sort.c | 772 +++++++++++++++++++++++++++++++++++++++++--- src/unexpand.c | 101 ++++- - src/uniq.c | 265 ++++++++++++++- + src/uniq.c | 119 ++++++ tests/expand/mb.sh | 183 ++++++++++ tests/i18n/sort.sh | 29 + tests/local.mk | 4 @@ -27,7 +27,7 @@ tests/misc/uniq.pl | 55 +++ tests/pr/pr-tests.pl | 49 ++ tests/unexpand/mb.sh | 172 +++++++++ - 29 files changed, 3772 insertions(+), 216 deletions(-) + 29 files changed, 3632 insertions(+), 210 deletions(-) create mode 100644 lib/mbfile.c create mode 100644 lib/mbfile.h create mode 100644 m4/mbfile.m4 @@ -52,7 +52,7 @@ Index: configure.ac =================================================================== --- configure.ac.orig +++ configure.ac -@@ -438,6 +438,8 @@ fi +@@ -446,6 +446,8 @@ fi # I'm leaving it here for now. This whole thing needs to be modernized... gl_WINSIZE_IN_PTEM @@ -2091,7 +2091,7 @@ Index: src/join.c } putchar (eolchar); } -@@ -1099,20 +1345,43 @@ main (int argc, char **argv) +@@ -1098,20 +1344,43 @@ main (int argc, char **argv) case 't': { @@ -2173,8 +2173,8 @@ Index: src/pr.c #include "system.h" #include "die.h" #include "error.h" -@@ -324,6 +342,18 @@ - #include "xstrtol.h" +@@ -325,6 +343,18 @@ + #include "xstrtol-error.h" #include "xdectoint.h" +/* Some systems, like BeOS, have multibyte encodings but lack mbstate_t. */ @@ -2192,7 +2192,7 @@ Index: src/pr.c /* The official name of this program (e.g., no 'g' prefix). */ #define PROGRAM_NAME "pr" -@@ -416,7 +446,20 @@ struct COLUMN +@@ -417,7 +447,20 @@ struct COLUMN typedef struct COLUMN COLUMN; @@ -2214,7 +2214,7 @@ Index: src/pr.c static bool read_line (COLUMN *p); static bool print_page (void); static bool print_stored (COLUMN *p); -@@ -428,6 +471,7 @@ static void add_line_number (COLUMN *p); +@@ -429,6 +472,7 @@ static void add_line_number (COLUMN *p); static void getoptnum (const char *n_str, int min, int *num, const char *errfmt); static void getoptarg (char *arg, char switch_char, char *character, @@ -2222,7 +2222,7 @@ Index: src/pr.c int *number); static void print_files (int number_of_files, char **av); static void init_parameters (int number_of_files); -@@ -441,7 +485,6 @@ static void store_char (char c); +@@ -442,7 +486,6 @@ static void store_char (char c); static void pad_down (unsigned int lines); static void read_rest_of_line (COLUMN *p); static void skip_read (COLUMN *p, int column_number); @@ -2230,7 +2230,7 @@ Index: src/pr.c static void cleanup (void); static void print_sep_string (void); static void separator_string (const char *optarg_S); -@@ -453,7 +496,7 @@ static COLUMN *column_vector; +@@ -454,7 +497,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]. */ @@ -2239,7 +2239,7 @@ Index: src/pr.c /* Index of the position in buff where the next character will be stored. */ -@@ -557,7 +600,7 @@ static int chars_per_column; +@@ -558,7 +601,7 @@ static int chars_per_column; static bool untabify_input = false; /* (-e) The input tab character. */ @@ -2248,7 +2248,7 @@ Index: src/pr.c /* (-e) Tabstops are at chars_per_tab, 2*chars_per_tab, 3*chars_per_tab, ... where the leftmost column is 1. */ -@@ -567,7 +610,10 @@ static int chars_per_input_tab = 8; +@@ -568,7 +611,10 @@ static int chars_per_input_tab = 8; static bool tabify_output = false; /* (-i) The output tab character. */ @@ -2260,7 +2260,7 @@ Index: src/pr.c /* (-i) The width of the output tab. */ static int chars_per_output_tab = 8; -@@ -637,7 +683,13 @@ static int line_number; +@@ -638,7 +684,13 @@ static int line_number; static bool numbered_lines = false; /* (-n) Character which follows each line number. */ @@ -2275,7 +2275,7 @@ Index: src/pr.c /* (-n) line counting starts with 1st line of input file (not with 1st line of 1st page printed). */ -@@ -690,6 +742,7 @@ static bool use_col_separator = false; +@@ -691,6 +743,7 @@ static bool use_col_separator = false; -a|COLUMN|-m is a 'space' and with the -J option a 'tab'. */ static char const *col_sep_string = ""; static int col_sep_length = 0; @@ -2283,7 +2283,7 @@ Index: src/pr.c static char *column_separator = (char *) " "; static char *line_separator = (char *) "\t"; -@@ -851,6 +904,13 @@ separator_string (const char *optarg_S) +@@ -852,6 +905,13 @@ separator_string (const char *optarg_S) integer_overflow (); col_sep_length = len; col_sep_string = optarg_S; @@ -2297,7 +2297,7 @@ Index: src/pr.c } int -@@ -875,6 +935,21 @@ main (int argc, char **argv) +@@ -876,6 +936,21 @@ main (int argc, char **argv) atexit (close_stdout); @@ -2319,7 +2319,7 @@ Index: src/pr.c n_files = 0; file_names = (argc > 1 ? xnmalloc (argc - 1, sizeof (char *)) -@@ -951,8 +1026,12 @@ main (int argc, char **argv) +@@ -952,8 +1027,12 @@ main (int argc, char **argv) break; case 'e': if (optarg) @@ -2334,7 +2334,7 @@ Index: src/pr.c /* Could check tab width > 0. */ untabify_input = true; break; -@@ -965,8 +1044,12 @@ main (int argc, char **argv) +@@ -966,8 +1045,12 @@ main (int argc, char **argv) break; case 'i': if (optarg) @@ -2349,7 +2349,7 @@ Index: src/pr.c /* Could check tab width > 0. */ tabify_output = true; break; -@@ -984,8 +1067,8 @@ main (int argc, char **argv) +@@ -985,8 +1068,8 @@ main (int argc, char **argv) case 'n': numbered_lines = true; if (optarg) @@ -2360,7 +2360,7 @@ Index: src/pr.c break; case 'N': skip_count = false; -@@ -1010,6 +1093,7 @@ main (int argc, char **argv) +@@ -1011,6 +1094,7 @@ main (int argc, char **argv) /* Reset an additional input of -s, -S dominates -s */ col_sep_string = ""; col_sep_length = 0; @@ -2368,7 +2368,7 @@ Index: src/pr.c use_col_separator = true; if (optarg) separator_string (optarg); -@@ -1165,10 +1249,45 @@ getoptnum (const char *n_str, int min, i +@@ -1166,10 +1250,45 @@ getoptnum (const char *n_str, int min, i a number. */ static void @@ -2416,7 +2416,7 @@ Index: src/pr.c if (*arg) { long int tmp_long; -@@ -1190,6 +1309,11 @@ static void +@@ -1191,6 +1310,11 @@ static void init_parameters (int number_of_files) { int chars_used_by_number = 0; @@ -2428,7 +2428,7 @@ Index: src/pr.c lines_per_body = lines_per_page - lines_per_header - lines_per_footer; if (lines_per_body <= 0) -@@ -1227,7 +1351,7 @@ init_parameters (int number_of_files) +@@ -1228,7 +1352,7 @@ init_parameters (int number_of_files) else col_sep_string = column_separator; @@ -2437,7 +2437,7 @@ Index: src/pr.c use_col_separator = true; } /* It's rather pointless to define a TAB separator with column -@@ -1257,11 +1381,11 @@ init_parameters (int number_of_files) +@@ -1258,11 +1382,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. */ @@ -2451,7 +2451,7 @@ Index: src/pr.c /* The number is part of the column width unless we are printing files in parallel. */ -@@ -1270,7 +1394,7 @@ init_parameters (int number_of_files) +@@ -1271,7 +1395,7 @@ init_parameters (int number_of_files) } int sep_chars, useful_chars; @@ -2460,7 +2460,7 @@ Index: src/pr.c sep_chars = INT_MAX; if (INT_SUBTRACT_WRAPV (chars_per_line - chars_used_by_number, sep_chars, &useful_chars)) -@@ -1293,7 +1417,7 @@ init_parameters (int number_of_files) +@@ -1294,7 +1418,7 @@ init_parameters (int number_of_files) We've to use 8 as the lower limit, if we use chars_per_default_tab = 8 to expand a tab which is not an input_tab-char. */ free (clump_buff); @@ -2469,7 +2469,7 @@ Index: src/pr.c } /* Open the necessary files, -@@ -1399,7 +1523,7 @@ init_funcs (void) +@@ -1400,7 +1524,7 @@ init_funcs (void) /* Enlarge p->start_position of first column to use the same form of padding_not_printed with all columns. */ @@ -2478,7 +2478,7 @@ Index: src/pr.c /* This loop takes care of all but the rightmost column. */ -@@ -1433,7 +1557,7 @@ init_funcs (void) +@@ -1434,7 +1558,7 @@ init_funcs (void) } else { @@ -2487,7 +2487,7 @@ Index: src/pr.c h_next = h + chars_per_column; } } -@@ -1724,9 +1848,9 @@ static void +@@ -1725,9 +1849,9 @@ static void align_column (COLUMN *p) { padding_not_printed = p->start_position; @@ -2499,7 +2499,7 @@ Index: src/pr.c padding_not_printed = ANYWHERE; } -@@ -2001,13 +2125,13 @@ store_char (char c) +@@ -2002,13 +2126,13 @@ store_char (char c) /* May be too generous. */ buff = X2REALLOC (buff, &buff_allocated); } @@ -2515,7 +2515,7 @@ Index: src/pr.c char *s; int num_width; -@@ -2024,22 +2148,24 @@ add_line_number (COLUMN *p) +@@ -2025,22 +2149,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. */ @@ -2544,7 +2544,7 @@ Index: src/pr.c output_position = POS_AFTER_TAB (chars_per_output_tab, output_position); } -@@ -2198,7 +2324,7 @@ print_white_space (void) +@@ -2199,7 +2325,7 @@ print_white_space (void) while (goal - h_old > 1 && (h_new = POS_AFTER_TAB (chars_per_output_tab, h_old)) <= goal) { @@ -2553,7 +2553,7 @@ Index: src/pr.c h_old = h_new; } while (++h_old <= goal) -@@ -2218,6 +2344,7 @@ print_sep_string (void) +@@ -2219,6 +2345,7 @@ print_sep_string (void) { char const *s = col_sep_string; int l = col_sep_length; @@ -2561,7 +2561,7 @@ Index: src/pr.c if (separators_not_printed <= 0) { -@@ -2229,6 +2356,7 @@ print_sep_string (void) +@@ -2230,6 +2357,7 @@ print_sep_string (void) { for (; separators_not_printed > 0; --separators_not_printed) { @@ -2569,7 +2569,7 @@ Index: src/pr.c while (l-- > 0) { /* 3 types of sep_strings: spaces only, spaces and chars, -@@ -2242,12 +2370,15 @@ print_sep_string (void) +@@ -2243,12 +2371,15 @@ print_sep_string (void) } else { @@ -2586,7 +2586,7 @@ Index: src/pr.c /* sep_string ends with some spaces */ if (spaces_not_printed > 0) print_white_space (); -@@ -2275,7 +2406,7 @@ print_clump (COLUMN *p, int n, char *clu +@@ -2276,7 +2407,7 @@ print_clump (COLUMN *p, int n, char *clu required number of tabs and spaces. */ static void @@ -2595,7 +2595,7 @@ Index: src/pr.c { if (tabify_output) { -@@ -2299,6 +2430,74 @@ print_char (char c) +@@ -2300,6 +2431,74 @@ print_char (char c) putchar (c); } @@ -2670,7 +2670,7 @@ Index: src/pr.c /* Skip to page PAGE before printing. PAGE may be larger than total number of pages. */ -@@ -2476,9 +2675,9 @@ read_line (COLUMN *p) +@@ -2477,9 +2676,9 @@ read_line (COLUMN *p) align_empty_cols = false; } @@ -2682,7 +2682,7 @@ Index: src/pr.c padding_not_printed = ANYWHERE; } -@@ -2547,7 +2746,7 @@ print_stored (COLUMN *p) +@@ -2548,7 +2747,7 @@ print_stored (COLUMN *p) COLUMN *q; int line = p->current_line++; @@ -2691,7 +2691,7 @@ Index: src/pr.c /* FIXME UMR: Uninitialized memory read: * This is occurring while in: -@@ -2559,7 +2758,7 @@ print_stored (COLUMN *p) +@@ -2560,7 +2759,7 @@ print_stored (COLUMN *p) xmalloc [xmalloc.c:94] init_store_cols [pr.c:1648] */ @@ -2700,7 +2700,7 @@ Index: src/pr.c pad_vertically = true; -@@ -2579,9 +2778,9 @@ print_stored (COLUMN *p) +@@ -2580,9 +2779,9 @@ print_stored (COLUMN *p) } } @@ -2712,7 +2712,7 @@ Index: src/pr.c padding_not_printed = ANYWHERE; } -@@ -2594,8 +2793,8 @@ print_stored (COLUMN *p) +@@ -2595,8 +2794,8 @@ print_stored (COLUMN *p) if (spaces_not_printed == 0) { output_position = p->start_position + end_vector[line]; @@ -2723,7 +2723,7 @@ Index: src/pr.c } return true; -@@ -2614,7 +2813,7 @@ print_stored (COLUMN *p) +@@ -2615,7 +2814,7 @@ print_stored (COLUMN *p) number of characters is 1.) */ static int @@ -2732,7 +2732,7 @@ Index: src/pr.c { unsigned char uc = c; char *s = clump_buff; -@@ -2624,10 +2823,10 @@ char_to_clump (char c) +@@ -2625,10 +2824,10 @@ char_to_clump (char c) int chars; int chars_per_c = 8; @@ -2745,7 +2745,7 @@ Index: src/pr.c { width = TAB_WIDTH (chars_per_c, input_position); -@@ -2708,6 +2907,164 @@ char_to_clump (char c) +@@ -2709,6 +2908,164 @@ char_to_clump (char c) return chars; } @@ -2929,7 +2929,7 @@ Index: src/sort.c #include "system.h" #include "argmatch.h" #include "die.h" -@@ -161,14 +169,39 @@ static int decimal_point; +@@ -157,14 +165,39 @@ static int decimal_point; /* Thousands separator; if -1, then there isn't one. */ static int thousands_sep; @@ -2970,7 +2970,7 @@ Index: src/sort.c /* The kind of blanks for '-b' to skip in various options. */ enum blanktype { bl_start, bl_end, bl_both }; -@@ -342,13 +375,11 @@ static bool reverse; +@@ -338,13 +371,11 @@ static bool reverse; they were read if all keys compare equal. */ static bool stable; @@ -2987,7 +2987,7 @@ Index: src/sort.c /* Flag to remove consecutive duplicate lines from the output. Only the last of a sequence of equal lines will be output. */ -@@ -806,6 +837,46 @@ reap_all (void) +@@ -802,6 +833,46 @@ reap_all (void) reap (-1); } @@ -3034,7 +3034,7 @@ Index: src/sort.c /* Clean up any remaining temporary files. */ static void -@@ -1274,7 +1345,7 @@ zaptemp (char const *name) +@@ -1270,7 +1341,7 @@ zaptemp (char const *name) free (node); } @@ -3043,7 +3043,7 @@ Index: src/sort.c static int struct_month_cmp (void const *m1, void const *m2) -@@ -1289,7 +1360,7 @@ struct_month_cmp (void const *m1, void c +@@ -1285,7 +1356,7 @@ struct_month_cmp (void const *m1, void c /* Initialize the character class tables. */ static void @@ -3052,7 +3052,7 @@ Index: src/sort.c { size_t i; -@@ -1301,7 +1372,7 @@ inittables (void) +@@ -1297,7 +1368,7 @@ inittables (void) fold_toupper[i] = toupper (i); } @@ -3061,7 +3061,7 @@ Index: src/sort.c /* If we're not in the "C" locale, read different names for months. */ if (hard_LC_TIME) { -@@ -1383,6 +1454,84 @@ specify_nmerge (int oi, char c, char con +@@ -1379,6 +1450,84 @@ specify_nmerge (int oi, char c, char con xstrtol_fatal (e, oi, c, long_options, s); } @@ -3146,7 +3146,7 @@ Index: src/sort.c /* Specify the amount of main memory to use when sorting. */ static void specify_sort_size (int oi, char c, char const *s) -@@ -1614,7 +1763,7 @@ buffer_linelim (struct buffer const *buf +@@ -1610,7 +1759,7 @@ buffer_linelim (struct buffer const *buf by KEY in LINE. */ static char * @@ -3155,7 +3155,7 @@ Index: src/sort.c { char *ptr = line->text, *lim = ptr + line->length - 1; size_t sword = key->sword; -@@ -1623,10 +1772,10 @@ begfield (struct line const *line, struc +@@ -1619,10 +1768,10 @@ begfield (struct line const *line, struc /* The leading field separator itself is included in a field when -t is absent. */ @@ -3168,7 +3168,7 @@ Index: src/sort.c ++ptr; if (ptr < lim) ++ptr; -@@ -1652,11 +1801,70 @@ begfield (struct line const *line, struc +@@ -1648,11 +1797,70 @@ begfield (struct line const *line, struc return ptr; } @@ -3240,7 +3240,7 @@ Index: src/sort.c { char *ptr = line->text, *lim = ptr + line->length - 1; size_t eword = key->eword, echar = key->echar; -@@ -1671,10 +1879,10 @@ limfield (struct line const *line, struc +@@ -1667,10 +1875,10 @@ limfield (struct line const *line, struc 'beginning' is the first character following the delimiting TAB. Otherwise, leave PTR pointing at the first 'blank' character after the preceding field. */ @@ -3253,7 +3253,7 @@ Index: src/sort.c ++ptr; if (ptr < lim && (eword || echar)) ++ptr; -@@ -1720,10 +1928,10 @@ limfield (struct line const *line, struc +@@ -1716,10 +1924,10 @@ limfield (struct line const *line, struc */ /* Make LIM point to the end of (one byte past) the current field. */ @@ -3266,7 +3266,7 @@ Index: src/sort.c if (newlim) lim = newlim; } -@@ -1754,6 +1962,130 @@ limfield (struct line const *line, struc +@@ -1750,6 +1958,130 @@ limfield (struct line const *line, struc return ptr; } @@ -3397,7 +3397,7 @@ Index: src/sort.c /* 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 -@@ -1840,8 +2172,22 @@ fillbuf (struct buffer *buf, FILE *fp, c +@@ -1836,8 +2168,22 @@ fillbuf (struct buffer *buf, FILE *fp, c else { if (key->skipsblanks) @@ -3422,7 +3422,7 @@ Index: src/sort.c line->keybeg = line_start; } } -@@ -1975,12 +2321,10 @@ find_unit_order (char const *number) +@@ -1971,12 +2317,10 @@ find_unit_order (char const *number) < K/k < M < G < T < P < E < Z < Y */ static int @@ -3438,7 +3438,7 @@ Index: src/sort.c int diff = find_unit_order (a) - find_unit_order (b); return (diff ? diff : strnumcmp (a, b, decimal_point, thousands_sep)); -@@ -1991,7 +2335,7 @@ human_numcompare (char const *a, char co +@@ -1987,7 +2331,7 @@ human_numcompare (char const *a, char co hideously fast. */ static int @@ -3447,7 +3447,7 @@ Index: src/sort.c { while (blanks[to_uchar (*a)]) a++; -@@ -2001,6 +2345,25 @@ numcompare (char const *a, char const *b +@@ -1997,6 +2341,25 @@ numcompare (char const *a, char const *b return strnumcmp (a, b, decimal_point, thousands_sep); } @@ -3473,7 +3473,7 @@ Index: src/sort.c /* Work around a problem whereby the long double value returned by glibc's strtold ("NaN", ...) contains uninitialized bits: clear all bytes of A and B before calling strtold. FIXME: remove this function if -@@ -2051,7 +2414,7 @@ general_numcompare (char const *sa, char +@@ -2047,7 +2410,7 @@ general_numcompare (char const *sa, char Return 0 if the name in S is not recognized. */ static int @@ -3482,7 +3482,7 @@ Index: src/sort.c { size_t lo = 0; size_t hi = MONTHS_PER_YEAR; -@@ -2327,15 +2690,14 @@ debug_key (struct line const *line, stru +@@ -2323,15 +2686,14 @@ debug_key (struct line const *line, stru char saved = *lim; *lim = '\0'; @@ -3500,7 +3500,7 @@ Index: src/sort.c else if (key->general_numeric) ignore_value (strtold (beg, &tighter_lim)); else if (key->numeric || key->human_numeric) -@@ -2469,7 +2831,7 @@ key_warnings (struct keyfield const *gke +@@ -2465,7 +2827,7 @@ key_warnings (struct keyfield const *gke /* Warn about significant leading blanks. */ bool implicit_skip = key_numeric (key) || key->month; bool line_offset = key->eword == 0 && key->echar != 0; /* -k1.x,1.y */ @@ -3509,7 +3509,7 @@ Index: src/sort.c && ((!key->skipsblanks && !implicit_skip) || (!key->skipsblanks && key->schar) || (!key->skipeblanks && key->echar))) -@@ -2527,11 +2889,87 @@ key_warnings (struct keyfield const *gke +@@ -2523,11 +2885,87 @@ key_warnings (struct keyfield const *gke error (0, 0, _("option '-r' only applies to last-resort comparison")); } @@ -3598,7 +3598,7 @@ Index: src/sort.c { struct keyfield *key = keylist; -@@ -2616,7 +3054,7 @@ keycompare (struct line const *a, struct +@@ -2612,7 +3050,7 @@ keycompare (struct line const *a, struct else if (key->human_numeric) diff = human_numcompare (ta, tb); else if (key->month) @@ -3607,7 +3607,7 @@ Index: src/sort.c else if (key->random) diff = compare_random (ta, tlena, tb, tlenb); else if (key->version) -@@ -2732,6 +3170,211 @@ keycompare (struct line const *a, struct +@@ -2728,6 +3166,211 @@ keycompare (struct line const *a, struct return key->reverse ? -diff : diff; } @@ -3819,7 +3819,7 @@ Index: src/sort.c /* Compare two lines A and B, returning negative, zero, or positive depending on whether A compares less than, equal to, or greater than B. */ -@@ -2759,7 +3402,7 @@ compare (struct line const *a, struct li +@@ -2755,7 +3398,7 @@ compare (struct line const *a, struct li diff = - NONZERO (blen); else if (blen == 0) diff = 1; @@ -3828,7 +3828,7 @@ Index: src/sort.c { /* xmemcoll0 is a performance enhancement as it will not unconditionally write '\0' after the -@@ -4149,6 +4792,7 @@ set_ordering (char const *s, struct keyf +@@ -4145,6 +4788,7 @@ set_ordering (char const *s, struct keyf break; case 'f': key->translate = fold_toupper; @@ -3836,7 +3836,7 @@ Index: src/sort.c break; case 'g': key->general_numeric = true; -@@ -4228,7 +4872,7 @@ main (int argc, char **argv) +@@ -4224,7 +4868,7 @@ main (int argc, char **argv) initialize_exit_failure (SORT_FAILURE); hard_LC_COLLATE = hard_locale (LC_COLLATE); @@ -3845,7 +3845,7 @@ Index: src/sort.c hard_LC_TIME = hard_locale (LC_TIME); #endif -@@ -4249,6 +4893,29 @@ main (int argc, char **argv) +@@ -4245,6 +4889,29 @@ main (int argc, char **argv) thousands_sep = -1; } @@ -3875,7 +3875,7 @@ Index: src/sort.c have_read_stdin = false; inittables (); -@@ -4523,13 +5190,34 @@ main (int argc, char **argv) +@@ -4519,13 +5186,34 @@ main (int argc, char **argv) case 't': { @@ -3914,7 +3914,7 @@ Index: src/sort.c else { /* Provoke with 'sort -txx'. Complain about -@@ -4540,9 +5228,11 @@ main (int argc, char **argv) +@@ -4536,9 +5224,11 @@ main (int argc, char **argv) quote (optarg)); } } @@ -3928,7 +3928,7 @@ Index: src/sort.c } break; -@@ -4771,12 +5461,10 @@ main (int argc, char **argv) +@@ -4767,12 +5457,10 @@ main (int argc, char **argv) sort (files, nfiles, outfile, nthreads); } @@ -4169,12 +4169,8 @@ Index: src/uniq.c #include "system.h" #include "argmatch.h" #include "linebuffer.h" -@@ -32,9 +43,21 @@ - #include "stdio--.h" - #include "xmemcoll.h" - #include "xstrtol.h" --#include "memcasecmp.h" -+#include "xmemcoll.h" +@@ -33,6 +44,18 @@ + #include "memcasecmp.h" #include "quote.h" +/* MB_LEN_MAX is incorrectly defined to be 1 in at least one GCC @@ -4192,7 +4188,7 @@ Index: src/uniq.c /* The official name of this program (e.g., no 'g' prefix). */ #define PROGRAM_NAME "uniq" -@@ -144,6 +167,10 @@ enum +@@ -139,6 +162,10 @@ enum GROUP_OPTION = CHAR_MAX + 1 }; @@ -4203,7 +4199,7 @@ Index: src/uniq.c static struct option const longopts[] = { {"count", no_argument, NULL, 'c'}, -@@ -260,7 +287,7 @@ size_opt (char const *opt, char const *m +@@ -253,7 +280,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 * _GL_ATTRIBUTE_PURE @@ -4212,7 +4208,7 @@ Index: src/uniq.c { size_t count; char const *lp = line->buffer; -@@ -280,6 +307,83 @@ find_field (struct linebuffer const *lin +@@ -273,6 +300,83 @@ find_field (struct linebuffer const *lin return line->buffer + i; } @@ -4296,227 +4292,7 @@ Index: src/uniq.c /* 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. -@@ -288,6 +392,8 @@ find_field (struct linebuffer const *lin - static bool - different (char *old, char *new, size_t oldlen, size_t newlen) - { -+ char *copy_old, *copy_new; -+ - if (check_chars < oldlen) - oldlen = check_chars; - if (check_chars < newlen) -@@ -295,14 +401,103 @@ different (char *old, char *new, size_t - - if (ignore_case) - { -- /* FIXME: This should invoke strcoll somehow. */ -- return oldlen != newlen || memcasecmp (old, new, oldlen); -+ size_t i; -+ -+ copy_old = xmalloc (oldlen + 1); -+ copy_new = xmalloc (oldlen + 1); -+ -+ for (i = 0; i < oldlen; i++) -+ { -+ copy_old[i] = toupper (old[i]); -+ copy_new[i] = toupper (new[i]); -+ } -+ bool rc = xmemcoll (copy_old, oldlen, copy_new, newlen); -+ free (copy_old); -+ free (copy_new); -+ return rc; - } -- else if (hard_LC_COLLATE) -- return xmemcoll (old, oldlen, new, newlen) != 0; - else -- return oldlen != newlen || memcmp (old, new, oldlen); -+ { -+ copy_old = (char *)old; -+ copy_new = (char *)new; -+ } -+ -+ return xmemcoll (copy_old, oldlen, copy_new, newlen); -+ -+} -+ -+#if HAVE_MBRTOWC -+static int -+different_multi (const char *old, const char *new, size_t oldlen, size_t newlen, mbstate_t oldstate, mbstate_t newstate) -+{ -+ size_t i, j, chars; -+ const char *str[2]; -+ char *copy[2]; -+ size_t len[2]; -+ mbstate_t state[2]; -+ size_t mblength; -+ wchar_t wc, uwc; -+ mbstate_t state_bak; -+ -+ str[0] = old; -+ str[1] = new; -+ len[0] = oldlen; -+ len[1] = newlen; -+ state[0] = oldstate; -+ state[1] = newstate; -+ -+ for (i = 0; i < 2; i++) -+ { -+ copy[i] = xmalloc (len[i] + 1); -+ memset (copy[i], '\0', len[i] + 1); -+ -+ for (j = 0, chars = 0; j < len[i] && chars < check_chars; chars++) -+ { -+ state_bak = state[i]; -+ mblength = mbrtowc (&wc, str[i] + j, len[i] - j, &(state[i])); -+ -+ switch (mblength) -+ { -+ case (size_t)-1: -+ case (size_t)-2: -+ state[i] = state_bak; -+ /* Fall through */ -+ case 0: -+ mblength = 1; -+ break; -+ -+ default: -+ if (ignore_case) -+ { -+ uwc = towupper (wc); -+ -+ if (uwc != wc) -+ { -+ mbstate_t state_wc; -+ size_t mblen; -+ -+ memset (&state_wc, '\0', sizeof(mbstate_t)); -+ mblen = wcrtomb (copy[i] + j, uwc, &state_wc); -+ assert (mblen != (size_t)-1); -+ } -+ else -+ memcpy (copy[i] + j, str[i] + j, mblength); -+ } -+ else -+ memcpy (copy[i] + j, str[i] + j, mblength); -+ } -+ j += mblength; -+ } -+ copy[i][j] = '\0'; -+ len[i] = j; -+ } -+ int rc = xmemcoll (copy[0], len[0], copy[1], len[1]); -+ free (copy[0]); -+ free (copy[1]); -+ return rc; -+ - } -+#endif - - /* Output the line in linebuffer LINE to standard output - provided that the switches say it should be output. -@@ -367,19 +562,38 @@ check_file (const char *infile, const ch - char *prevfield IF_LINT ( = NULL); - size_t prevlen IF_LINT ( = 0); - bool first_group_printed = false; -+#if HAVE_MBRTOWC -+ mbstate_t prevstate; -+ -+ memset (&prevstate, '\0', sizeof (mbstate_t)); -+#endif - - while (!feof (stdin)) - { - char *thisfield; - size_t thislen; - bool new_group; -+#if HAVE_MBRTOWC -+ mbstate_t thisstate; -+#endif - - if (readlinebuffer_delim (thisline, stdin, delimiter) == 0) - break; - - thisfield = find_field (thisline); - thislen = thisline->length - 1 - (thisfield - thisline->buffer); -+#if HAVE_MBRTOWC -+ if (MB_CUR_MAX > 1) -+ { -+ thisstate = thisline->state; - -+ new_group = (prevline->length == 0 -+ || different_multi (thisfield, prevfield, -+ thislen, prevlen, -+ thisstate, prevstate)); -+ } -+ else -+#endif - new_group = (prevline->length == 0 - || different (thisfield, prevfield, thislen, prevlen)); - -@@ -397,6 +611,10 @@ check_file (const char *infile, const ch - SWAP_LINES (prevline, thisline); - prevfield = thisfield; - prevlen = thislen; -+#if HAVE_MBRTOWC -+ if (MB_CUR_MAX > 1) -+ prevstate = thisstate; -+#endif - first_group_printed = true; - } - } -@@ -409,17 +627,26 @@ check_file (const char *infile, const ch - size_t prevlen; - uintmax_t match_count = 0; - bool first_delimiter = true; -+#if HAVE_MBRTOWC -+ mbstate_t prevstate; -+#endif - - if (readlinebuffer_delim (prevline, stdin, delimiter) == 0) - goto closefiles; - prevfield = find_field (prevline); - prevlen = prevline->length - 1 - (prevfield - prevline->buffer); -+#if HAVE_MBRTOWC -+ prevstate = prevline->state; -+#endif - - while (!feof (stdin)) - { - bool match; - char *thisfield; - size_t thislen; -+#if HAVE_MBRTOWC -+ mbstate_t thisstate = thisline->state; -+#endif - if (readlinebuffer_delim (thisline, stdin, delimiter) == 0) - { - if (ferror (stdin)) -@@ -428,6 +655,14 @@ check_file (const char *infile, const ch - } - thisfield = find_field (thisline); - thislen = thisline->length - 1 - (thisfield - thisline->buffer); -+#if HAVE_MBRTOWC -+ if (MB_CUR_MAX > 1) -+ { -+ match = !different_multi (thisfield, prevfield, -+ thislen, prevlen, thisstate, prevstate); -+ } -+ else -+#endif - match = !different (thisfield, prevfield, thislen, prevlen); - match_count += match; - -@@ -460,6 +695,9 @@ check_file (const char *infile, const ch - SWAP_LINES (prevline, thisline); - prevfield = thisfield; - prevlen = thislen; -+#if HAVE_MBRTOWC -+ prevstate = thisstate; -+#endif - if (!match) - match_count = 0; - } -@@ -506,6 +744,19 @@ main (int argc, char **argv) +@@ -493,6 +597,19 @@ main (int argc, char **argv) atexit (close_stdout); @@ -4762,7 +4538,7 @@ Index: tests/local.mk =================================================================== --- tests/local.mk.orig +++ tests/local.mk -@@ -368,6 +368,8 @@ all_tests = \ +@@ -369,6 +369,8 @@ all_tests = \ tests/misc/sort-discrim.sh \ tests/misc/sort-files0-from.pl \ tests/misc/sort-float.sh \ @@ -4771,7 +4547,7 @@ Index: tests/local.mk tests/misc/sort-h-thousands-sep.sh \ tests/misc/sort-merge.pl \ tests/misc/sort-merge-fdlimit.sh \ -@@ -564,6 +566,7 @@ all_tests = \ +@@ -567,6 +569,7 @@ all_tests = \ tests/du/threshold.sh \ tests/du/trailing-slash.sh \ tests/du/two-args.sh \ @@ -4779,7 +4555,7 @@ Index: tests/local.mk tests/id/gnu-zero-uids.sh \ tests/id/no-context.sh \ tests/id/context.sh \ -@@ -709,6 +712,7 @@ all_tests = \ +@@ -714,6 +717,7 @@ all_tests = \ tests/touch/read-only.sh \ tests/touch/relative.sh \ tests/touch/trailing-slash.sh \ diff --git a/coreutils-invalid-ids.patch b/coreutils-invalid-ids.patch index c715835..731565d 100644 --- a/coreutils-invalid-ids.patch +++ b/coreutils-invalid-ids.patch @@ -21,8 +21,8 @@ Index: src/chgrp.c +++ src/chgrp.c @@ -89,7 +89,7 @@ parse_group (const char *name) { - unsigned long int tmp; - if (! (xstrtoul (name, NULL, 10, &tmp, "") == LONGINT_OK + uintmax_t tmp; + if (! (xstrtoumax (name, NULL, 10, &tmp, "") == LONGINT_OK - && tmp <= GID_T_MAX)) + && tmp <= GID_T_MAX && (gid_t) tmp != (gid_t) -1)) die (EXIT_FAILURE, 0, _("invalid group: %s"), diff --git a/coreutils-ls-restore-8.31-behavior-on-removed-dirs.patch b/coreutils-ls-restore-8.31-behavior-on-removed-dirs.patch new file mode 100644 index 0000000..ac4f6b7 --- /dev/null +++ b/coreutils-ls-restore-8.31-behavior-on-removed-dirs.patch @@ -0,0 +1,156 @@ +Upstream commits (squashed) after the release of coreutils-8.32: + [PATCH 1/2] ls: restore 8.31 behavior on removed directories + [PATCH 2/2] ls: improve removed-directory test +Remove this patch with the next coreutils release. + +Discussed at: + https://lists.gnu.org/archive/html/bug-coreutils/2020-03/msg00008.html + +Upstream commits: + https://git.savannah.gnu.org/cgit/coreutils.git/commit/?id=10fcb97 + https://git.savannah.gnu.org/cgit/coreutils.git/commit/?id=672819c + +commit 672819c73f2e94e61386dc0584bddf9da860cc26 (HEAD -> master, origin/master, origin/HEAD) +Author: Paul Eggert +Date: Sat Mar 7 10:29:51 2020 -0800 + + ls: improve removed-directory test + + * tests/ls/removed-directory.sh: Remove host_triplet test. + Skip this test if one cannot remove the working directory. + From a suggestion by Bernhard Voelker (Bug#39929). + +commit 10fcb97bd728f09d4a027eddf8ad2900f0819b0a +Author: Paul Eggert +Date: Thu Mar 5 17:25:29 2020 -0800 + + ls: restore 8.31 behavior on removed directories + + * NEWS: Mention this. + * src/ls.c: Do not include + (print_dir): Don't worry about whether the directory is removed. + * tests/ls/removed-directory.sh: Adjust to match new (i.e., old) + behavior. +--- + NEWS | 9 +++++++++ + src/ls.c | 22 ---------------------- + tests/ls/removed-directory.sh | 23 ++++++----------------- + 3 files changed, 15 insertions(+), 39 deletions(-) + +Index: NEWS +=================================================================== +--- NEWS.orig ++++ NEWS +@@ -1,5 +1,14 @@ + GNU coreutils NEWS -*- outline -*- + ++* Noteworthy downstream changes (on top of upstream coreutils-8.32) ++ ++** Changes in behavior ++ ++ On GNU/Linux systems, ls no longer issues an error message on ++ directory merely because it was removed. This reverts a change ++ that was made in release 8.32. ++ ++ + * Noteworthy changes in release 8.32 (2020-03-05) [stable] + + ** Bug fixes +Index: src/ls.c +=================================================================== +--- src/ls.c.orig ++++ src/ls.c +@@ -49,10 +49,6 @@ + # include + #endif + +-#ifdef __linux__ +-# include +-#endif +- + #include + #include + #include +@@ -2896,7 +2892,6 @@ print_dir (char const *name, char const + struct dirent *next; + uintmax_t total_blocks = 0; + static bool first = true; +- bool found_any_entries = false; + + errno = 0; + dirp = opendir (name); +@@ -2972,7 +2967,6 @@ print_dir (char const *name, char const + next = readdir (dirp); + if (next) + { +- found_any_entries = true; + if (! file_ignored (next->d_name)) + { + enum filetype type = unknown; +@@ -3018,22 +3012,6 @@ print_dir (char const *name, char const + if (errno != EOVERFLOW) + break; + } +-#ifdef __linux__ +- else if (! found_any_entries) +- { +- /* If readdir finds no directory entries at all, not even "." or +- "..", then double check that the directory exists. */ +- if (syscall (SYS_getdents, dirfd (dirp), NULL, 0) == -1 +- && errno != EINVAL) +- { +- /* We exclude EINVAL as that pertains to buffer handling, +- and we've passed NULL as the buffer for simplicity. +- ENOENT is returned if appropriate before buffer handling. */ +- file_failure (command_line_arg, _("reading directory %s"), name); +- } +- break; +- } +-#endif + else + break; + +Index: tests/ls/removed-directory.sh +=================================================================== +--- tests/ls/removed-directory.sh.orig ++++ tests/ls/removed-directory.sh +@@ -1,7 +1,7 @@ + #!/bin/sh +-# If ls is asked to list a removed directory (e.g. the parent process's +-# current working directory that has been removed by another process), it +-# emits an error message. ++# If ls is asked to list a removed directory (e.g., the parent process's ++# current working directory has been removed by another process), it ++# should not emit an error message merely because the directory is removed. + + # Copyright (C) 2020 Free Software Foundation, Inc. + +@@ -21,25 +21,14 @@ + . "${srcdir=.}/tests/init.sh"; path_prepend_ ./src + print_ver_ ls + +-case $host_triplet in +- *linux*) ;; +- *) skip_ 'non linux kernel' ;; +-esac +- +-LS_FAILURE=2 +- +-cat <<\EOF >exp-err || framework_failure_ +-ls: reading directory '.': No such file or directory +-EOF +- + cwd=$(pwd) + mkdir d || framework_failure_ + cd d || framework_failure_ +-rmdir ../d || framework_failure_ ++rmdir ../d || skip_ "can't remove working directory on this platform" + +-returns_ $LS_FAILURE ls >../out 2>../err || fail=1 ++ls >../out 2>../err || fail=1 + cd "$cwd" || framework_failure_ + compare /dev/null out || fail=1 +-compare exp-err err || fail=1 ++compare /dev/null err || fail=1 + + Exit $fail diff --git a/coreutils-remove_hostname_documentation.patch b/coreutils-remove_hostname_documentation.patch index e80a02e..39211ae 100644 --- a/coreutils-remove_hostname_documentation.patch +++ b/coreutils-remove_hostname_documentation.patch @@ -31,7 +31,7 @@ Index: doc/coreutils.texi * hostid invocation:: Print numeric host identifier * uptime invocation:: Print system uptime and load -@@ -15726,7 +15724,6 @@ information. +@@ -15761,7 +15759,6 @@ information. * arch invocation:: Print machine hardware name. * nproc invocation:: Print the number of processors. * uname invocation:: Print system information. @@ -39,7 +39,7 @@ Index: doc/coreutils.texi * hostid invocation:: Print numeric host identifier. * uptime invocation:: Print system uptime and load. @end menu -@@ -16588,15 +16585,6 @@ Note this is non-portable (even across G +@@ -16623,15 +16620,6 @@ Note this is non-portable (even across G Print the machine hardware name (sometimes called the hardware class or hardware type). @@ -55,7 +55,7 @@ Index: doc/coreutils.texi @item -p @itemx --processor @opindex -p -@@ -16650,34 +16638,6 @@ Print the kernel version. +@@ -16685,34 +16673,6 @@ Print the kernel version. @exitstatus diff --git a/coreutils-remove_kill_documentation.patch b/coreutils-remove_kill_documentation.patch index 586fb60..ee1089b 100644 --- a/coreutils-remove_kill_documentation.patch +++ b/coreutils-remove_kill_documentation.patch @@ -33,7 +33,7 @@ Index: doc/coreutils.texi Delaying * sleep invocation:: Delay for a specified time -@@ -18054,90 +18048,6 @@ the exit status of @var{command} otherwi +@@ -18089,90 +18083,6 @@ the exit status of @var{command} otherwi @end display diff --git a/coreutils-skip-gnulib-test-tls.patch b/coreutils-skip-gnulib-test-tls.patch index eee34b4..f951565 100644 --- a/coreutils-skip-gnulib-test-tls.patch +++ b/coreutils-skip-gnulib-test-tls.patch @@ -21,7 +21,7 @@ Index: gnulib-tests/gnulib.mk =================================================================== --- gnulib-tests/gnulib.mk.orig +++ gnulib-tests/gnulib.mk -@@ -2360,9 +2360,10 @@ EXTRA_DIST += test-timespec.c macros.h +@@ -2485,9 +2485,10 @@ EXTRA_DIST += test-timespec.c macros.h ## begin gnulib module tls-tests diff --git a/coreutils-tests-shorten-extreme-factor-tests.patch b/coreutils-tests-shorten-extreme-factor-tests.patch index ea97f79..c21c21b 100644 --- a/coreutils-tests-shorten-extreme-factor-tests.patch +++ b/coreutils-tests-shorten-extreme-factor-tests.patch @@ -16,7 +16,7 @@ Index: tests/local.mk =================================================================== --- tests/local.mk.orig +++ tests/local.mk -@@ -718,14 +718,9 @@ all_tests = \ +@@ -723,14 +723,9 @@ all_tests = \ # See tests/factor/create-test.sh. tf = tests/factor factor_tests = \ diff --git a/coreutils.changes b/coreutils.changes index 3af249b..63492aa 100644 --- a/coreutils.changes +++ b/coreutils.changes @@ -1,3 +1,130 @@ +------------------------------------------------------------------- +Mon Mar 9 07:17:46 UTC 2020 - Bernhard Voelker + +- Update to 8.32: + * Noteworthy changes in release 8.32 (2020-03-05) [stable] + + ** Bug fixes + + cp now copies /dev/fd/N correctly on platforms like Solaris where + it is a character-special file whose minor device number is N. + [bug introduced in fileutils-4.1.6] + + dd conv=fdatasync no longer reports a "Bad file descriptor" error + when fdatasync is interrupted, and dd now retries interrupted calls + to close, fdatasync, fstat and fsync instead of incorrectly + reporting an "Interrupted system call" error. + [bugs introduced in coreutils-6.0] + + df now correctly parses the /proc/self/mountinfo file for unusual entries + like ones with '\r' in a field value ("mount -t tmpfs tmpfs /foo$'\r'bar"), + when the source field is empty ('mount -t tmpfs "" /mnt'), and when the + filesystem type contains characters like a blank which need escaping. + [bugs introduced in coreutils-8.24 with the introduction of reading + the /proc/self/mountinfo file] + + factor again outputs immediately when stdout is a tty but stdin is not. + [bug introduced in coreutils-8.24] + + ln works again on old systems without O_DIRECTORY support (like Solaris 10), + and on systems where symlink ("x", ".") fails with errno == EINVAL + (like Solaris 10 and Solaris 11). + [bug introduced in coreutils-8.31] + + rmdir --ignore-fail-on-non-empty now works correctly for directories + that fail to be removed due to permission issues. Previously the exit status + was reversed, failing for non empty and succeeding for empty directories. + [bug introduced in coreutils-6.11] + + 'shuf -r -n 0 file' no longer mistakenly reads from standard input. + [bug introduced with the --repeat feature in coreutils-8.22] + + split no longer reports a "output file suffixes exhausted" error + when the specified number of files is evenly divisible by 10, 16, 26, + for --numeric, --hex, or default alphabetic suffixes respectively. + [bug introduced in coreutils-8.24] + + seq no longer prints an extra line under certain circumstances (such as + 'seq -f "%g " 1000000 1000000'). + [bug introduced in coreutils-6.10] + + ** Changes in behavior + + Several programs now check that numbers end properly. For example, + 'du -d 1x' now reports an error instead of silently ignoring the 'x'. + Affected programs and options include du -d, expr's numeric operands + on non-GMP builds, install -g and -o, ls's TABSIZE environment + variable, mknod b and c, ptx -g and -w, shuf -n, and sort --batch-size + and --parallel. + + date now parses military time zones in accordance with common usage: + "A" to "M" are equivalent to UTC+1 to UTC+12 + "N" to "Y" are equivalent to UTC-1 to UTC-12 + "Z" is "zulu" time (UTC). + For example, 'date -d "09:00B" is now equivalent to 9am in UTC+2 time zone. + Previously, military time zones were parsed according to the obsolete + rfc822, with their value negated (e.g., "B" was equivalent to UTC-2). + [The old behavior was introduced in sh-utils 2.0.15 ca. 1999, predating + coreutils package.] + + ls issues an error message on a removed directory, on GNU/Linux systems. + Previously no error and no entries were output, and so indistinguishable + from an empty directory, with default ls options. + + uniq no longer uses strcoll() to determine string equivalence, + and so will operate more efficiently and consistently. + + ** New Features + + ls now supports the --time=birth option to display and sort by + file creation time, where available. + + od --skip-bytes now can use lseek even if the input is not a regular + file, greatly improving performance in some cases. + + stat(1) supports a new --cached= option, used on systems with statx(2) + to control cache coherency of file system attributes, + useful on network file systems. + + ** Improvements + + stat and ls now use the statx() system call where available, which can + operate more efficiently by only retrieving requested attributes. + + stat and tail now know about the "binderfs", "dma-buf-fs", "erofs", + "ppc-cmm-fs", and "z3fold" file systems. + stat -f -c%T now reports the file system type, and tail -f uses inotify. + + ** Build-related + + gzip-compressed tarballs are distributed once again + +- Refresh patches: + * coreutils-disable_tests.patch + * coreutils-getaddrinfo.patch + * coreutils-i18n.patch + * coreutils-invalid-ids.patch + * coreutils-remove_hostname_documentation.patch + * coreutils-remove_kill_documentation.patch + * coreutils-skip-gnulib-test-tls.patch + * coreutils-tests-shorten-extreme-factor-tests.patch + +- coreutils-i18n.patch: + * uniq: remove collation handling as required by newer POSIX; see + - https://git.savannah.gnu.org/cgit/coreutils.git/commit/?id=8e81d44b5 + - https://www.austingroupbugs.net/view.php?id=963 + +- coreutils-ls-restore-8.31-behavior-on-removed-dirs.patch: + * Add patch for 'ls' to restore 8.31 behavior on removed directories. + +- coreutils.spec: + * Version: bump version. + * %check: re-enable regular 'make check' for non-multibuild package. + * reference the above new patch. + +- coreutils.keyring: + * Update from upstream (Savannah). + ------------------------------------------------------------------- Tue Jan 28 08:13:51 UTC 2020 - Ludwig Nussel diff --git a/coreutils.keyring b/coreutils.keyring index d0490f3..2a58656 100644 --- a/coreutils.keyring +++ b/coreutils.keyring @@ -372,7 +372,6 @@ L7lK987RIZayL0odb+oCJv+R9I5fu9Tt -----END PGP PUBLIC KEY BLOCK----- GPG keys of Bob Proulx -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: GnuPG v1 mQINBFdggy0BEADFA8M0PxYhQdI9LlkkP3jfkDDsKmyofklaJouGHc3h+IjoXkdJ A1C/UaEjaVLxb4aBm7znZrk44Je88MxidwCTeZwgJje2R397IKW3WtRtIfUz5sH3 @@ -385,43 +384,165 @@ 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 -W1qcD8s= -=eykL +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 +=lMPX -----END PGP PUBLIC KEY BLOCK----- GPG keys of Paul Eggert diff --git a/coreutils.spec b/coreutils.spec index b6276d6..c867060 100644 --- a/coreutils.spec +++ b/coreutils.spec @@ -29,12 +29,12 @@ ExclusiveArch: do_not_build %endif %endif -Name: coreutils%{?name_suffix} +Name: coreutils%{?name_suffix} Summary: GNU Core Utilities License: GPL-3.0-or-later Group: System/Base URL: https://www.gnu.org/software/coreutils/ -Version: 8.31 +Version: 8.32 Release: 0 BuildRequires: automake @@ -138,6 +138,12 @@ Patch303: coreutils-tests-shorten-extreme-factor-tests.patch Patch500: coreutils-disable_tests.patch Patch501: coreutils-test_without_valgrind.patch +# Upstream commits (squashed) after the release of coreutils-8.32: +# [PATCH 1/2] ls: restore 8.31 behavior on removed directories +# [PATCH 2/2] ls: improve removed-directory test +# Remove this patch with the next coreutils release. +Patch800: coreutils-ls-restore-8.31-behavior-on-removed-dirs.patch + # ================================================ %description These are the GNU core utilities. This package is the union of @@ -190,8 +196,7 @@ This package contains the documentation for the GNU Core Utilities. %patch500 %patch501 -#???## We need to statically link to gmp, otherwise we have a build loop -#???#sed -i s,'$(LIB_GMP)',%%{_libdir}/libgmp.a,g Makefile.in +%patch800 # ================================================ %build @@ -231,6 +236,9 @@ ln -v lib/parse-datetime.{c,y} . && install -d -m 755 %{buildroot}%{_docdir}/%{name} \ && xz -c tests/test-suite.log \ > %{buildroot}%{_docdir}/%{name}/test-suite.log.xz +%else + # Run the shorter check otherwise. + make check %endif # ================================================