Accepting request 783998 from home:berny:branches:Base:System

- 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).

OBS-URL: https://build.opensuse.org/request/show/783998
OBS-URL: https://build.opensuse.org/package/show/Base:System/coreutils?expand=0&rev=305
This commit is contained in:
Bernhard Voelker 2020-03-18 11:50:56 +00:00 committed by Git OBS Bridge
parent 37768ae869
commit fc6c8bcc8c
16 changed files with 567 additions and 380 deletions

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ff7a9c918edce6b4f4b2725e3f9b37b0c4d193531cac49a48b56c4d0d3a9e9fd
size 5410140

View File

@ -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-----

3
coreutils-8.32.tar.xz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:4458d8de7849df44ccab15e16b1548b285224dbba5f08fac070c1c0e0bcc4cfa
size 5547836

16
coreutils-8.32.tar.xz.sig Normal file
View File

@ -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-----

View File

@ -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

View File

@ -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)

View File

@ -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)
<none/unknown> < 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 \

View File

@ -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"),

View File

@ -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 <eggert@cs.ucla.edu>
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 <eggert@cs.ucla.edu>
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 <sys/sycall.h>
(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 <sys/ptem.h>
#endif
-#ifdef __linux__
-# include <sys/syscall.h>
-#endif
-
#include <stdio.h>
#include <assert.h>
#include <setjmp.h>
@@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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 = \

View File

@ -1,3 +1,130 @@
-------------------------------------------------------------------
Mon Mar 9 07:17:46 UTC 2020 - Bernhard Voelker <mail@bernhard-voelker.de>
- 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 <lnussel@suse.de>

View File

@ -372,7 +372,6 @@ L7lK987RIZayL0odb+oCJv+R9I5fu9Tt
-----END PGP PUBLIC KEY BLOCK-----
GPG keys of Bob Proulx <rwp>
-----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 <eggert>

View File

@ -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
# ================================================