Accepting request 786157 from Base:System
OBS-URL: https://build.opensuse.org/request/show/786157 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/coreutils?expand=0&rev=132
This commit is contained in:
commit
2104a1b573
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:ff7a9c918edce6b4f4b2725e3f9b37b0c4d193531cac49a48b56c4d0d3a9e9fd
|
|
||||||
size 5410140
|
|
@ -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
3
coreutils-8.32.tar.xz
Normal 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
16
coreutils-8.32.tar.xz.sig
Normal 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-----
|
@ -6,7 +6,7 @@ Index: gnulib-tests/gnulib.mk
|
|||||||
===================================================================
|
===================================================================
|
||||||
--- gnulib-tests/gnulib.mk.orig
|
--- gnulib-tests/gnulib.mk.orig
|
||||||
+++ gnulib-tests/gnulib.mk
|
+++ 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
|
## begin gnulib module getlogin-tests
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@ Index: gnulib-tests/test-getaddrinfo.c
|
|||||||
===================================================================
|
===================================================================
|
||||||
--- gnulib-tests/test-getaddrinfo.c.orig
|
--- gnulib-tests/test-getaddrinfo.c.orig
|
||||||
+++ gnulib-tests/test-getaddrinfo.c
|
+++ 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
|
the test merely because someone is down the country on their
|
||||||
in-law's farm. */
|
in-law's farm. */
|
||||||
if (res == EAI_AGAIN)
|
if (res == EAI_AGAIN)
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
src/pr.c | 443 ++++++++++++++++++++++---
|
src/pr.c | 443 ++++++++++++++++++++++---
|
||||||
src/sort.c | 772 +++++++++++++++++++++++++++++++++++++++++---
|
src/sort.c | 772 +++++++++++++++++++++++++++++++++++++++++---
|
||||||
src/unexpand.c | 101 ++++-
|
src/unexpand.c | 101 ++++-
|
||||||
src/uniq.c | 265 ++++++++++++++-
|
src/uniq.c | 119 ++++++
|
||||||
tests/expand/mb.sh | 183 ++++++++++
|
tests/expand/mb.sh | 183 ++++++++++
|
||||||
tests/i18n/sort.sh | 29 +
|
tests/i18n/sort.sh | 29 +
|
||||||
tests/local.mk | 4
|
tests/local.mk | 4
|
||||||
@ -27,7 +27,7 @@
|
|||||||
tests/misc/uniq.pl | 55 +++
|
tests/misc/uniq.pl | 55 +++
|
||||||
tests/pr/pr-tests.pl | 49 ++
|
tests/pr/pr-tests.pl | 49 ++
|
||||||
tests/unexpand/mb.sh | 172 +++++++++
|
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.c
|
||||||
create mode 100644 lib/mbfile.h
|
create mode 100644 lib/mbfile.h
|
||||||
create mode 100644 m4/mbfile.m4
|
create mode 100644 m4/mbfile.m4
|
||||||
@ -52,7 +52,7 @@ Index: configure.ac
|
|||||||
===================================================================
|
===================================================================
|
||||||
--- configure.ac.orig
|
--- configure.ac.orig
|
||||||
+++ configure.ac
|
+++ 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...
|
# I'm leaving it here for now. This whole thing needs to be modernized...
|
||||||
gl_WINSIZE_IN_PTEM
|
gl_WINSIZE_IN_PTEM
|
||||||
|
|
||||||
@ -2091,7 +2091,7 @@ Index: src/join.c
|
|||||||
}
|
}
|
||||||
putchar (eolchar);
|
putchar (eolchar);
|
||||||
}
|
}
|
||||||
@@ -1099,20 +1345,43 @@ main (int argc, char **argv)
|
@@ -1098,20 +1344,43 @@ main (int argc, char **argv)
|
||||||
|
|
||||||
case 't':
|
case 't':
|
||||||
{
|
{
|
||||||
@ -2173,8 +2173,8 @@ Index: src/pr.c
|
|||||||
#include "system.h"
|
#include "system.h"
|
||||||
#include "die.h"
|
#include "die.h"
|
||||||
#include "error.h"
|
#include "error.h"
|
||||||
@@ -324,6 +342,18 @@
|
@@ -325,6 +343,18 @@
|
||||||
#include "xstrtol.h"
|
#include "xstrtol-error.h"
|
||||||
#include "xdectoint.h"
|
#include "xdectoint.h"
|
||||||
|
|
||||||
+/* Some systems, like BeOS, have multibyte encodings but lack mbstate_t. */
|
+/* 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). */
|
/* The official name of this program (e.g., no 'g' prefix). */
|
||||||
#define PROGRAM_NAME "pr"
|
#define PROGRAM_NAME "pr"
|
||||||
|
|
||||||
@@ -416,7 +446,20 @@ struct COLUMN
|
@@ -417,7 +447,20 @@ struct COLUMN
|
||||||
|
|
||||||
typedef struct COLUMN COLUMN;
|
typedef struct COLUMN COLUMN;
|
||||||
|
|
||||||
@ -2214,7 +2214,7 @@ Index: src/pr.c
|
|||||||
static bool read_line (COLUMN *p);
|
static bool read_line (COLUMN *p);
|
||||||
static bool print_page (void);
|
static bool print_page (void);
|
||||||
static bool print_stored (COLUMN *p);
|
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,
|
static void getoptnum (const char *n_str, int min, int *num,
|
||||||
const char *errfmt);
|
const char *errfmt);
|
||||||
static void getoptarg (char *arg, char switch_char, char *character,
|
static void getoptarg (char *arg, char switch_char, char *character,
|
||||||
@ -2222,7 +2222,7 @@ Index: src/pr.c
|
|||||||
int *number);
|
int *number);
|
||||||
static void print_files (int number_of_files, char **av);
|
static void print_files (int number_of_files, char **av);
|
||||||
static void init_parameters (int number_of_files);
|
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 pad_down (unsigned int lines);
|
||||||
static void read_rest_of_line (COLUMN *p);
|
static void read_rest_of_line (COLUMN *p);
|
||||||
static void skip_read (COLUMN *p, int column_number);
|
static void skip_read (COLUMN *p, int column_number);
|
||||||
@ -2230,7 +2230,7 @@ Index: src/pr.c
|
|||||||
static void cleanup (void);
|
static void cleanup (void);
|
||||||
static void print_sep_string (void);
|
static void print_sep_string (void);
|
||||||
static void separator_string (const char *optarg_S);
|
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.
|
we store the leftmost columns contiguously in buff.
|
||||||
To print a line from buff, get the index of the first character
|
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]. */
|
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
|
/* Index of the position in buff where the next character
|
||||||
will be stored. */
|
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;
|
static bool untabify_input = false;
|
||||||
|
|
||||||
/* (-e) The input tab character. */
|
/* (-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, ...
|
/* (-e) Tabstops are at chars_per_tab, 2*chars_per_tab, 3*chars_per_tab, ...
|
||||||
where the leftmost column is 1. */
|
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;
|
static bool tabify_output = false;
|
||||||
|
|
||||||
/* (-i) The output tab character. */
|
/* (-i) The output tab character. */
|
||||||
@ -2260,7 +2260,7 @@ Index: src/pr.c
|
|||||||
|
|
||||||
/* (-i) The width of the output tab. */
|
/* (-i) The width of the output tab. */
|
||||||
static int chars_per_output_tab = 8;
|
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;
|
static bool numbered_lines = false;
|
||||||
|
|
||||||
/* (-n) Character which follows each line number. */
|
/* (-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
|
/* (-n) line counting starts with 1st line of input file (not with 1st
|
||||||
line of 1st page printed). */
|
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'. */
|
-a|COLUMN|-m is a 'space' and with the -J option a 'tab'. */
|
||||||
static char const *col_sep_string = "";
|
static char const *col_sep_string = "";
|
||||||
static int col_sep_length = 0;
|
static int col_sep_length = 0;
|
||||||
@ -2283,7 +2283,7 @@ Index: src/pr.c
|
|||||||
static char *column_separator = (char *) " ";
|
static char *column_separator = (char *) " ";
|
||||||
static char *line_separator = (char *) "\t";
|
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 ();
|
integer_overflow ();
|
||||||
col_sep_length = len;
|
col_sep_length = len;
|
||||||
col_sep_string = optarg_S;
|
col_sep_string = optarg_S;
|
||||||
@ -2297,7 +2297,7 @@ Index: src/pr.c
|
|||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -875,6 +935,21 @@ main (int argc, char **argv)
|
@@ -876,6 +936,21 @@ main (int argc, char **argv)
|
||||||
|
|
||||||
atexit (close_stdout);
|
atexit (close_stdout);
|
||||||
|
|
||||||
@ -2319,7 +2319,7 @@ Index: src/pr.c
|
|||||||
n_files = 0;
|
n_files = 0;
|
||||||
file_names = (argc > 1
|
file_names = (argc > 1
|
||||||
? xnmalloc (argc - 1, sizeof (char *))
|
? xnmalloc (argc - 1, sizeof (char *))
|
||||||
@@ -951,8 +1026,12 @@ main (int argc, char **argv)
|
@@ -952,8 +1027,12 @@ main (int argc, char **argv)
|
||||||
break;
|
break;
|
||||||
case 'e':
|
case 'e':
|
||||||
if (optarg)
|
if (optarg)
|
||||||
@ -2334,7 +2334,7 @@ Index: src/pr.c
|
|||||||
/* Could check tab width > 0. */
|
/* Could check tab width > 0. */
|
||||||
untabify_input = true;
|
untabify_input = true;
|
||||||
break;
|
break;
|
||||||
@@ -965,8 +1044,12 @@ main (int argc, char **argv)
|
@@ -966,8 +1045,12 @@ main (int argc, char **argv)
|
||||||
break;
|
break;
|
||||||
case 'i':
|
case 'i':
|
||||||
if (optarg)
|
if (optarg)
|
||||||
@ -2349,7 +2349,7 @@ Index: src/pr.c
|
|||||||
/* Could check tab width > 0. */
|
/* Could check tab width > 0. */
|
||||||
tabify_output = true;
|
tabify_output = true;
|
||||||
break;
|
break;
|
||||||
@@ -984,8 +1067,8 @@ main (int argc, char **argv)
|
@@ -985,8 +1068,8 @@ main (int argc, char **argv)
|
||||||
case 'n':
|
case 'n':
|
||||||
numbered_lines = true;
|
numbered_lines = true;
|
||||||
if (optarg)
|
if (optarg)
|
||||||
@ -2360,7 +2360,7 @@ Index: src/pr.c
|
|||||||
break;
|
break;
|
||||||
case 'N':
|
case 'N':
|
||||||
skip_count = false;
|
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 */
|
/* Reset an additional input of -s, -S dominates -s */
|
||||||
col_sep_string = "";
|
col_sep_string = "";
|
||||||
col_sep_length = 0;
|
col_sep_length = 0;
|
||||||
@ -2368,7 +2368,7 @@ Index: src/pr.c
|
|||||||
use_col_separator = true;
|
use_col_separator = true;
|
||||||
if (optarg)
|
if (optarg)
|
||||||
separator_string (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. */
|
a number. */
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -2416,7 +2416,7 @@ Index: src/pr.c
|
|||||||
if (*arg)
|
if (*arg)
|
||||||
{
|
{
|
||||||
long int tmp_long;
|
long int tmp_long;
|
||||||
@@ -1190,6 +1309,11 @@ static void
|
@@ -1191,6 +1310,11 @@ static void
|
||||||
init_parameters (int number_of_files)
|
init_parameters (int number_of_files)
|
||||||
{
|
{
|
||||||
int chars_used_by_number = 0;
|
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;
|
lines_per_body = lines_per_page - lines_per_header - lines_per_footer;
|
||||||
if (lines_per_body <= 0)
|
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
|
else
|
||||||
col_sep_string = column_separator;
|
col_sep_string = column_separator;
|
||||||
|
|
||||||
@ -2437,7 +2437,7 @@ Index: src/pr.c
|
|||||||
use_col_separator = true;
|
use_col_separator = true;
|
||||||
}
|
}
|
||||||
/* It's rather pointless to define a TAB separator with column
|
/* 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); */
|
+ TAB_WIDTH (chars_per_input_tab, chars_per_number); */
|
||||||
|
|
||||||
/* Estimate chars_per_text without any margin and keep it constant. */
|
/* 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
|
/* The number is part of the column width unless we are
|
||||||
printing files in parallel. */
|
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;
|
int sep_chars, useful_chars;
|
||||||
@ -2460,7 +2460,7 @@ Index: src/pr.c
|
|||||||
sep_chars = INT_MAX;
|
sep_chars = INT_MAX;
|
||||||
if (INT_SUBTRACT_WRAPV (chars_per_line - chars_used_by_number, sep_chars,
|
if (INT_SUBTRACT_WRAPV (chars_per_line - chars_used_by_number, sep_chars,
|
||||||
&useful_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
|
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. */
|
to expand a tab which is not an input_tab-char. */
|
||||||
free (clump_buff);
|
free (clump_buff);
|
||||||
@ -2469,7 +2469,7 @@ Index: src/pr.c
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Open the necessary files,
|
/* 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
|
/* Enlarge p->start_position of first column to use the same form of
|
||||||
padding_not_printed with all columns. */
|
padding_not_printed with all columns. */
|
||||||
@ -2478,7 +2478,7 @@ Index: src/pr.c
|
|||||||
|
|
||||||
/* This loop takes care of all but the rightmost column. */
|
/* 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
|
else
|
||||||
{
|
{
|
||||||
@ -2487,7 +2487,7 @@ Index: src/pr.c
|
|||||||
h_next = h + chars_per_column;
|
h_next = h + chars_per_column;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1724,9 +1848,9 @@ static void
|
@@ -1725,9 +1849,9 @@ static void
|
||||||
align_column (COLUMN *p)
|
align_column (COLUMN *p)
|
||||||
{
|
{
|
||||||
padding_not_printed = p->start_position;
|
padding_not_printed = p->start_position;
|
||||||
@ -2499,7 +2499,7 @@ Index: src/pr.c
|
|||||||
padding_not_printed = ANYWHERE;
|
padding_not_printed = ANYWHERE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2001,13 +2125,13 @@ store_char (char c)
|
@@ -2002,13 +2126,13 @@ store_char (char c)
|
||||||
/* May be too generous. */
|
/* May be too generous. */
|
||||||
buff = X2REALLOC (buff, &buff_allocated);
|
buff = X2REALLOC (buff, &buff_allocated);
|
||||||
}
|
}
|
||||||
@ -2515,7 +2515,7 @@ Index: src/pr.c
|
|||||||
char *s;
|
char *s;
|
||||||
int num_width;
|
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,
|
/* Tabification is assumed for multiple columns, also for n-separators,
|
||||||
but 'default n-separator = TAB' hasn't been given priority over
|
but 'default n-separator = TAB' hasn't been given priority over
|
||||||
equal column_width also specified by POSIX. */
|
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 = POS_AFTER_TAB (chars_per_output_tab,
|
||||||
output_position);
|
output_position);
|
||||||
}
|
}
|
||||||
@@ -2198,7 +2324,7 @@ print_white_space (void)
|
@@ -2199,7 +2325,7 @@ print_white_space (void)
|
||||||
while (goal - h_old > 1
|
while (goal - h_old > 1
|
||||||
&& (h_new = POS_AFTER_TAB (chars_per_output_tab, h_old)) <= goal)
|
&& (h_new = POS_AFTER_TAB (chars_per_output_tab, h_old)) <= goal)
|
||||||
{
|
{
|
||||||
@ -2553,7 +2553,7 @@ Index: src/pr.c
|
|||||||
h_old = h_new;
|
h_old = h_new;
|
||||||
}
|
}
|
||||||
while (++h_old <= goal)
|
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;
|
char const *s = col_sep_string;
|
||||||
int l = col_sep_length;
|
int l = col_sep_length;
|
||||||
@ -2561,7 +2561,7 @@ Index: src/pr.c
|
|||||||
|
|
||||||
if (separators_not_printed <= 0)
|
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)
|
for (; separators_not_printed > 0; --separators_not_printed)
|
||||||
{
|
{
|
||||||
@ -2569,7 +2569,7 @@ Index: src/pr.c
|
|||||||
while (l-- > 0)
|
while (l-- > 0)
|
||||||
{
|
{
|
||||||
/* 3 types of sep_strings: spaces only, spaces and chars,
|
/* 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
|
else
|
||||||
{
|
{
|
||||||
@ -2586,7 +2586,7 @@ Index: src/pr.c
|
|||||||
/* sep_string ends with some spaces */
|
/* sep_string ends with some spaces */
|
||||||
if (spaces_not_printed > 0)
|
if (spaces_not_printed > 0)
|
||||||
print_white_space ();
|
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. */
|
required number of tabs and spaces. */
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -2595,7 +2595,7 @@ Index: src/pr.c
|
|||||||
{
|
{
|
||||||
if (tabify_output)
|
if (tabify_output)
|
||||||
{
|
{
|
||||||
@@ -2299,6 +2430,74 @@ print_char (char c)
|
@@ -2300,6 +2431,74 @@ print_char (char c)
|
||||||
putchar (c);
|
putchar (c);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2670,7 +2670,7 @@ Index: src/pr.c
|
|||||||
/* Skip to page PAGE before printing.
|
/* Skip to page PAGE before printing.
|
||||||
PAGE may be larger than total number of pages. */
|
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;
|
align_empty_cols = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2682,7 +2682,7 @@ Index: src/pr.c
|
|||||||
padding_not_printed = ANYWHERE;
|
padding_not_printed = ANYWHERE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2547,7 +2746,7 @@ print_stored (COLUMN *p)
|
@@ -2548,7 +2747,7 @@ print_stored (COLUMN *p)
|
||||||
COLUMN *q;
|
COLUMN *q;
|
||||||
|
|
||||||
int line = p->current_line++;
|
int line = p->current_line++;
|
||||||
@ -2691,7 +2691,7 @@ Index: src/pr.c
|
|||||||
/* FIXME
|
/* FIXME
|
||||||
UMR: Uninitialized memory read:
|
UMR: Uninitialized memory read:
|
||||||
* This is occurring while in:
|
* 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]
|
xmalloc [xmalloc.c:94]
|
||||||
init_store_cols [pr.c:1648]
|
init_store_cols [pr.c:1648]
|
||||||
*/
|
*/
|
||||||
@ -2700,7 +2700,7 @@ Index: src/pr.c
|
|||||||
|
|
||||||
pad_vertically = true;
|
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;
|
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)
|
if (spaces_not_printed == 0)
|
||||||
{
|
{
|
||||||
output_position = p->start_position + end_vector[line];
|
output_position = p->start_position + end_vector[line];
|
||||||
@ -2723,7 +2723,7 @@ Index: src/pr.c
|
|||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@@ -2614,7 +2813,7 @@ print_stored (COLUMN *p)
|
@@ -2615,7 +2814,7 @@ print_stored (COLUMN *p)
|
||||||
number of characters is 1.) */
|
number of characters is 1.) */
|
||||||
|
|
||||||
static int
|
static int
|
||||||
@ -2732,7 +2732,7 @@ Index: src/pr.c
|
|||||||
{
|
{
|
||||||
unsigned char uc = c;
|
unsigned char uc = c;
|
||||||
char *s = clump_buff;
|
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;
|
||||||
int chars_per_c = 8;
|
int chars_per_c = 8;
|
||||||
|
|
||||||
@ -2745,7 +2745,7 @@ Index: src/pr.c
|
|||||||
{
|
{
|
||||||
width = TAB_WIDTH (chars_per_c, input_position);
|
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;
|
return chars;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2929,7 +2929,7 @@ Index: src/sort.c
|
|||||||
#include "system.h"
|
#include "system.h"
|
||||||
#include "argmatch.h"
|
#include "argmatch.h"
|
||||||
#include "die.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. */
|
/* Thousands separator; if -1, then there isn't one. */
|
||||||
static int thousands_sep;
|
static int thousands_sep;
|
||||||
|
|
||||||
@ -2970,7 +2970,7 @@ Index: src/sort.c
|
|||||||
/* The kind of blanks for '-b' to skip in various options. */
|
/* The kind of blanks for '-b' to skip in various options. */
|
||||||
enum blanktype { bl_start, bl_end, bl_both };
|
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. */
|
they were read if all keys compare equal. */
|
||||||
static bool stable;
|
static bool stable;
|
||||||
|
|
||||||
@ -2987,7 +2987,7 @@ Index: src/sort.c
|
|||||||
|
|
||||||
/* Flag to remove consecutive duplicate lines from the output.
|
/* Flag to remove consecutive duplicate lines from the output.
|
||||||
Only the last of a sequence of equal lines will be 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);
|
reap (-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3034,7 +3034,7 @@ Index: src/sort.c
|
|||||||
/* Clean up any remaining temporary files. */
|
/* Clean up any remaining temporary files. */
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -1274,7 +1345,7 @@ zaptemp (char const *name)
|
@@ -1270,7 +1341,7 @@ zaptemp (char const *name)
|
||||||
free (node);
|
free (node);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3043,7 +3043,7 @@ Index: src/sort.c
|
|||||||
|
|
||||||
static int
|
static int
|
||||||
struct_month_cmp (void const *m1, void const *m2)
|
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. */
|
/* Initialize the character class tables. */
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -3052,7 +3052,7 @@ Index: src/sort.c
|
|||||||
{
|
{
|
||||||
size_t i;
|
size_t i;
|
||||||
|
|
||||||
@@ -1301,7 +1372,7 @@ inittables (void)
|
@@ -1297,7 +1368,7 @@ inittables (void)
|
||||||
fold_toupper[i] = toupper (i);
|
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 we're not in the "C" locale, read different names for months. */
|
||||||
if (hard_LC_TIME)
|
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);
|
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. */
|
/* Specify the amount of main memory to use when sorting. */
|
||||||
static void
|
static void
|
||||||
specify_sort_size (int oi, char c, char const *s)
|
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. */
|
by KEY in LINE. */
|
||||||
|
|
||||||
static char *
|
static char *
|
||||||
@ -3155,7 +3155,7 @@ Index: src/sort.c
|
|||||||
{
|
{
|
||||||
char *ptr = line->text, *lim = ptr + line->length - 1;
|
char *ptr = line->text, *lim = ptr + line->length - 1;
|
||||||
size_t sword = key->sword;
|
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
|
/* The leading field separator itself is included in a field when -t
|
||||||
is absent. */
|
is absent. */
|
||||||
|
|
||||||
@ -3168,7 +3168,7 @@ Index: src/sort.c
|
|||||||
++ptr;
|
++ptr;
|
||||||
if (ptr < lim)
|
if (ptr < lim)
|
||||||
++ptr;
|
++ptr;
|
||||||
@@ -1652,11 +1801,70 @@ begfield (struct line const *line, struc
|
@@ -1648,11 +1797,70 @@ begfield (struct line const *line, struc
|
||||||
return ptr;
|
return ptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3240,7 +3240,7 @@ Index: src/sort.c
|
|||||||
{
|
{
|
||||||
char *ptr = line->text, *lim = ptr + line->length - 1;
|
char *ptr = line->text, *lim = ptr + line->length - 1;
|
||||||
size_t eword = key->eword, echar = key->echar;
|
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.
|
'beginning' is the first character following the delimiting TAB.
|
||||||
Otherwise, leave PTR pointing at the first 'blank' character after
|
Otherwise, leave PTR pointing at the first 'blank' character after
|
||||||
the preceding field. */
|
the preceding field. */
|
||||||
@ -3253,7 +3253,7 @@ Index: src/sort.c
|
|||||||
++ptr;
|
++ptr;
|
||||||
if (ptr < lim && (eword || echar))
|
if (ptr < lim && (eword || echar))
|
||||||
++ptr;
|
++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. */
|
/* Make LIM point to the end of (one byte past) the current field. */
|
||||||
@ -3266,7 +3266,7 @@ Index: src/sort.c
|
|||||||
if (newlim)
|
if (newlim)
|
||||||
lim = 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;
|
return ptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3397,7 +3397,7 @@ Index: src/sort.c
|
|||||||
/* Fill BUF reading from FP, moving buf->left bytes from the end
|
/* 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
|
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
|
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
|
else
|
||||||
{
|
{
|
||||||
if (key->skipsblanks)
|
if (key->skipsblanks)
|
||||||
@ -3422,7 +3422,7 @@ Index: src/sort.c
|
|||||||
line->keybeg = line_start;
|
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 */
|
<none/unknown> < K/k < M < G < T < P < E < Z < Y */
|
||||||
|
|
||||||
static int
|
static int
|
||||||
@ -3438,7 +3438,7 @@ Index: src/sort.c
|
|||||||
|
|
||||||
int diff = find_unit_order (a) - find_unit_order (b);
|
int diff = find_unit_order (a) - find_unit_order (b);
|
||||||
return (diff ? diff : strnumcmp (a, b, decimal_point, thousands_sep));
|
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. */
|
hideously fast. */
|
||||||
|
|
||||||
static int
|
static int
|
||||||
@ -3447,7 +3447,7 @@ Index: src/sort.c
|
|||||||
{
|
{
|
||||||
while (blanks[to_uchar (*a)])
|
while (blanks[to_uchar (*a)])
|
||||||
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);
|
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
|
/* Work around a problem whereby the long double value returned by glibc's
|
||||||
strtold ("NaN", ...) contains uninitialized bits: clear all bytes of
|
strtold ("NaN", ...) contains uninitialized bits: clear all bytes of
|
||||||
A and B before calling strtold. FIXME: remove this function if
|
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. */
|
Return 0 if the name in S is not recognized. */
|
||||||
|
|
||||||
static int
|
static int
|
||||||
@ -3482,7 +3482,7 @@ Index: src/sort.c
|
|||||||
{
|
{
|
||||||
size_t lo = 0;
|
size_t lo = 0;
|
||||||
size_t hi = MONTHS_PER_YEAR;
|
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;
|
char saved = *lim;
|
||||||
*lim = '\0';
|
*lim = '\0';
|
||||||
|
|
||||||
@ -3500,7 +3500,7 @@ Index: src/sort.c
|
|||||||
else if (key->general_numeric)
|
else if (key->general_numeric)
|
||||||
ignore_value (strtold (beg, &tighter_lim));
|
ignore_value (strtold (beg, &tighter_lim));
|
||||||
else if (key->numeric || key->human_numeric)
|
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. */
|
/* Warn about significant leading blanks. */
|
||||||
bool implicit_skip = key_numeric (key) || key->month;
|
bool implicit_skip = key_numeric (key) || key->month;
|
||||||
bool line_offset = key->eword == 0 && key->echar != 0; /* -k1.x,1.y */
|
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 && !implicit_skip)
|
||||||
|| (!key->skipsblanks && key->schar)
|
|| (!key->skipsblanks && key->schar)
|
||||||
|| (!key->skipeblanks && key->echar)))
|
|| (!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"));
|
error (0, 0, _("option '-r' only applies to last-resort comparison"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3598,7 +3598,7 @@ Index: src/sort.c
|
|||||||
{
|
{
|
||||||
struct keyfield *key = keylist;
|
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)
|
else if (key->human_numeric)
|
||||||
diff = human_numcompare (ta, tb);
|
diff = human_numcompare (ta, tb);
|
||||||
else if (key->month)
|
else if (key->month)
|
||||||
@ -3607,7 +3607,7 @@ Index: src/sort.c
|
|||||||
else if (key->random)
|
else if (key->random)
|
||||||
diff = compare_random (ta, tlena, tb, tlenb);
|
diff = compare_random (ta, tlena, tb, tlenb);
|
||||||
else if (key->version)
|
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;
|
return key->reverse ? -diff : diff;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3819,7 +3819,7 @@ Index: src/sort.c
|
|||||||
/* Compare two lines A and B, returning negative, zero, or positive
|
/* Compare two lines A and B, returning negative, zero, or positive
|
||||||
depending on whether A compares less than, equal to, or greater than B. */
|
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);
|
diff = - NONZERO (blen);
|
||||||
else if (blen == 0)
|
else if (blen == 0)
|
||||||
diff = 1;
|
diff = 1;
|
||||||
@ -3828,7 +3828,7 @@ Index: src/sort.c
|
|||||||
{
|
{
|
||||||
/* xmemcoll0 is a performance enhancement as
|
/* xmemcoll0 is a performance enhancement as
|
||||||
it will not unconditionally write '\0' after the
|
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;
|
break;
|
||||||
case 'f':
|
case 'f':
|
||||||
key->translate = fold_toupper;
|
key->translate = fold_toupper;
|
||||||
@ -3836,7 +3836,7 @@ Index: src/sort.c
|
|||||||
break;
|
break;
|
||||||
case 'g':
|
case 'g':
|
||||||
key->general_numeric = true;
|
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);
|
initialize_exit_failure (SORT_FAILURE);
|
||||||
|
|
||||||
hard_LC_COLLATE = hard_locale (LC_COLLATE);
|
hard_LC_COLLATE = hard_locale (LC_COLLATE);
|
||||||
@ -3845,7 +3845,7 @@ Index: src/sort.c
|
|||||||
hard_LC_TIME = hard_locale (LC_TIME);
|
hard_LC_TIME = hard_locale (LC_TIME);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -4249,6 +4893,29 @@ main (int argc, char **argv)
|
@@ -4245,6 +4889,29 @@ main (int argc, char **argv)
|
||||||
thousands_sep = -1;
|
thousands_sep = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3875,7 +3875,7 @@ Index: src/sort.c
|
|||||||
have_read_stdin = false;
|
have_read_stdin = false;
|
||||||
inittables ();
|
inittables ();
|
||||||
|
|
||||||
@@ -4523,13 +5190,34 @@ main (int argc, char **argv)
|
@@ -4519,13 +5186,34 @@ main (int argc, char **argv)
|
||||||
|
|
||||||
case 't':
|
case 't':
|
||||||
{
|
{
|
||||||
@ -3914,7 +3914,7 @@ Index: src/sort.c
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* Provoke with 'sort -txx'. Complain about
|
/* 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));
|
quote (optarg));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3928,7 +3928,7 @@ Index: src/sort.c
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -4771,12 +5461,10 @@ main (int argc, char **argv)
|
@@ -4767,12 +5457,10 @@ main (int argc, char **argv)
|
||||||
sort (files, nfiles, outfile, nthreads);
|
sort (files, nfiles, outfile, nthreads);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4169,12 +4169,8 @@ Index: src/uniq.c
|
|||||||
#include "system.h"
|
#include "system.h"
|
||||||
#include "argmatch.h"
|
#include "argmatch.h"
|
||||||
#include "linebuffer.h"
|
#include "linebuffer.h"
|
||||||
@@ -32,9 +43,21 @@
|
@@ -33,6 +44,18 @@
|
||||||
#include "stdio--.h"
|
#include "memcasecmp.h"
|
||||||
#include "xmemcoll.h"
|
|
||||||
#include "xstrtol.h"
|
|
||||||
-#include "memcasecmp.h"
|
|
||||||
+#include "xmemcoll.h"
|
|
||||||
#include "quote.h"
|
#include "quote.h"
|
||||||
|
|
||||||
+/* MB_LEN_MAX is incorrectly defined to be 1 in at least one GCC
|
+/* 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). */
|
/* The official name of this program (e.g., no 'g' prefix). */
|
||||||
#define PROGRAM_NAME "uniq"
|
#define PROGRAM_NAME "uniq"
|
||||||
|
|
||||||
@@ -144,6 +167,10 @@ enum
|
@@ -139,6 +162,10 @@ enum
|
||||||
GROUP_OPTION = CHAR_MAX + 1
|
GROUP_OPTION = CHAR_MAX + 1
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -4203,7 +4199,7 @@ Index: src/uniq.c
|
|||||||
static struct option const longopts[] =
|
static struct option const longopts[] =
|
||||||
{
|
{
|
||||||
{"count", no_argument, NULL, 'c'},
|
{"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. */
|
return a pointer to the beginning of the line's field to be compared. */
|
||||||
|
|
||||||
static char * _GL_ATTRIBUTE_PURE
|
static char * _GL_ATTRIBUTE_PURE
|
||||||
@ -4212,7 +4208,7 @@ Index: src/uniq.c
|
|||||||
{
|
{
|
||||||
size_t count;
|
size_t count;
|
||||||
char const *lp = line->buffer;
|
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;
|
return line->buffer + i;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4296,227 +4292,7 @@ Index: src/uniq.c
|
|||||||
/* Return false if two strings OLD and NEW match, true if not.
|
/* Return false if two strings OLD and NEW match, true if not.
|
||||||
OLD and NEW point not to the beginnings of the lines
|
OLD and NEW point not to the beginnings of the lines
|
||||||
but rather to the beginnings of the fields to compare.
|
but rather to the beginnings of the fields to compare.
|
||||||
@@ -288,6 +392,8 @@ find_field (struct linebuffer const *lin
|
@@ -493,6 +597,19 @@ main (int argc, char **argv)
|
||||||
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)
|
|
||||||
|
|
||||||
atexit (close_stdout);
|
atexit (close_stdout);
|
||||||
|
|
||||||
@ -4762,7 +4538,7 @@ Index: tests/local.mk
|
|||||||
===================================================================
|
===================================================================
|
||||||
--- tests/local.mk.orig
|
--- tests/local.mk.orig
|
||||||
+++ tests/local.mk
|
+++ tests/local.mk
|
||||||
@@ -368,6 +368,8 @@ all_tests = \
|
@@ -369,6 +369,8 @@ all_tests = \
|
||||||
tests/misc/sort-discrim.sh \
|
tests/misc/sort-discrim.sh \
|
||||||
tests/misc/sort-files0-from.pl \
|
tests/misc/sort-files0-from.pl \
|
||||||
tests/misc/sort-float.sh \
|
tests/misc/sort-float.sh \
|
||||||
@ -4771,7 +4547,7 @@ Index: tests/local.mk
|
|||||||
tests/misc/sort-h-thousands-sep.sh \
|
tests/misc/sort-h-thousands-sep.sh \
|
||||||
tests/misc/sort-merge.pl \
|
tests/misc/sort-merge.pl \
|
||||||
tests/misc/sort-merge-fdlimit.sh \
|
tests/misc/sort-merge-fdlimit.sh \
|
||||||
@@ -564,6 +566,7 @@ all_tests = \
|
@@ -567,6 +569,7 @@ all_tests = \
|
||||||
tests/du/threshold.sh \
|
tests/du/threshold.sh \
|
||||||
tests/du/trailing-slash.sh \
|
tests/du/trailing-slash.sh \
|
||||||
tests/du/two-args.sh \
|
tests/du/two-args.sh \
|
||||||
@ -4779,7 +4555,7 @@ Index: tests/local.mk
|
|||||||
tests/id/gnu-zero-uids.sh \
|
tests/id/gnu-zero-uids.sh \
|
||||||
tests/id/no-context.sh \
|
tests/id/no-context.sh \
|
||||||
tests/id/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/read-only.sh \
|
||||||
tests/touch/relative.sh \
|
tests/touch/relative.sh \
|
||||||
tests/touch/trailing-slash.sh \
|
tests/touch/trailing-slash.sh \
|
||||||
|
@ -21,8 +21,8 @@ Index: src/chgrp.c
|
|||||||
+++ src/chgrp.c
|
+++ src/chgrp.c
|
||||||
@@ -89,7 +89,7 @@ parse_group (const char *name)
|
@@ -89,7 +89,7 @@ parse_group (const char *name)
|
||||||
{
|
{
|
||||||
unsigned long int tmp;
|
uintmax_t tmp;
|
||||||
if (! (xstrtoul (name, NULL, 10, &tmp, "") == LONGINT_OK
|
if (! (xstrtoumax (name, NULL, 10, &tmp, "") == LONGINT_OK
|
||||||
- && tmp <= GID_T_MAX))
|
- && tmp <= GID_T_MAX))
|
||||||
+ && tmp <= GID_T_MAX && (gid_t) tmp != (gid_t) -1))
|
+ && tmp <= GID_T_MAX && (gid_t) tmp != (gid_t) -1))
|
||||||
die (EXIT_FAILURE, 0, _("invalid group: %s"),
|
die (EXIT_FAILURE, 0, _("invalid group: %s"),
|
||||||
|
156
coreutils-ls-restore-8.31-behavior-on-removed-dirs.patch
Normal file
156
coreutils-ls-restore-8.31-behavior-on-removed-dirs.patch
Normal 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
|
@ -31,7 +31,7 @@ Index: doc/coreutils.texi
|
|||||||
* hostid invocation:: Print numeric host identifier
|
* hostid invocation:: Print numeric host identifier
|
||||||
* uptime invocation:: Print system uptime and load
|
* uptime invocation:: Print system uptime and load
|
||||||
|
|
||||||
@@ -15726,7 +15724,6 @@ information.
|
@@ -15761,7 +15759,6 @@ information.
|
||||||
* arch invocation:: Print machine hardware name.
|
* arch invocation:: Print machine hardware name.
|
||||||
* nproc invocation:: Print the number of processors.
|
* nproc invocation:: Print the number of processors.
|
||||||
* uname invocation:: Print system information.
|
* uname invocation:: Print system information.
|
||||||
@ -39,7 +39,7 @@ Index: doc/coreutils.texi
|
|||||||
* hostid invocation:: Print numeric host identifier.
|
* hostid invocation:: Print numeric host identifier.
|
||||||
* uptime invocation:: Print system uptime and load.
|
* uptime invocation:: Print system uptime and load.
|
||||||
@end menu
|
@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
|
Print the machine hardware name (sometimes called the hardware class
|
||||||
or hardware type).
|
or hardware type).
|
||||||
|
|
||||||
@ -55,7 +55,7 @@ Index: doc/coreutils.texi
|
|||||||
@item -p
|
@item -p
|
||||||
@itemx --processor
|
@itemx --processor
|
||||||
@opindex -p
|
@opindex -p
|
||||||
@@ -16650,34 +16638,6 @@ Print the kernel version.
|
@@ -16685,34 +16673,6 @@ Print the kernel version.
|
||||||
|
|
||||||
@exitstatus
|
@exitstatus
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@ Index: doc/coreutils.texi
|
|||||||
Delaying
|
Delaying
|
||||||
|
|
||||||
* sleep invocation:: Delay for a specified time
|
* 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
|
@end display
|
||||||
|
|
||||||
|
|
||||||
|
@ -21,7 +21,7 @@ Index: gnulib-tests/gnulib.mk
|
|||||||
===================================================================
|
===================================================================
|
||||||
--- gnulib-tests/gnulib.mk.orig
|
--- gnulib-tests/gnulib.mk.orig
|
||||||
+++ gnulib-tests/gnulib.mk
|
+++ 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
|
## begin gnulib module tls-tests
|
||||||
|
|
||||||
|
@ -16,7 +16,7 @@ Index: tests/local.mk
|
|||||||
===================================================================
|
===================================================================
|
||||||
--- tests/local.mk.orig
|
--- tests/local.mk.orig
|
||||||
+++ tests/local.mk
|
+++ tests/local.mk
|
||||||
@@ -718,14 +718,9 @@ all_tests = \
|
@@ -723,14 +723,9 @@ all_tests = \
|
||||||
# See tests/factor/create-test.sh.
|
# See tests/factor/create-test.sh.
|
||||||
tf = tests/factor
|
tf = tests/factor
|
||||||
factor_tests = \
|
factor_tests = \
|
||||||
|
@ -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>
|
Tue Jan 28 08:13:51 UTC 2020 - Ludwig Nussel <lnussel@suse.de>
|
||||||
|
|
||||||
|
@ -372,7 +372,6 @@ L7lK987RIZayL0odb+oCJv+R9I5fu9Tt
|
|||||||
-----END PGP PUBLIC KEY BLOCK-----
|
-----END PGP PUBLIC KEY BLOCK-----
|
||||||
GPG keys of Bob Proulx <rwp>
|
GPG keys of Bob Proulx <rwp>
|
||||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
Version: GnuPG v1
|
|
||||||
|
|
||||||
mQINBFdggy0BEADFA8M0PxYhQdI9LlkkP3jfkDDsKmyofklaJouGHc3h+IjoXkdJ
|
mQINBFdggy0BEADFA8M0PxYhQdI9LlkkP3jfkDDsKmyofklaJouGHc3h+IjoXkdJ
|
||||||
A1C/UaEjaVLxb4aBm7znZrk44Je88MxidwCTeZwgJje2R397IKW3WtRtIfUz5sH3
|
A1C/UaEjaVLxb4aBm7znZrk44Je88MxidwCTeZwgJje2R397IKW3WtRtIfUz5sH3
|
||||||
@ -385,43 +384,165 @@ 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
|
||||||
W1qcD8s=
|
+OLvNXd4ks+K9o+nFWegRSD/owFzH4tg59cgAfERxTeEgwKGJV5GNbjotXJIS10J
|
||||||
=eykL
|
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
|
||||||
|
=lMPX
|
||||||
-----END PGP PUBLIC KEY BLOCK-----
|
-----END PGP PUBLIC KEY BLOCK-----
|
||||||
|
|
||||||
GPG keys of Paul Eggert <eggert>
|
GPG keys of Paul Eggert <eggert>
|
||||||
|
@ -34,7 +34,7 @@ Summary: GNU Core Utilities
|
|||||||
License: GPL-3.0-or-later
|
License: GPL-3.0-or-later
|
||||||
Group: System/Base
|
Group: System/Base
|
||||||
URL: https://www.gnu.org/software/coreutils/
|
URL: https://www.gnu.org/software/coreutils/
|
||||||
Version: 8.31
|
Version: 8.32
|
||||||
Release: 0
|
Release: 0
|
||||||
|
|
||||||
BuildRequires: automake
|
BuildRequires: automake
|
||||||
@ -138,6 +138,12 @@ Patch303: coreutils-tests-shorten-extreme-factor-tests.patch
|
|||||||
Patch500: coreutils-disable_tests.patch
|
Patch500: coreutils-disable_tests.patch
|
||||||
Patch501: coreutils-test_without_valgrind.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
|
%description
|
||||||
These are the GNU core utilities. This package is the union of
|
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
|
%patch500
|
||||||
%patch501
|
%patch501
|
||||||
|
|
||||||
#???## We need to statically link to gmp, otherwise we have a build loop
|
%patch800
|
||||||
#???#sed -i s,'$(LIB_GMP)',%%{_libdir}/libgmp.a,g Makefile.in
|
|
||||||
|
|
||||||
# ================================================
|
# ================================================
|
||||||
%build
|
%build
|
||||||
@ -231,6 +236,9 @@ ln -v lib/parse-datetime.{c,y} .
|
|||||||
&& install -d -m 755 %{buildroot}%{_docdir}/%{name} \
|
&& install -d -m 755 %{buildroot}%{_docdir}/%{name} \
|
||||||
&& xz -c tests/test-suite.log \
|
&& xz -c tests/test-suite.log \
|
||||||
> %{buildroot}%{_docdir}/%{name}/test-suite.log.xz
|
> %{buildroot}%{_docdir}/%{name}/test-suite.log.xz
|
||||||
|
%else
|
||||||
|
# Run the shorter check otherwise.
|
||||||
|
make check
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
# ================================================
|
# ================================================
|
||||||
|
Loading…
Reference in New Issue
Block a user