forked from pool/coreutils
Accepting request 356783 from home:berny:branches:Base:System
- Update to 8.25 (for details see included NEWS file) - coreutils.spec (%description): Add base32, a new utility. - Remove now-upstream patch: * coreutils-tests-avoid-FP-of-ls-stat-free-color.patch - Refresh/merge all other patches: * coreutils-build-timeout-as-pie.patch * coreutils-disable_tests.patch * coreutils-i18n.patch * coreutils-invalid-ids.patch * coreutils-misc.patch * coreutils-ocfs2_reflinks.patch * coreutils-remove_hostname_documentation.patch * coreutils-remove_kill_documentation.patch * coreutils-skip-gnulib-test-tls.patch * coreutils-test_without_valgrind.patch * coreutils-tests-shorten-extreme-factor-tests.patch OBS-URL: https://build.opensuse.org/request/show/356783 OBS-URL: https://build.opensuse.org/package/show/Base:System/coreutils?expand=0&rev=270
This commit is contained in:
parent
378fb2110c
commit
7a83ba63d6
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:a2d75286a4b9ef3a13039c2da3868a61be4ee9f17d8ae380a35a97e506972170
|
|
||||||
size 5649896
|
|
@ -1,17 +0,0 @@
|
|||||||
-----BEGIN PGP SIGNATURE-----
|
|
||||||
Version: GnuPG v1
|
|
||||||
|
|
||||||
iQIcBAABAgAGBQJVlwFSAAoJEN9v2XEwYDfZ3IwP/3KOp/R3kHQMn4XKlecernhK
|
|
||||||
1iR0sh13gVhf4gVm/TbzLYmjSnWZzxQTs2WfyEZvbsm7pjKW0ulT7hqM81tKBkNH
|
|
||||||
7VpOUWVhvQUjwLGbV3lQsPrcshFejkWq3noHRIoTR6TsbwSyNqJ67wR/Ix+aDDBR
|
|
||||||
vfrCnG544+Dpl2RWF6bvib2+moWy+ztMghkiIONcqDg2KNhTB6V45CZ64Vw2S/1Z
|
|
||||||
88kSfd48D88wk06yKtoHck4A7DNqNLE+QHKbNy2BtTkvfT4x00XYRESPv/P1wKMk
|
|
||||||
n7mmJHx6idB3cvpm1vk0xiA8Xa3h1ot8w6a47NY48B8/UuwE6AROReWAwXAVOAvW
|
|
||||||
lInr4YP9YTYLAoUsH7RhrtFVUwIBZme6rbYeKvaU59LuVgQBL6eG5zHq5a45sCHg
|
|
||||||
8Bezfx5eXak4PClS36TguN350l5wbfBqiCxfqy05g+r0xYgTaFWKujmlP8c+8AN3
|
|
||||||
nOaNle4LUioC6RIvoZu/h/nhwYl6/HIRt/dlZ5/TRvs+YKo58Y8lXAKcWixHfk7s
|
|
||||||
Rx/NZWOMwhdyKqjRDADflauzpI/YboGkafozzHkIZg+uBd3zgTAAfUCvEHSGpKvw
|
|
||||||
pVlXIH4VN2gOfNroDMUAJN2UiIxp4Weukfk/gkMFAIlxmjZAcZ7wLKjABf4Vqeq+
|
|
||||||
Iubv9MiiqMa1t/MsDDb5
|
|
||||||
=Zz9/
|
|
||||||
-----END PGP SIGNATURE-----
|
|
3
coreutils-8.25.tar.xz
Normal file
3
coreutils-8.25.tar.xz
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:31e67c057a5b32a582f26408c789e11c2e8d676593324849dcf5779296cdce87
|
||||||
|
size 5725008
|
17
coreutils-8.25.tar.xz.sig
Normal file
17
coreutils-8.25.tar.xz.sig
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
-----BEGIN PGP SIGNATURE-----
|
||||||
|
Version: GnuPG v1
|
||||||
|
|
||||||
|
iQIcBAABAgAGBQJWn2zaAAoJEN9v2XEwYDfZvPsP/0o/JM9G7sLXFBX93XO7uYWH
|
||||||
|
8q2I5hIWcQZiGc/1PZtHM+2GLkh0heiLcKcsY1Ewk/EYlRuGS5MO5M4dh5YHAeaE
|
||||||
|
LFNfJcAIvClhwgniVXvElTaEfyBDhslh9WVKJCgZ748s6AgDv0SD5dI0X7bpj4Pz
|
||||||
|
j8wpWaJdrf8kRrjNqhTJtrmO92fUbkULG9+kmp9HZZFYzPUcLyF0ZdA2j3ZxWwP0
|
||||||
|
OK9zfuY08mVdPVFlPjep1kvNX+See86xDd3HiOkxAJ3oDvHCKPzn8PzREejYAMl+
|
||||||
|
NfdHovMw85MzaQlYsqduyr9iTBQSOyO6KJ85VM3GEexjxyGqqgwgSXLw9SZgaF9L
|
||||||
|
pbzAlcvGsFxsOEJF27dllL03SSqMfvDOXs/vRKALzi8jxW/gyGRG3Ft8Dd0pW70w
|
||||||
|
1vqRwFf/XQuChTUTYsAlshcKu8MPrQbJoU6UPbZOj0odFaWxNQ/E4msoN/NT9Xbi
|
||||||
|
5buuf43mvUmMXXT+p+fwXiaATn8wuOd4G/Mzc2Q/4zpyUi4MvnmUZ0FD0F39r1WS
|
||||||
|
jZI2QS8ktpOqV11WArShZLo6X0T9tHHt40/3PLeXJE+RuddU2VR+Yzx3jqUTK8TJ
|
||||||
|
7S9/DEu+l7dgioZdaXFwS0FcenH4PvRT+V0PwmPMWwrTKDa0G/zrtva488dCJQM7
|
||||||
|
SUlh/zsEIB3hX2erMwTl
|
||||||
|
=W+ce
|
||||||
|
-----END PGP SIGNATURE-----
|
@ -27,7 +27,7 @@ Index: src/local.mk
|
|||||||
|
|
||||||
# The list of all programs (separated in different variables to express
|
# The list of all programs (separated in different variables to express
|
||||||
# the how and when they should be installed) is defined in this makefile
|
# the how and when they should be installed) is defined in this makefile
|
||||||
@@ -276,6 +276,9 @@ src_factor_LDADD += $(LIB_GMP)
|
@@ -278,6 +278,9 @@ src_factor_LDADD += $(LIB_GMP)
|
||||||
# for getloadavg
|
# for getloadavg
|
||||||
src_uptime_LDADD += $(GETLOADAVG_LIBS)
|
src_uptime_LDADD += $(GETLOADAVG_LIBS)
|
||||||
|
|
||||||
|
@ -4,9 +4,9 @@
|
|||||||
|
|
||||||
Index: gnulib-tests/gnulib.mk
|
Index: gnulib-tests/gnulib.mk
|
||||||
===================================================================
|
===================================================================
|
||||||
--- gnulib-tests/gnulib.mk.orig 2015-07-09 15:10:56.833805476 +0200
|
--- gnulib-tests/gnulib.mk.orig
|
||||||
+++ gnulib-tests/gnulib.mk 2015-07-09 15:10:56.851805050 +0200
|
+++ gnulib-tests/gnulib.mk
|
||||||
@@ -907,11 +907,11 @@ EXTRA_DIST += test-getloadavg.c signatur
|
@@ -899,11 +899,11 @@ EXTRA_DIST += test-getloadavg.c signatur
|
||||||
## end gnulib module getloadavg-tests
|
## end gnulib module getloadavg-tests
|
||||||
|
|
||||||
## begin gnulib module getlogin-tests
|
## begin gnulib module getlogin-tests
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
lib/linebuffer.h | 8
|
lib/linebuffer.h | 8
|
||||||
src/cut.c | 443 ++++++++++++++++++++++++-
|
src/cut.c | 441 ++++++++++++++++++++++++-
|
||||||
src/expand.c | 165 +++++++++
|
src/expand.c | 165 +++++++++
|
||||||
src/fold.c | 308 ++++++++++++++++-
|
src/fold.c | 308 ++++++++++++++++-
|
||||||
src/join.c | 363 ++++++++++++++++++--
|
src/join.c | 363 ++++++++++++++++++--
|
||||||
src/pr.c | 444 +++++++++++++++++++++++--
|
src/pr.c | 444 +++++++++++++++++++++++--
|
||||||
src/sort.c | 763 +++++++++++++++++++++++++++++++++++++++++---
|
src/sort.c | 765 +++++++++++++++++++++++++++++++++++++++++---
|
||||||
src/unexpand.c | 228 +++++++++++++
|
src/unexpand.c | 228 +++++++++++++
|
||||||
src/uniq.c | 265 ++++++++++++++-
|
src/uniq.c | 263 ++++++++++++++-
|
||||||
tests/i18n/sort-month.sh | 34 +
|
tests/i18n/sort-month.sh | 34 +
|
||||||
tests/i18n/sort.sh | 29 +
|
tests/i18n/sort.sh | 29 +
|
||||||
tests/local.mk | 3
|
tests/local.mk | 3
|
||||||
@ -20,7 +20,7 @@
|
|||||||
tests/misc/unexpand.pl | 39 ++
|
tests/misc/unexpand.pl | 39 ++
|
||||||
tests/misc/uniq.pl | 55 +++
|
tests/misc/uniq.pl | 55 +++
|
||||||
tests/pr/pr-tests.pl | 49 ++
|
tests/pr/pr-tests.pl | 49 ++
|
||||||
22 files changed, 3290 insertions(+), 180 deletions(-)
|
22 files changed, 3287 insertions(+), 181 deletions(-)
|
||||||
|
|
||||||
Index: lib/linebuffer.h
|
Index: lib/linebuffer.h
|
||||||
===================================================================
|
===================================================================
|
||||||
@ -64,9 +64,9 @@ Index: src/cut.c
|
|||||||
#include "system.h"
|
#include "system.h"
|
||||||
|
|
||||||
#include "error.h"
|
#include "error.h"
|
||||||
@@ -37,6 +42,18 @@
|
@@ -38,6 +43,18 @@
|
||||||
#include "quote.h"
|
|
||||||
#include "xstrndup.h"
|
#include "set-fields.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
|
||||||
+ installation; work around this configuration error. */
|
+ installation; work around this configuration error. */
|
||||||
@ -83,7 +83,7 @@ Index: src/cut.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 "cut"
|
#define PROGRAM_NAME "cut"
|
||||||
|
|
||||||
@@ -53,6 +70,52 @@
|
@@ -54,6 +71,52 @@
|
||||||
} \
|
} \
|
||||||
while (0)
|
while (0)
|
||||||
|
|
||||||
@ -134,18 +134,19 @@ Index: src/cut.c
|
|||||||
+ while (0)
|
+ while (0)
|
||||||
+
|
+
|
||||||
|
|
||||||
struct range_pair
|
/* Pointer inside RP. When checking if a byte or field is selected
|
||||||
{
|
by a finite range, we check if it is between CURRENT_RP.LO
|
||||||
@@ -75,6 +138,8 @@ static size_t n_rp;
|
@@ -61,6 +124,9 @@
|
||||||
/* Number of `struct range_pair's allocated. */
|
CURRENT_RP.HI then we make CURRENT_RP to point to the next range pair. */
|
||||||
static size_t n_rp_allocated;
|
static struct field_range_pair *current_rp;
|
||||||
|
|
||||||
+/* Length of the delimiter given as argument to -d. */
|
+/* Length of the delimiter given as argument to -d. */
|
||||||
+size_t delimlen;
|
+size_t delimlen;
|
||||||
|
+
|
||||||
/* Append LOW, HIGH to the list RP of range pairs, allocating additional
|
/* This buffer is used to support the semantics of the -s option
|
||||||
space if necessary. Update global variable N_RP. When allocating,
|
(or lack of same) when the specified field list includes (does
|
||||||
@@ -106,15 +171,25 @@ enum operating_mode
|
not include) the first field. In both of those cases, the entire
|
||||||
|
@@ -77,15 +143,25 @@ enum operating_mode
|
||||||
{
|
{
|
||||||
undefined_mode,
|
undefined_mode,
|
||||||
|
|
||||||
@ -172,7 +173,7 @@ Index: src/cut.c
|
|||||||
/* If true do not output lines containing no delimiter characters.
|
/* If true do not output lines containing no delimiter characters.
|
||||||
Otherwise, all such lines are printed. This option is valid only
|
Otherwise, all such lines are printed. This option is valid only
|
||||||
with field mode. */
|
with field mode. */
|
||||||
@@ -126,6 +201,9 @@ static bool complement;
|
@@ -97,6 +173,9 @@ static bool complement;
|
||||||
|
|
||||||
/* The delimiter character for field mode. */
|
/* The delimiter character for field mode. */
|
||||||
static unsigned char delim;
|
static unsigned char delim;
|
||||||
@ -180,9 +181,9 @@ Index: src/cut.c
|
|||||||
+static wchar_t wcdelim;
|
+static wchar_t wcdelim;
|
||||||
+#endif
|
+#endif
|
||||||
|
|
||||||
/* True if the --output-delimiter=STRING option was specified. */
|
/* The delimiter for each line/record. */
|
||||||
static bool output_delimiter_specified;
|
static unsigned char line_delim = '\n';
|
||||||
@@ -189,7 +267,7 @@ Print selected parts of lines from each
|
@@ -164,7 +243,7 @@ Print selected parts of lines from each
|
||||||
-f, --fields=LIST select only these fields; also print any line\n\
|
-f, --fields=LIST select only these fields; also print any line\n\
|
||||||
that contains no delimiter character, unless\n\
|
that contains no delimiter character, unless\n\
|
||||||
the -s option is specified\n\
|
the -s option is specified\n\
|
||||||
@ -191,17 +192,7 @@ Index: src/cut.c
|
|||||||
"), stdout);
|
"), stdout);
|
||||||
fputs (_("\
|
fputs (_("\
|
||||||
--complement complement the set of selected bytes, characters\n\
|
--complement complement the set of selected bytes, characters\n\
|
||||||
@@ -380,6 +458,9 @@ set_fields (const char *fieldstr)
|
@@ -280,6 +359,82 @@ cut_bytes (FILE *stream)
|
||||||
if (operating_mode == byte_mode)
|
|
||||||
error (0, 0,
|
|
||||||
_("byte offset %s is too large"), quote (bad_num));
|
|
||||||
+ else if (operating_mode == character_mode)
|
|
||||||
+ error (0, 0,
|
|
||||||
+ _("character offset %s is too large"), quote (bad_num));
|
|
||||||
else
|
|
||||||
error (0, 0,
|
|
||||||
_("field number %s is too large"), quote (bad_num));
|
|
||||||
@@ -504,6 +585,82 @@ cut_bytes (FILE *stream)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -235,7 +226,7 @@ Index: src/cut.c
|
|||||||
+ bufpos = buf;
|
+ bufpos = buf;
|
||||||
+ memset (&state, '\0', sizeof(mbstate_t));
|
+ memset (&state, '\0', sizeof(mbstate_t));
|
||||||
+
|
+
|
||||||
+ current_rp = rp;
|
+ current_rp = frp;
|
||||||
+
|
+
|
||||||
+ while (1)
|
+ while (1)
|
||||||
+ {
|
+ {
|
||||||
@ -247,15 +238,15 @@ Index: src/cut.c
|
|||||||
+ if (wc == WEOF)
|
+ if (wc == WEOF)
|
||||||
+ {
|
+ {
|
||||||
+ if (idx > 0)
|
+ if (idx > 0)
|
||||||
+ putchar ('\n');
|
+ putchar (line_delim);
|
||||||
+ break;
|
+ break;
|
||||||
+ }
|
+ }
|
||||||
+ else if (wc == L'\n')
|
+ else if (wc == line_delim)
|
||||||
+ {
|
+ {
|
||||||
+ putchar ('\n');
|
+ putchar (line_delim);
|
||||||
+ idx = 0;
|
+ idx = 0;
|
||||||
+ print_delimiter = false;
|
+ print_delimiter = false;
|
||||||
+ current_rp = rp;
|
+ current_rp = frp;
|
||||||
+ }
|
+ }
|
||||||
+ else
|
+ else
|
||||||
+ {
|
+ {
|
||||||
@ -284,7 +275,7 @@ Index: src/cut.c
|
|||||||
/* Read from stream STREAM, printing to standard output any selected fields. */
|
/* Read from stream STREAM, printing to standard output any selected fields. */
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -648,13 +805,211 @@ cut_fields (FILE *stream)
|
@@ -425,13 +580,211 @@ cut_fields (FILE *stream)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -306,7 +297,7 @@ Index: src/cut.c
|
|||||||
+ mbstate_t state; /* State of the stream. */
|
+ mbstate_t state; /* State of the stream. */
|
||||||
+ bool convfail = false; /* true, when conversion failed. Otherwise false. */
|
+ bool convfail = false; /* true, when conversion failed. Otherwise false. */
|
||||||
+
|
+
|
||||||
+ current_rp = rp;
|
+ current_rp = frp;
|
||||||
+
|
+
|
||||||
+ found_any_selected_field = 0;
|
+ found_any_selected_field = 0;
|
||||||
+ field_idx = 1;
|
+ field_idx = 1;
|
||||||
@ -354,7 +345,7 @@ Index: src/cut.c
|
|||||||
+ buflen -= mblength;
|
+ buflen -= mblength;
|
||||||
+ bufpos += mblength;
|
+ bufpos += mblength;
|
||||||
+
|
+
|
||||||
+ if (!convfail && (wc == L'\n' || wc == wcdelim))
|
+ if (!convfail && (wc == line_delim || wc == wcdelim))
|
||||||
+ break;
|
+ break;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
@ -374,8 +365,8 @@ Index: src/cut.c
|
|||||||
+ {
|
+ {
|
||||||
+ fwrite (field_1_buffer, sizeof (char), len, stdout);
|
+ fwrite (field_1_buffer, sizeof (char), len, stdout);
|
||||||
+ /* Make sure the output line is newline terminated. */
|
+ /* Make sure the output line is newline terminated. */
|
||||||
+ if (convfail || (!convfail && wc != L'\n'))
|
+ if (convfail || (!convfail && wc != line_delim))
|
||||||
+ putchar ('\n');
|
+ putchar (line_delim);
|
||||||
+ }
|
+ }
|
||||||
+ continue;
|
+ continue;
|
||||||
+ }
|
+ }
|
||||||
@ -410,7 +401,7 @@ Index: src/cut.c
|
|||||||
+
|
+
|
||||||
+ if (wc == WEOF)
|
+ if (wc == WEOF)
|
||||||
+ break;
|
+ break;
|
||||||
+ else if (!convfail && (wc == wcdelim || wc == L'\n'))
|
+ else if (!convfail && (wc == wcdelim || wc == line_delim))
|
||||||
+ {
|
+ {
|
||||||
+ buflen -= mblength;
|
+ buflen -= mblength;
|
||||||
+ bufpos += mblength;
|
+ bufpos += mblength;
|
||||||
@ -425,20 +416,20 @@ Index: src/cut.c
|
|||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ if ((!convfail || wc == L'\n') && buflen < 1)
|
+ if ((!convfail || wc == line_delim) && buflen < 1)
|
||||||
+ wc = WEOF;
|
+ wc = WEOF;
|
||||||
+
|
+
|
||||||
+ if (!convfail && wc == wcdelim)
|
+ if (!convfail && wc == wcdelim)
|
||||||
+ next_item (&field_idx);
|
+ next_item (&field_idx);
|
||||||
+ else if (wc == WEOF || (!convfail && wc == L'\n'))
|
+ else if (wc == WEOF || (!convfail && wc == line_delim))
|
||||||
+ {
|
+ {
|
||||||
+ if (found_any_selected_field
|
+ if (found_any_selected_field
|
||||||
+ || (!empty_input && !(suppress_non_delimited && field_idx == 1)))
|
+ || (!empty_input && !(suppress_non_delimited && field_idx == 1)))
|
||||||
+ putchar ('\n');
|
+ putchar (line_delim);
|
||||||
+ if (wc == WEOF)
|
+ if (wc == WEOF)
|
||||||
+ break;
|
+ break;
|
||||||
+ field_idx = 1;
|
+ field_idx = 1;
|
||||||
+ current_rp = rp;
|
+ current_rp = frp;
|
||||||
+ found_any_selected_field = 0;
|
+ found_any_selected_field = 0;
|
||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
@ -499,7 +490,7 @@ Index: src/cut.c
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Process file FILE to standard output.
|
/* Process file FILE to standard output.
|
||||||
@@ -706,6 +1061,7 @@ main (int argc, char **argv)
|
@@ -483,6 +836,7 @@ main (int argc, char **argv)
|
||||||
bool ok;
|
bool ok;
|
||||||
bool delim_specified = false;
|
bool delim_specified = false;
|
||||||
char *spec_list_string IF_LINT ( = NULL);
|
char *spec_list_string IF_LINT ( = NULL);
|
||||||
@ -507,7 +498,7 @@ Index: src/cut.c
|
|||||||
|
|
||||||
initialize_main (&argc, &argv);
|
initialize_main (&argc, &argv);
|
||||||
set_program_name (argv[0]);
|
set_program_name (argv[0]);
|
||||||
@@ -728,7 +1084,6 @@ main (int argc, char **argv)
|
@@ -505,7 +859,6 @@ main (int argc, char **argv)
|
||||||
switch (optc)
|
switch (optc)
|
||||||
{
|
{
|
||||||
case 'b':
|
case 'b':
|
||||||
@ -515,7 +506,7 @@ Index: src/cut.c
|
|||||||
/* Build the byte list. */
|
/* Build the byte list. */
|
||||||
if (operating_mode != undefined_mode)
|
if (operating_mode != undefined_mode)
|
||||||
FATAL_ERROR (_("only one type of list may be specified"));
|
FATAL_ERROR (_("only one type of list may be specified"));
|
||||||
@@ -736,6 +1091,14 @@ main (int argc, char **argv)
|
@@ -513,6 +866,14 @@ main (int argc, char **argv)
|
||||||
spec_list_string = optarg;
|
spec_list_string = optarg;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -530,7 +521,7 @@ Index: src/cut.c
|
|||||||
case 'f':
|
case 'f':
|
||||||
/* Build the field list. */
|
/* Build the field list. */
|
||||||
if (operating_mode != undefined_mode)
|
if (operating_mode != undefined_mode)
|
||||||
@@ -747,10 +1110,38 @@ main (int argc, char **argv)
|
@@ -524,10 +885,38 @@ main (int argc, char **argv)
|
||||||
case 'd':
|
case 'd':
|
||||||
/* New delimiter. */
|
/* New delimiter. */
|
||||||
/* Interpret -d '' to mean 'use the NUL byte as the delimiter.' */
|
/* Interpret -d '' to mean 'use the NUL byte as the delimiter.' */
|
||||||
@ -573,7 +564,7 @@ Index: src/cut.c
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case OUTPUT_DELIMITER_OPTION:
|
case OUTPUT_DELIMITER_OPTION:
|
||||||
@@ -763,6 +1154,7 @@ main (int argc, char **argv)
|
@@ -540,6 +929,7 @@ main (int argc, char **argv)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'n':
|
case 'n':
|
||||||
@ -581,8 +572,8 @@ Index: src/cut.c
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 's':
|
case 's':
|
||||||
@@ -802,15 +1194,34 @@ main (int argc, char **argv)
|
@@ -579,15 +969,34 @@ main (int argc, char **argv)
|
||||||
}
|
| (complement ? SETFLD_COMPLEMENT : 0) );
|
||||||
|
|
||||||
if (!delim_specified)
|
if (!delim_specified)
|
||||||
- delim = '\t';
|
- delim = '\t';
|
||||||
@ -946,7 +937,7 @@ Index: src/fold.c
|
|||||||
-
|
-
|
||||||
- if (istream == NULL)
|
- if (istream == NULL)
|
||||||
- {
|
- {
|
||||||
- error (0, errno, "%s", filename);
|
- error (0, errno, "%s", quotef (filename));
|
||||||
- return false;
|
- return false;
|
||||||
- }
|
- }
|
||||||
|
|
||||||
@ -1176,7 +1167,7 @@ Index: src/fold.c
|
|||||||
+
|
+
|
||||||
+ if (istream == NULL)
|
+ if (istream == NULL)
|
||||||
+ {
|
+ {
|
||||||
+ error (0, errno, "%s", filename);
|
+ error (0, errno, "%s", quotef (filename));
|
||||||
+ return 1;
|
+ return 1;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
@ -1190,7 +1181,7 @@ Index: src/fold.c
|
|||||||
+
|
+
|
||||||
if (ferror (istream))
|
if (ferror (istream))
|
||||||
{
|
{
|
||||||
error (0, saved_errno, "%s", filename);
|
error (0, saved_errno, "%s", quotef (filename));
|
||||||
@@ -251,7 +498,8 @@ main (int argc, char **argv)
|
@@ -251,7 +498,8 @@ main (int argc, char **argv)
|
||||||
|
|
||||||
atexit (close_stdout);
|
atexit (close_stdout);
|
||||||
@ -1290,7 +1281,7 @@ Index: src/join.c
|
|||||||
+ else
|
+ else
|
||||||
{
|
{
|
||||||
/* Skip leading blanks before the first field. */
|
/* Skip leading blanks before the first field. */
|
||||||
while (isblank (to_uchar (*ptr)))
|
while (field_sep (*ptr))
|
||||||
@@ -305,6 +322,147 @@ xfields (struct line *line)
|
@@ -305,6 +322,147 @@ xfields (struct line *line)
|
||||||
extract_field (line, ptr, lim - ptr);
|
extract_field (line, ptr, lim - ptr);
|
||||||
}
|
}
|
||||||
@ -1359,7 +1350,7 @@ Index: src/join.c
|
|||||||
+ }
|
+ }
|
||||||
+ mblength = (mblength < 1) ? 1 : mblength;
|
+ mblength = (mblength < 1) ? 1 : mblength;
|
||||||
+
|
+
|
||||||
+ if (!iswblank(wc))
|
+ if (!iswblank(wc) && wc != '\n')
|
||||||
+ break;
|
+ break;
|
||||||
+ ptr += mblength;
|
+ ptr += mblength;
|
||||||
+ }
|
+ }
|
||||||
@ -1390,7 +1381,7 @@ Index: src/join.c
|
|||||||
+ }
|
+ }
|
||||||
+ mblength = (mblength < 1) ? 1 : mblength;
|
+ mblength = (mblength < 1) ? 1 : mblength;
|
||||||
+
|
+
|
||||||
+ if (iswblank (wc))
|
+ if (iswblank (wc) || wc == '\n')
|
||||||
+ break;
|
+ break;
|
||||||
+
|
+
|
||||||
+ sep += mblength;
|
+ sep += mblength;
|
||||||
@ -1423,7 +1414,7 @@ Index: src/join.c
|
|||||||
+ }
|
+ }
|
||||||
+ mblength = (mblength < 1) ? 1 : mblength;
|
+ mblength = (mblength < 1) ? 1 : mblength;
|
||||||
+
|
+
|
||||||
+ if (!iswblank (wc))
|
+ if (!iswblank (wc) && wc != '\n')
|
||||||
+ break;
|
+ break;
|
||||||
+
|
+
|
||||||
+ ptr += mblength;
|
+ ptr += mblength;
|
||||||
@ -1718,7 +1709,7 @@ Index: src/pr.c
|
|||||||
===================================================================
|
===================================================================
|
||||||
--- src/pr.c.orig
|
--- src/pr.c.orig
|
||||||
+++ src/pr.c
|
+++ src/pr.c
|
||||||
@@ -312,6 +312,24 @@
|
@@ -311,6 +311,24 @@
|
||||||
|
|
||||||
#include <getopt.h>
|
#include <getopt.h>
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
@ -1743,7 +1734,7 @@ Index: src/pr.c
|
|||||||
#include "system.h"
|
#include "system.h"
|
||||||
#include "error.h"
|
#include "error.h"
|
||||||
#include "fadvise.h"
|
#include "fadvise.h"
|
||||||
@@ -324,6 +342,18 @@
|
@@ -323,6 +341,18 @@
|
||||||
#include "xstrtol.h"
|
#include "xstrtol.h"
|
||||||
#include "xdectoint.h"
|
#include "xdectoint.h"
|
||||||
|
|
||||||
@ -1762,7 +1753,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
|
@@ -415,7 +445,20 @@ struct COLUMN
|
||||||
|
|
||||||
typedef struct COLUMN COLUMN;
|
typedef struct COLUMN COLUMN;
|
||||||
|
|
||||||
@ -1784,7 +1775,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);
|
@@ -427,6 +470,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,
|
||||||
@ -1792,7 +1783,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);
|
@@ -440,7 +484,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);
|
||||||
@ -1800,7 +1791,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;
|
@@ -452,7 +495,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]. */
|
||||||
@ -1809,7 +1800,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;
|
@@ -556,7 +599,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. */
|
||||||
@ -1818,7 +1809,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;
|
@@ -566,7 +609,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. */
|
||||||
@ -1830,7 +1821,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;
|
@@ -636,7 +682,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. */
|
||||||
@ -1845,7 +1836,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;
|
@@ -689,6 +741,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 *col_sep_string = (char *) "";
|
static char *col_sep_string = (char *) "";
|
||||||
static int col_sep_length = 0;
|
static int col_sep_length = 0;
|
||||||
@ -1853,7 +1844,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";
|
||||||
|
|
||||||
@@ -840,6 +893,13 @@ separator_string (const char *optarg_S)
|
@@ -839,6 +892,13 @@ separator_string (const char *optarg_S)
|
||||||
col_sep_length = (int) strlen (optarg_S);
|
col_sep_length = (int) strlen (optarg_S);
|
||||||
col_sep_string = xmalloc (col_sep_length + 1);
|
col_sep_string = xmalloc (col_sep_length + 1);
|
||||||
strcpy (col_sep_string, optarg_S);
|
strcpy (col_sep_string, optarg_S);
|
||||||
@ -1867,7 +1858,7 @@ Index: src/pr.c
|
|||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -864,6 +924,21 @@ main (int argc, char **argv)
|
@@ -863,6 +923,21 @@ main (int argc, char **argv)
|
||||||
|
|
||||||
atexit (close_stdout);
|
atexit (close_stdout);
|
||||||
|
|
||||||
@ -1889,7 +1880,7 @@ Index: src/pr.c
|
|||||||
n_files = 0;
|
n_files = 0;
|
||||||
file_names = (argc > 1
|
file_names = (argc > 1
|
||||||
? xmalloc ((argc - 1) * sizeof (char *))
|
? xmalloc ((argc - 1) * sizeof (char *))
|
||||||
@@ -940,8 +1015,12 @@ main (int argc, char **argv)
|
@@ -939,8 +1014,12 @@ main (int argc, char **argv)
|
||||||
break;
|
break;
|
||||||
case 'e':
|
case 'e':
|
||||||
if (optarg)
|
if (optarg)
|
||||||
@ -1904,7 +1895,7 @@ Index: src/pr.c
|
|||||||
/* Could check tab width > 0. */
|
/* Could check tab width > 0. */
|
||||||
untabify_input = true;
|
untabify_input = true;
|
||||||
break;
|
break;
|
||||||
@@ -954,8 +1033,12 @@ main (int argc, char **argv)
|
@@ -953,8 +1032,12 @@ main (int argc, char **argv)
|
||||||
break;
|
break;
|
||||||
case 'i':
|
case 'i':
|
||||||
if (optarg)
|
if (optarg)
|
||||||
@ -1919,7 +1910,7 @@ Index: src/pr.c
|
|||||||
/* Could check tab width > 0. */
|
/* Could check tab width > 0. */
|
||||||
tabify_output = true;
|
tabify_output = true;
|
||||||
break;
|
break;
|
||||||
@@ -973,8 +1056,8 @@ main (int argc, char **argv)
|
@@ -972,8 +1055,8 @@ main (int argc, char **argv)
|
||||||
case 'n':
|
case 'n':
|
||||||
numbered_lines = true;
|
numbered_lines = true;
|
||||||
if (optarg)
|
if (optarg)
|
||||||
@ -1930,7 +1921,7 @@ Index: src/pr.c
|
|||||||
break;
|
break;
|
||||||
case 'N':
|
case 'N':
|
||||||
skip_count = false;
|
skip_count = false;
|
||||||
@@ -998,7 +1081,7 @@ main (int argc, char **argv)
|
@@ -997,7 +1080,7 @@ main (int argc, char **argv)
|
||||||
old_s = false;
|
old_s = false;
|
||||||
/* Reset an additional input of -s, -S dominates -s */
|
/* Reset an additional input of -s, -S dominates -s */
|
||||||
col_sep_string = bad_cast ("");
|
col_sep_string = bad_cast ("");
|
||||||
@ -2038,7 +2029,7 @@ Index: src/pr.c
|
|||||||
- clump_buff = xmalloc (MAX (8, chars_per_input_tab));
|
- clump_buff = xmalloc (MAX (8, chars_per_input_tab));
|
||||||
+ clump_buff = xmalloc (mb_len * MAX (8, chars_per_input_tab));
|
+ clump_buff = xmalloc (mb_len * MAX (8, chars_per_input_tab));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Open the necessary files,
|
/* Open the necessary files,
|
||||||
@@ -1383,7 +1506,7 @@ init_funcs (void)
|
@@ -1383,7 +1506,7 @@ init_funcs (void)
|
||||||
|
|
||||||
@ -2500,7 +2491,7 @@ Index: src/sort.c
|
|||||||
#include "system.h"
|
#include "system.h"
|
||||||
#include "argmatch.h"
|
#include "argmatch.h"
|
||||||
#include "error.h"
|
#include "error.h"
|
||||||
@@ -164,14 +172,39 @@ static int decimal_point;
|
@@ -163,14 +171,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;
|
||||||
|
|
||||||
@ -2541,7 +2532,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 };
|
||||||
|
|
||||||
@@ -345,13 +378,11 @@ static bool reverse;
|
@@ -344,13 +377,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;
|
||||||
|
|
||||||
@ -2598,7 +2589,7 @@ Index: src/sort.c
|
|||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ *length = (mblength < 1) ? 1 : mblength;
|
+ *length = (mblength < 1) ? 1 : mblength;
|
||||||
+ return iswblank (wc);
|
+ return iswblank (wc) || wc == '\n';
|
||||||
+}
|
+}
|
||||||
+#endif
|
+#endif
|
||||||
+
|
+
|
||||||
@ -3037,7 +3028,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;
|
||||||
@@ -2279,15 +2644,14 @@ debug_key (struct line const *line, stru
|
@@ -2280,15 +2645,14 @@ debug_key (struct line const *line, stru
|
||||||
char saved = *lim;
|
char saved = *lim;
|
||||||
*lim = '\0';
|
*lim = '\0';
|
||||||
|
|
||||||
@ -3055,7 +3046,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)
|
||||||
@@ -2431,7 +2795,7 @@ key_warnings (struct keyfield const *gke
|
@@ -2432,7 +2796,7 @@ key_warnings (struct keyfield const *gke
|
||||||
bool maybe_space_aligned = !hard_LC_COLLATE && default_key_compare (key)
|
bool maybe_space_aligned = !hard_LC_COLLATE && default_key_compare (key)
|
||||||
&& !(key->schar || key->echar);
|
&& !(key->schar || key->echar);
|
||||||
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 */
|
||||||
@ -3064,7 +3055,7 @@ Index: src/sort.c
|
|||||||
&& ((!key->skipsblanks && !(implicit_skip || maybe_space_aligned))
|
&& ((!key->skipsblanks && !(implicit_skip || maybe_space_aligned))
|
||||||
|| (!key->skipsblanks && key->schar)
|
|| (!key->skipsblanks && key->schar)
|
||||||
|| (!key->skipeblanks && key->echar)))
|
|| (!key->skipeblanks && key->echar)))
|
||||||
@@ -2489,11 +2853,87 @@ key_warnings (struct keyfield const *gke
|
@@ -2490,11 +2854,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"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3153,7 +3144,7 @@ Index: src/sort.c
|
|||||||
{
|
{
|
||||||
struct keyfield *key = keylist;
|
struct keyfield *key = keylist;
|
||||||
|
|
||||||
@@ -2578,7 +3018,7 @@ keycompare (struct line const *a, struct
|
@@ -2579,7 +3019,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)
|
||||||
@ -3162,7 +3153,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)
|
||||||
@@ -2694,6 +3134,211 @@ keycompare (struct line const *a, struct
|
@@ -2695,6 +3135,211 @@ keycompare (struct line const *a, struct
|
||||||
return key->reverse ? -diff : diff;
|
return key->reverse ? -diff : diff;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3374,7 +3365,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. */
|
||||||
|
|
||||||
@@ -2721,7 +3366,7 @@ compare (struct line const *a, struct li
|
@@ -2722,7 +3367,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;
|
||||||
@ -3383,7 +3374,7 @@ Index: src/sort.c
|
|||||||
{
|
{
|
||||||
/* Note xmemcoll0 is a performance enhancement as
|
/* Note xmemcoll0 is a performance enhancement as
|
||||||
it will not unconditionally write '\0' after the
|
it will not unconditionally write '\0' after the
|
||||||
@@ -4120,6 +4765,7 @@ set_ordering (char const *s, struct keyf
|
@@ -4121,6 +4766,7 @@ set_ordering (char const *s, struct keyf
|
||||||
break;
|
break;
|
||||||
case 'f':
|
case 'f':
|
||||||
key->translate = fold_toupper;
|
key->translate = fold_toupper;
|
||||||
@ -3391,7 +3382,7 @@ Index: src/sort.c
|
|||||||
break;
|
break;
|
||||||
case 'g':
|
case 'g':
|
||||||
key->general_numeric = true;
|
key->general_numeric = true;
|
||||||
@@ -4197,7 +4843,7 @@ main (int argc, char **argv)
|
@@ -4199,7 +4845,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);
|
||||||
@ -3400,7 +3391,7 @@ Index: src/sort.c
|
|||||||
hard_LC_TIME = hard_locale (LC_TIME);
|
hard_LC_TIME = hard_locale (LC_TIME);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -4218,6 +4864,29 @@ main (int argc, char **argv)
|
@@ -4220,6 +4866,29 @@ main (int argc, char **argv)
|
||||||
thousands_sep = -1;
|
thousands_sep = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3430,7 +3421,7 @@ Index: src/sort.c
|
|||||||
have_read_stdin = false;
|
have_read_stdin = false;
|
||||||
inittables ();
|
inittables ();
|
||||||
|
|
||||||
@@ -4492,13 +5161,34 @@ main (int argc, char **argv)
|
@@ -4494,13 +5163,34 @@ main (int argc, char **argv)
|
||||||
|
|
||||||
case 't':
|
case 't':
|
||||||
{
|
{
|
||||||
@ -3469,7 +3460,7 @@ Index: src/sort.c
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* Provoke with 'sort -txx'. Complain about
|
/* Provoke with 'sort -txx'. Complain about
|
||||||
@@ -4509,9 +5199,12 @@ main (int argc, char **argv)
|
@@ -4511,9 +5201,12 @@ main (int argc, char **argv)
|
||||||
quote (optarg));
|
quote (optarg));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3484,6 +3475,19 @@ Index: src/sort.c
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@@ -4751,12 +5444,10 @@ main (int argc, char **argv)
|
||||||
|
sort (files, nfiles, outfile, nthreads);
|
||||||
|
}
|
||||||
|
|
||||||
|
-#ifdef lint
|
||||||
|
if (files_from)
|
||||||
|
readtokens0_free (&tok);
|
||||||
|
else
|
||||||
|
free (files);
|
||||||
|
-#endif
|
||||||
|
|
||||||
|
if (have_read_stdin && fclose (stdin) == EOF)
|
||||||
|
die (_("close failed"), "-");
|
||||||
Index: src/unexpand.c
|
Index: src/unexpand.c
|
||||||
===================================================================
|
===================================================================
|
||||||
--- src/unexpand.c.orig
|
--- src/unexpand.c.orig
|
||||||
@ -3765,11 +3769,10 @@ Index: src/uniq.c
|
|||||||
#include "system.h"
|
#include "system.h"
|
||||||
#include "argmatch.h"
|
#include "argmatch.h"
|
||||||
#include "linebuffer.h"
|
#include "linebuffer.h"
|
||||||
@@ -32,7 +43,19 @@
|
@@ -33,6 +44,18 @@
|
||||||
#include "stdio--.h"
|
|
||||||
#include "xmemcoll.h"
|
|
||||||
#include "xstrtol.h"
|
#include "xstrtol.h"
|
||||||
-#include "memcasecmp.h"
|
#include "memcasecmp.h"
|
||||||
|
#include "quote.h"
|
||||||
+#include "xmemcoll.h"
|
+#include "xmemcoll.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
|
||||||
@ -3782,7 +3785,6 @@ Index: src/uniq.c
|
|||||||
+#if HAVE_MBRTOWC && defined mbstate_t
|
+#if HAVE_MBRTOWC && defined mbstate_t
|
||||||
+# define mbrtowc(pwc, s, n, ps) (mbrtowc) (pwc, s, n, 0)
|
+# define mbrtowc(pwc, s, n, ps) (mbrtowc) (pwc, s, n, 0)
|
||||||
+#endif
|
+#endif
|
||||||
+
|
|
||||||
|
|
||||||
/* 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"
|
||||||
@ -3797,7 +3799,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'},
|
||||||
@@ -251,7 +278,7 @@ size_opt (char const *opt, char const *m
|
@@ -252,7 +279,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
|
||||||
@ -3806,7 +3808,7 @@ Index: src/uniq.c
|
|||||||
{
|
{
|
||||||
size_t count;
|
size_t count;
|
||||||
char const *lp = line->buffer;
|
char const *lp = line->buffer;
|
||||||
@@ -271,6 +298,83 @@ find_field (struct linebuffer const *lin
|
@@ -272,6 +299,83 @@ find_field (struct linebuffer const *lin
|
||||||
return line->buffer + i;
|
return line->buffer + i;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3857,7 +3859,7 @@ Index: src/uniq.c
|
|||||||
+ {
|
+ {
|
||||||
+ MBCHAR_TO_WCHAR (wc, mblength, lp, pos, size, statep, convfail);
|
+ MBCHAR_TO_WCHAR (wc, mblength, lp, pos, size, statep, convfail);
|
||||||
+
|
+
|
||||||
+ if (convfail || !iswblank (wc))
|
+ if (convfail || !(iswblank (wc) || wc == '\n'))
|
||||||
+ {
|
+ {
|
||||||
+ pos += mblength;
|
+ pos += mblength;
|
||||||
+ break;
|
+ break;
|
||||||
@ -3869,7 +3871,7 @@ Index: src/uniq.c
|
|||||||
+ {
|
+ {
|
||||||
+ MBCHAR_TO_WCHAR (wc, mblength, lp, pos, size, statep, convfail);
|
+ MBCHAR_TO_WCHAR (wc, mblength, lp, pos, size, statep, convfail);
|
||||||
+
|
+
|
||||||
+ if (!convfail && iswblank (wc))
|
+ if (!convfail && (iswblank (wc) || wc == '\n'))
|
||||||
+ break;
|
+ break;
|
||||||
+
|
+
|
||||||
+ pos += mblength;
|
+ pos += mblength;
|
||||||
@ -3890,7 +3892,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.
|
||||||
@@ -279,6 +383,8 @@ find_field (struct linebuffer const *lin
|
@@ -280,6 +384,8 @@ find_field (struct linebuffer const *lin
|
||||||
static bool
|
static bool
|
||||||
different (char *old, char *new, size_t oldlen, size_t newlen)
|
different (char *old, char *new, size_t oldlen, size_t newlen)
|
||||||
{
|
{
|
||||||
@ -3899,7 +3901,7 @@ Index: src/uniq.c
|
|||||||
if (check_chars < oldlen)
|
if (check_chars < oldlen)
|
||||||
oldlen = check_chars;
|
oldlen = check_chars;
|
||||||
if (check_chars < newlen)
|
if (check_chars < newlen)
|
||||||
@@ -286,14 +392,103 @@ different (char *old, char *new, size_t
|
@@ -287,15 +393,104 @@ different (char *old, char *new, size_t
|
||||||
|
|
||||||
if (ignore_case)
|
if (ignore_case)
|
||||||
{
|
{
|
||||||
@ -3931,8 +3933,8 @@ Index: src/uniq.c
|
|||||||
+
|
+
|
||||||
+ return xmemcoll (copy_old, oldlen, copy_new, newlen);
|
+ return xmemcoll (copy_old, oldlen, copy_new, newlen);
|
||||||
+
|
+
|
||||||
+}
|
}
|
||||||
+
|
|
||||||
+#if HAVE_MBRTOWC
|
+#if HAVE_MBRTOWC
|
||||||
+static int
|
+static int
|
||||||
+different_multi (const char *old, const char *new, size_t oldlen, size_t newlen, mbstate_t oldstate, mbstate_t newstate)
|
+different_multi (const char *old, const char *new, size_t oldlen, size_t newlen, mbstate_t oldstate, mbstate_t newstate)
|
||||||
@ -4003,12 +4005,13 @@ Index: src/uniq.c
|
|||||||
+ free (copy[1]);
|
+ free (copy[1]);
|
||||||
+ return rc;
|
+ return rc;
|
||||||
+
|
+
|
||||||
}
|
+}
|
||||||
+#endif
|
+#endif
|
||||||
|
+
|
||||||
/* Output the line in linebuffer LINE to standard output
|
/* Output the line in linebuffer LINE to standard output
|
||||||
provided that the switches say it should be output.
|
provided that the switches say it should be output.
|
||||||
@@ -358,19 +553,38 @@ check_file (const char *infile, const ch
|
MATCH is true if the line matches the previous line.
|
||||||
|
@@ -359,19 +554,38 @@ check_file (const char *infile, const ch
|
||||||
char *prevfield IF_LINT ( = NULL);
|
char *prevfield IF_LINT ( = NULL);
|
||||||
size_t prevlen IF_LINT ( = 0);
|
size_t prevlen IF_LINT ( = 0);
|
||||||
bool first_group_printed = false;
|
bool first_group_printed = false;
|
||||||
@ -4047,7 +4050,7 @@ Index: src/uniq.c
|
|||||||
new_group = (prevline->length == 0
|
new_group = (prevline->length == 0
|
||||||
|| different (thisfield, prevfield, thislen, prevlen));
|
|| different (thisfield, prevfield, thislen, prevlen));
|
||||||
|
|
||||||
@@ -388,6 +602,10 @@ check_file (const char *infile, const ch
|
@@ -389,6 +603,10 @@ check_file (const char *infile, const ch
|
||||||
SWAP_LINES (prevline, thisline);
|
SWAP_LINES (prevline, thisline);
|
||||||
prevfield = thisfield;
|
prevfield = thisfield;
|
||||||
prevlen = thislen;
|
prevlen = thislen;
|
||||||
@ -4058,7 +4061,7 @@ Index: src/uniq.c
|
|||||||
first_group_printed = true;
|
first_group_printed = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -400,17 +618,26 @@ check_file (const char *infile, const ch
|
@@ -401,17 +619,26 @@ check_file (const char *infile, const ch
|
||||||
size_t prevlen;
|
size_t prevlen;
|
||||||
uintmax_t match_count = 0;
|
uintmax_t match_count = 0;
|
||||||
bool first_delimiter = true;
|
bool first_delimiter = true;
|
||||||
@ -4085,7 +4088,7 @@ Index: src/uniq.c
|
|||||||
if (readlinebuffer_delim (thisline, stdin, delimiter) == 0)
|
if (readlinebuffer_delim (thisline, stdin, delimiter) == 0)
|
||||||
{
|
{
|
||||||
if (ferror (stdin))
|
if (ferror (stdin))
|
||||||
@@ -419,6 +646,14 @@ check_file (const char *infile, const ch
|
@@ -420,6 +647,14 @@ check_file (const char *infile, const ch
|
||||||
}
|
}
|
||||||
thisfield = find_field (thisline);
|
thisfield = find_field (thisline);
|
||||||
thislen = thisline->length - 1 - (thisfield - thisline->buffer);
|
thislen = thisline->length - 1 - (thisfield - thisline->buffer);
|
||||||
@ -4100,7 +4103,7 @@ Index: src/uniq.c
|
|||||||
match = !different (thisfield, prevfield, thislen, prevlen);
|
match = !different (thisfield, prevfield, thislen, prevlen);
|
||||||
match_count += match;
|
match_count += match;
|
||||||
|
|
||||||
@@ -451,6 +686,9 @@ check_file (const char *infile, const ch
|
@@ -452,6 +687,9 @@ check_file (const char *infile, const ch
|
||||||
SWAP_LINES (prevline, thisline);
|
SWAP_LINES (prevline, thisline);
|
||||||
prevfield = thisfield;
|
prevfield = thisfield;
|
||||||
prevlen = thislen;
|
prevlen = thislen;
|
||||||
@ -4110,7 +4113,7 @@ Index: src/uniq.c
|
|||||||
if (!match)
|
if (!match)
|
||||||
match_count = 0;
|
match_count = 0;
|
||||||
}
|
}
|
||||||
@@ -497,6 +735,19 @@ main (int argc, char **argv)
|
@@ -498,6 +736,19 @@ main (int argc, char **argv)
|
||||||
|
|
||||||
atexit (close_stdout);
|
atexit (close_stdout);
|
||||||
|
|
||||||
@ -4130,6 +4133,45 @@ Index: src/uniq.c
|
|||||||
skip_chars = 0;
|
skip_chars = 0;
|
||||||
skip_fields = 0;
|
skip_fields = 0;
|
||||||
check_chars = SIZE_MAX;
|
check_chars = SIZE_MAX;
|
||||||
|
Index: tests/i18n/sort-month.sh
|
||||||
|
===================================================================
|
||||||
|
--- /dev/null
|
||||||
|
+++ tests/i18n/sort-month.sh
|
||||||
|
@@ -0,0 +1,34 @@
|
||||||
|
+#!/bin/sh
|
||||||
|
+# Verify sort -M multi-byte support.
|
||||||
|
+
|
||||||
|
+. "${srcdir=.}/tests/init.sh"; path_prepend_ ./src
|
||||||
|
+print_ver_ sort
|
||||||
|
+require_valgrind_
|
||||||
|
+
|
||||||
|
+# Skip this test if some deallocations are
|
||||||
|
+# avoided at process end.
|
||||||
|
+grep '^#define lint 1' $CONFIG_HEADER > /dev/null ||
|
||||||
|
+ skip_ 'Allocation checks only work reliably in "lint" mode'
|
||||||
|
+
|
||||||
|
+export LC_ALL=en_US.UTF-8
|
||||||
|
+locale -k LC_CTYPE | grep -q "charmap.*UTF-8" \
|
||||||
|
+ || skip_ "No UTF-8 locale available"
|
||||||
|
+
|
||||||
|
+# Note the use of ɑ here which expands to
|
||||||
|
+# a wider representation upon case conversion
|
||||||
|
+# which triggered an assertion in sort -M
|
||||||
|
+cat <<EOF > exp
|
||||||
|
+.
|
||||||
|
+ɑ
|
||||||
|
+EOF
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+# check large mem leak with --month-sort
|
||||||
|
+# https://bugzilla.redhat.com/show_bug.cgi?id=1259942
|
||||||
|
+valgrind --leak-check=full \
|
||||||
|
+ --error-exitcode=1 --errors-for-leak-kinds=definite \
|
||||||
|
+ sort -M < exp > out || fail=1
|
||||||
|
+compare exp out || { fail=1; cat out; }
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+Exit $fail
|
||||||
Index: tests/i18n/sort.sh
|
Index: tests/i18n/sort.sh
|
||||||
===================================================================
|
===================================================================
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
@ -4168,7 +4210,7 @@ Index: tests/local.mk
|
|||||||
===================================================================
|
===================================================================
|
||||||
--- tests/local.mk.orig
|
--- tests/local.mk.orig
|
||||||
+++ tests/local.mk
|
+++ tests/local.mk
|
||||||
@@ -341,6 +341,9 @@ all_tests = \
|
@@ -344,6 +344,9 @@ 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 \
|
||||||
@ -4196,7 +4238,7 @@ Index: tests/misc/cut.pl
|
|||||||
|
|
||||||
my $prog = 'cut';
|
my $prog = 'cut';
|
||||||
my $try = "Try '$prog --help' for more information.\n";
|
my $try = "Try '$prog --help' for more information.\n";
|
||||||
@@ -227,6 +229,7 @@ if ($mb_locale ne 'C')
|
@@ -240,6 +242,7 @@ if ($mb_locale ne 'C')
|
||||||
my @new_t = @$t;
|
my @new_t = @$t;
|
||||||
my $test_name = shift @new_t;
|
my $test_name = shift @new_t;
|
||||||
|
|
||||||
@ -4355,7 +4397,7 @@ Index: tests/misc/join.pl
|
|||||||
my $delim = chr 0247;
|
my $delim = chr 0247;
|
||||||
sub t_subst ($)
|
sub t_subst ($)
|
||||||
{
|
{
|
||||||
@@ -326,8 +335,49 @@ foreach my $t (@tv)
|
@@ -329,8 +338,49 @@ foreach my $t (@tv)
|
||||||
push @Tests, $new_ent;
|
push @Tests, $new_ent;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4536,7 +4578,7 @@ Index: tests/misc/sort.pl
|
|||||||
# Since each test is run with a file name and with redirected stdin,
|
# Since each test is run with a file name and with redirected stdin,
|
||||||
# the name in the diagnostic is either the file name or "-".
|
# the name in the diagnostic is either the file name or "-".
|
||||||
# Normalize each diagnostic to use '-'.
|
# Normalize each diagnostic to use '-'.
|
||||||
@@ -419,6 +424,38 @@ foreach my $t (@Tests)
|
@@ -424,6 +429,38 @@ foreach my $t (@Tests)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4575,7 +4617,7 @@ Index: tests/misc/sort.pl
|
|||||||
@Tests = triple_test \@Tests;
|
@Tests = triple_test \@Tests;
|
||||||
|
|
||||||
# Remember that triple_test creates from each test with exactly one "IN"
|
# Remember that triple_test creates from each test with exactly one "IN"
|
||||||
@@ -428,6 +465,7 @@ foreach my $t (@Tests)
|
@@ -433,6 +470,7 @@ foreach my $t (@Tests)
|
||||||
# Remove the IN_PIPE version of the "output-is-input" test above.
|
# Remove the IN_PIPE version of the "output-is-input" test above.
|
||||||
# The others aren't susceptible because they have three inputs each.
|
# The others aren't susceptible because they have three inputs each.
|
||||||
@Tests = grep {$_->[0] ne 'output-is-input.p'} @Tests;
|
@Tests = grep {$_->[0] ne 'output-is-input.p'} @Tests;
|
||||||
@ -4662,7 +4704,7 @@ Index: tests/misc/uniq.pl
|
|||||||
# When possible, create a "-z"-testing variant of each test.
|
# When possible, create a "-z"-testing variant of each test.
|
||||||
sub add_z_variants($)
|
sub add_z_variants($)
|
||||||
{
|
{
|
||||||
@@ -261,6 +269,53 @@ foreach my $t (@Tests)
|
@@ -262,6 +270,53 @@ foreach my $t (@Tests)
|
||||||
and push @$t, {ENV=>'_POSIX2_VERSION=199209'};
|
and push @$t, {ENV=>'_POSIX2_VERSION=199209'};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4785,42 +4827,3 @@ Index: tests/pr/pr-tests.pl
|
|||||||
my $save_temps = $ENV{DEBUG};
|
my $save_temps = $ENV{DEBUG};
|
||||||
my $verbose = $ENV{VERBOSE};
|
my $verbose = $ENV{VERBOSE};
|
||||||
|
|
||||||
Index: tests/i18n/sort-month.sh
|
|
||||||
===================================================================
|
|
||||||
--- /dev/null
|
|
||||||
+++ tests/i18n/sort-month.sh
|
|
||||||
@@ -0,0 +1,34 @@
|
|
||||||
+#!/bin/sh
|
|
||||||
+# Verify sort -M multi-byte support.
|
|
||||||
+
|
|
||||||
+. "${srcdir=.}/tests/init.sh"; path_prepend_ ./src
|
|
||||||
+print_ver_ sort
|
|
||||||
+require_valgrind_
|
|
||||||
+
|
|
||||||
+# Skip this test if some deallocations are
|
|
||||||
+# avoided at process end.
|
|
||||||
+grep '^#define lint 1' $CONFIG_HEADER > /dev/null ||
|
|
||||||
+ skip_ 'Allocation checks only work reliably in "lint" mode'
|
|
||||||
+
|
|
||||||
+export LC_ALL=en_US.UTF-8
|
|
||||||
+locale -k LC_CTYPE | grep -q "charmap.*UTF-8" \
|
|
||||||
+ || skip_ "No UTF-8 locale available"
|
|
||||||
+
|
|
||||||
+# Note the use of ɑ here which expands to
|
|
||||||
+# a wider representation upon case conversion
|
|
||||||
+# which triggered an assertion in sort -M
|
|
||||||
+cat <<EOF > exp
|
|
||||||
+.
|
|
||||||
+ɑ
|
|
||||||
+EOF
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+# check large mem leak with --month-sort
|
|
||||||
+# https://bugzilla.redhat.com/show_bug.cgi?id=1259942
|
|
||||||
+valgrind --leak-check=full \
|
|
||||||
+ --error-exitcode=1 --errors-for-leak-kinds=definite \
|
|
||||||
+ sort -M < exp > out || fail=1
|
|
||||||
+compare exp out || { fail=1; cat out; }
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+Exit $fail
|
|
||||||
|
@ -25,6 +25,6 @@ Index: src/chgrp.c
|
|||||||
if (! (xstrtoul (name, NULL, 10, &tmp, "") == LONGINT_OK
|
if (! (xstrtoul (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))
|
||||||
error (EXIT_FAILURE, 0, _("invalid group: %s"), quote (name));
|
error (EXIT_FAILURE, 0, _("invalid group: %s"),
|
||||||
|
quote (name));
|
||||||
gid = tmp;
|
gid = tmp;
|
||||||
}
|
|
||||||
|
@ -6,8 +6,8 @@
|
|||||||
|
|
||||||
Index: gnulib-tests/test-isnanl.h
|
Index: gnulib-tests/test-isnanl.h
|
||||||
===================================================================
|
===================================================================
|
||||||
--- gnulib-tests/test-isnanl.h.orig 2015-07-09 14:59:20.897259261 +0200
|
--- gnulib-tests/test-isnanl.h.orig
|
||||||
+++ gnulib-tests/test-isnanl.h 2015-07-09 15:04:01.173639553 +0200
|
+++ gnulib-tests/test-isnanl.h
|
||||||
@@ -47,7 +47,7 @@ main ()
|
@@ -47,7 +47,7 @@ main ()
|
||||||
/* Quiet NaN. */
|
/* Quiet NaN. */
|
||||||
ASSERT (isnanl (NaNl ()));
|
ASSERT (isnanl (NaNl ()));
|
||||||
@ -35,9 +35,9 @@ Index: gnulib-tests/test-isnanl.h
|
|||||||
}
|
}
|
||||||
Index: tests/misc/help-version.sh
|
Index: tests/misc/help-version.sh
|
||||||
===================================================================
|
===================================================================
|
||||||
--- tests/misc/help-version.sh.orig 2015-07-09 14:59:20.897259261 +0200
|
--- tests/misc/help-version.sh.orig
|
||||||
+++ tests/misc/help-version.sh 2015-07-09 14:59:27.227110899 +0200
|
+++ tests/misc/help-version.sh
|
||||||
@@ -237,6 +237,7 @@ parted_setup () { args="-s $tmp_in mklab
|
@@ -238,6 +238,7 @@ parted_setup () { args="-s $tmp_in mklab
|
||||||
for i in $built_programs; do
|
for i in $built_programs; do
|
||||||
# Skip these.
|
# Skip these.
|
||||||
case $i in chroot|stty|tty|false|chcon|runcon|coreutils) continue;; esac
|
case $i in chroot|stty|tty|false|chcon|runcon|coreutils) continue;; esac
|
||||||
@ -47,8 +47,8 @@ Index: tests/misc/help-version.sh
|
|||||||
echo z |gzip > $zin
|
echo z |gzip > $zin
|
||||||
Index: tests/other-fs-tmpdir
|
Index: tests/other-fs-tmpdir
|
||||||
===================================================================
|
===================================================================
|
||||||
--- tests/other-fs-tmpdir.orig 2015-07-09 14:59:20.898259238 +0200
|
--- tests/other-fs-tmpdir.orig
|
||||||
+++ tests/other-fs-tmpdir 2015-07-09 14:59:27.227110899 +0200
|
+++ tests/other-fs-tmpdir
|
||||||
@@ -43,6 +43,9 @@ for d in $CANDIDATE_TMP_DIRS; do
|
@@ -43,6 +43,9 @@ for d in $CANDIDATE_TMP_DIRS; do
|
||||||
|
|
||||||
done
|
done
|
||||||
|
@ -11,14 +11,14 @@ Subject: [PATCH 1/1] copy: add OCFS2 reflink support
|
|||||||
|
|
||||||
Signed-off-by: Jie Liu <jeff....@oracle.com>
|
Signed-off-by: Jie Liu <jeff....@oracle.com>
|
||||||
---
|
---
|
||||||
src/copy.c | 99 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
|
src/copy.c | 82 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
|
||||||
1 file changed, 91 insertions(+), 8 deletions(-)
|
1 file changed, 81 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
Index: src/copy.c
|
Index: src/copy.c
|
||||||
===================================================================
|
===================================================================
|
||||||
--- src/copy.c.orig 2015-06-26 19:05:22.000000000 +0200
|
--- src/copy.c.orig
|
||||||
+++ src/copy.c 2015-07-09 14:58:48.105027875 +0200
|
+++ src/copy.c
|
||||||
@@ -324,6 +324,47 @@ sparse_copy (int src_fd, int dest_fd, ch
|
@@ -315,6 +315,47 @@ sparse_copy (int src_fd, int dest_fd, ch
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -66,7 +66,7 @@ Index: src/copy.c
|
|||||||
/* Perform the O(1) btrfs clone operation, if possible.
|
/* Perform the O(1) btrfs clone operation, if possible.
|
||||||
Upon success, return 0. Otherwise, return -1 and set errno. */
|
Upon success, return 0. Otherwise, return -1 and set errno. */
|
||||||
static inline int
|
static inline int
|
||||||
@@ -1040,6 +1081,45 @@ copy_reg (char const *src_name, char con
|
@@ -1049,6 +1090,45 @@ copy_reg (char const *src_name, char con
|
||||||
goto close_src_desc;
|
goto close_src_desc;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -102,7 +102,7 @@ Index: src/copy.c
|
|||||||
+ if (errno == EEXIST)
|
+ if (errno == EEXIST)
|
||||||
+ {
|
+ {
|
||||||
+ error (0, errno, _("failed to reflink %s from %s"),
|
+ error (0, errno, _("failed to reflink %s from %s"),
|
||||||
+ quote_n (0, dst_name), quote_n (1, src_name));
|
+ quoteaf_n (0, dst_name), quoteaf_n (1, src_name));
|
||||||
+ return_val = false;
|
+ return_val = false;
|
||||||
+ goto close_src_desc;
|
+ goto close_src_desc;
|
||||||
+ }
|
+ }
|
||||||
@ -112,32 +112,12 @@ Index: src/copy.c
|
|||||||
/* The semantics of the following open calls are mandated
|
/* The semantics of the following open calls are mandated
|
||||||
by the specs for both cp and mv. */
|
by the specs for both cp and mv. */
|
||||||
if (! *new_dst)
|
if (! *new_dst)
|
||||||
@@ -1185,17 +1265,20 @@ copy_reg (char const *src_name, char con
|
@@ -1192,7 +1272,7 @@ copy_reg (char const *src_name, char con
|
||||||
/* --attributes-only overrides --reflink. */
|
|
||||||
if (data_copy_required && x->reflink_mode)
|
|
||||||
{
|
|
||||||
- bool clone_ok = clone_file (dest_desc, source_desc) == 0;
|
|
||||||
- if (clone_ok || x->reflink_mode == REFLINK_ALWAYS)
|
|
||||||
+ if (! reflink_ok)
|
|
||||||
{
|
|
||||||
- if (!clone_ok)
|
|
||||||
+ bool clone_ok = clone_file (dest_desc, source_desc) == 0;
|
|
||||||
+ if (clone_ok || x->reflink_mode == REFLINK_ALWAYS)
|
|
||||||
{
|
|
||||||
- error (0, errno, _("failed to clone %s from %s"),
|
|
||||||
- quote_n (0, dst_name), quote_n (1, src_name));
|
|
||||||
- return_val = false;
|
|
||||||
- goto close_src_and_dst_desc;
|
|
||||||
+ if (!clone_ok)
|
|
||||||
+ {
|
|
||||||
+ error (0, errno, _("failed to clone %s from %s"),
|
|
||||||
+ quote_n (0, dst_name), quote_n (1, src_name));
|
|
||||||
+ return_val = false;
|
|
||||||
+ goto close_src_and_dst_desc;
|
|
||||||
+ }
|
|
||||||
+ data_copy_required = false;
|
|
||||||
}
|
|
||||||
- data_copy_required = false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* --attributes-only overrides --reflink. */
|
||||||
|
- if (data_copy_required && x->reflink_mode)
|
||||||
|
+ if (data_copy_required && x->reflink_mode && ! reflink_ok)
|
||||||
|
{
|
||||||
|
bool clone_ok = clone_file (dest_desc, source_desc) == 0;
|
||||||
|
if (clone_ok || x->reflink_mode == REFLINK_ALWAYS)
|
||||||
|
@ -4,8 +4,8 @@
|
|||||||
|
|
||||||
Index: doc/coreutils.texi
|
Index: doc/coreutils.texi
|
||||||
===================================================================
|
===================================================================
|
||||||
--- doc/coreutils.texi.orig 2015-06-26 19:05:22.000000000 +0200
|
--- doc/coreutils.texi.orig
|
||||||
+++ doc/coreutils.texi 2015-07-09 14:53:28.486520508 +0200
|
+++ doc/coreutils.texi
|
||||||
@@ -69,7 +69,6 @@
|
@@ -69,7 +69,6 @@
|
||||||
* groups: (coreutils)groups invocation. Print group names a user is in.
|
* groups: (coreutils)groups invocation. Print group names a user is in.
|
||||||
* head: (coreutils)head invocation. Output the first part of files.
|
* head: (coreutils)head invocation. Output the first part of files.
|
||||||
@ -23,7 +23,7 @@ Index: doc/coreutils.texi
|
|||||||
* SELinux context:: chcon runcon
|
* SELinux context:: chcon runcon
|
||||||
* Modified command invocation:: chroot env nice nohup stdbuf timeout
|
* Modified command invocation:: chroot env nice nohup stdbuf timeout
|
||||||
* Process control:: kill
|
* Process control:: kill
|
||||||
@@ -420,7 +419,6 @@ System context
|
@@ -421,7 +420,6 @@ System context
|
||||||
* date invocation:: Print or set system date and time
|
* date invocation:: Print or set system date and time
|
||||||
* nproc invocation:: Print the number of processors
|
* nproc invocation:: Print the number of processors
|
||||||
* uname invocation:: Print system information
|
* uname invocation:: Print system information
|
||||||
@ -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
|
||||||
|
|
||||||
@@ -14793,7 +14791,6 @@ information.
|
@@ -14986,7 +14984,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
|
||||||
@@ -15618,15 +15615,6 @@ easily available, as is the case with Li
|
@@ -15815,15 +15812,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
|
||||||
@@ -15680,34 +15668,6 @@ Print the kernel version.
|
@@ -15877,34 +15865,6 @@ Print the kernel version.
|
||||||
|
|
||||||
@exitstatus
|
@exitstatus
|
||||||
|
|
||||||
|
@ -4,8 +4,8 @@
|
|||||||
|
|
||||||
Index: doc/coreutils.texi
|
Index: doc/coreutils.texi
|
||||||
===================================================================
|
===================================================================
|
||||||
--- doc/coreutils.texi.orig 2015-07-09 14:53:50.295009198 +0200
|
--- doc/coreutils.texi.orig
|
||||||
+++ doc/coreutils.texi 2015-07-09 14:54:48.805637437 +0200
|
+++ doc/coreutils.texi
|
||||||
@@ -72,7 +72,6 @@
|
@@ -72,7 +72,6 @@
|
||||||
* id: (coreutils)id invocation. Print user identity.
|
* id: (coreutils)id invocation. Print user identity.
|
||||||
* install: (coreutils)install invocation. Copy files and set attributes.
|
* install: (coreutils)install invocation. Copy files and set attributes.
|
||||||
@ -22,7 +22,7 @@ Index: doc/coreutils.texi
|
|||||||
* Delaying:: sleep
|
* Delaying:: sleep
|
||||||
* Numeric operations:: factor numfmt seq
|
* Numeric operations:: factor numfmt seq
|
||||||
* File permissions:: Access modes
|
* File permissions:: Access modes
|
||||||
@@ -447,10 +445,6 @@ Modified command invocation
|
@@ -448,10 +446,6 @@ Modified command invocation
|
||||||
* stdbuf invocation:: Run a command with modified I/O buffering
|
* stdbuf invocation:: Run a command with modified I/O buffering
|
||||||
* timeout invocation:: Run a command with a time limit
|
* timeout invocation:: Run a command with a time limit
|
||||||
|
|
||||||
@ -33,7 +33,7 @@ Index: doc/coreutils.texi
|
|||||||
Delaying
|
Delaying
|
||||||
|
|
||||||
* sleep invocation:: Delay for a specified time
|
* sleep invocation:: Delay for a specified time
|
||||||
@@ -16602,90 +16596,6 @@ the exit status of @var{command} otherwi
|
@@ -16799,90 +16793,6 @@ the exit status of @var{command} otherwi
|
||||||
@end display
|
@end display
|
||||||
|
|
||||||
|
|
||||||
|
@ -19,9 +19,9 @@ with a diagnostic like:
|
|||||||
|
|
||||||
Index: gnulib-tests/gnulib.mk
|
Index: gnulib-tests/gnulib.mk
|
||||||
===================================================================
|
===================================================================
|
||||||
--- gnulib-tests/gnulib.mk.orig 2015-06-19 13:24:05.000000000 +0200
|
--- gnulib-tests/gnulib.mk.orig
|
||||||
+++ gnulib-tests/gnulib.mk 2015-07-09 15:11:24.099160681 +0200
|
+++ gnulib-tests/gnulib.mk
|
||||||
@@ -2238,9 +2238,10 @@ EXTRA_DIST += test-time.c
|
@@ -2242,9 +2242,10 @@ EXTRA_DIST += test-timespec.c macros.h
|
||||||
|
|
||||||
## begin gnulib module tls-tests
|
## begin gnulib module tls-tests
|
||||||
|
|
||||||
|
@ -4,8 +4,8 @@
|
|||||||
|
|
||||||
Index: tests/misc/shuf-reservoir.sh
|
Index: tests/misc/shuf-reservoir.sh
|
||||||
===================================================================
|
===================================================================
|
||||||
--- tests/misc/shuf-reservoir.sh.orig 2015-07-09 16:52:02.577880662 +0200
|
--- tests/misc/shuf-reservoir.sh.orig
|
||||||
+++ tests/misc/shuf-reservoir.sh 2015-07-09 16:59:38.928158153 +0200
|
+++ tests/misc/shuf-reservoir.sh
|
||||||
@@ -37,8 +37,7 @@ run_shuf_n()
|
@@ -37,8 +37,7 @@ run_shuf_n()
|
||||||
|
|
||||||
# Critical memory-related bugs will cause a segfault here
|
# Critical memory-related bugs will cause a segfault here
|
||||||
|
@ -1,84 +0,0 @@
|
|||||||
Upstream patch on top of v8.24 to avoid a FP test failure with glibc>=2.22:
|
|
||||||
http://git.sv.gnu.org/cgit/coreutils.git/commit/?id=fd5f2b1569
|
|
||||||
Patch to be removed with v8.25.
|
|
||||||
|
|
||||||
From fd5f2b1569e2e0b31be755e14e236a7a02478fc0 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Bernhard Voelker <mail@bernhard-voelker.de>
|
|
||||||
Date: Sun, 30 Aug 2015 22:49:35 +0200
|
|
||||||
Subject: [PATCH] tests: avoid FP of ls/stat-free-color.sh with newer glibc
|
|
||||||
|
|
||||||
Since glibc-2.22, specifically commit [0], the opendir() implementation
|
|
||||||
implicitly makes an additional stat call thus leading to a FP.
|
|
||||||
Seen on openSUSE:Tumbleweed since snapshot 20150821.
|
|
||||||
|
|
||||||
[0]
|
|
||||||
https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=46f894d8c60a
|
|
||||||
|
|
||||||
* tests/ls/stat-free-color.sh: Change the test to verify that ls(1)
|
|
||||||
needs the same number of stat-like calls for a single, empty directory
|
|
||||||
argument as for one with a few directory entries (sub-directory,
|
|
||||||
regular file, symlink, etc.).
|
|
||||||
---
|
|
||||||
tests/ls/stat-free-color.sh | 39 ++++++++++++++++++++++++---------------
|
|
||||||
1 file changed, 24 insertions(+), 15 deletions(-)
|
|
||||||
|
|
||||||
Index: tests/ls/stat-free-color.sh
|
|
||||||
===================================================================
|
|
||||||
--- tests/ls/stat-free-color.sh.orig
|
|
||||||
+++ tests/ls/stat-free-color.sh
|
|
||||||
@@ -27,8 +27,6 @@ stats='stat,lstat,stat64,lstat64,newfsta
|
|
||||||
require_strace_ $stats
|
|
||||||
require_dirent_d_type_
|
|
||||||
|
|
||||||
-ln -s nowhere dangle || framework_failure_
|
|
||||||
-
|
|
||||||
# Disable enough features via LS_COLORS so that ls --color
|
|
||||||
# can do its job without calling stat (other than the obligatory
|
|
||||||
# one-call-per-command-line argument).
|
|
||||||
@@ -54,22 +52,33 @@ EOF
|
|
||||||
eval $(dircolors -b color-without-stat)
|
|
||||||
|
|
||||||
# The system may perform additional stat-like calls before main.
|
|
||||||
-# To avoid counting those, first get a baseline count by running
|
|
||||||
-# ls with only the --help option. Then, compare that with the
|
|
||||||
+# Furthermore, underlying library functions may also implicitly
|
|
||||||
+# add an extra stat call, e.g. opendir since glibc-2.21-360-g46f894d.
|
|
||||||
+# To avoid counting those, first get a baseline count for running
|
|
||||||
+# ls with one empty directory argument. Then, compare that with the
|
|
||||||
# invocation under test.
|
|
||||||
-strace -o log-help -e $stats ls --help >/dev/null || fail=1
|
|
||||||
-n_lines_help=$(wc -l < log-help)
|
|
||||||
+mkdir d || framework_failure_
|
|
||||||
|
|
||||||
-strace -o log -e $stats ls --color=always . || fail=1
|
|
||||||
-n_lines=$(wc -l < log)
|
|
||||||
+strace -o log1 -e $stats ls --color=always d || fail=1
|
|
||||||
+n_stat1=$(wc -l < log1) || framework_failure_
|
|
||||||
|
|
||||||
-n_stat=$(expr $n_lines - $n_lines_help)
|
|
||||||
+test $n_stat1 = 0 \
|
|
||||||
+ && skip_ 'No stat calls recognized on this platform'
|
|
||||||
|
|
||||||
-# Expect one stat call.
|
|
||||||
-case $n_stat in
|
|
||||||
- 0) skip_ 'No stat calls recognized on this platform' ;;
|
|
||||||
- 1) ;; # Corresponding to stat(".")
|
|
||||||
- *) fail=1; head -n30 log* ;;
|
|
||||||
-esac
|
|
||||||
+# Populate the test directory.
|
|
||||||
+mkdir d/subdir \
|
|
||||||
+ && touch d/regf \
|
|
||||||
+ && ln d/regf d/hlink \
|
|
||||||
+ && ln -s regf d/slink \
|
|
||||||
+ && ln -s nowhere d/dangle \
|
|
||||||
+ || framework_failure_
|
|
||||||
+
|
|
||||||
+# Invocation under test.
|
|
||||||
+strace -o log2 -e $stats ls --color=always d || fail=1
|
|
||||||
+n_stat2=$(wc -l < log2) || framework_failure_
|
|
||||||
+
|
|
||||||
+# Expect the same number of stat calls.
|
|
||||||
+test $n_stat1 = $n_stat2 \
|
|
||||||
+ || { fail=1; head -n30 log*; }
|
|
||||||
|
|
||||||
Exit $fail
|
|
@ -16,7 +16,7 @@ Index: tests/local.mk
|
|||||||
===================================================================
|
===================================================================
|
||||||
--- tests/local.mk.orig
|
--- tests/local.mk.orig
|
||||||
+++ tests/local.mk
|
+++ tests/local.mk
|
||||||
@@ -679,14 +679,9 @@ all_tests = \
|
@@ -680,14 +680,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,24 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Jan 29 22:08:45 UTC 2016 - mail@bernhard-voelker.de
|
||||||
|
|
||||||
|
- Update to 8.25
|
||||||
|
(for details see included NEWS file)
|
||||||
|
- coreutils.spec (%description): Add base32, a new utility.
|
||||||
|
- Remove now-upstream patch:
|
||||||
|
* coreutils-tests-avoid-FP-of-ls-stat-free-color.patch
|
||||||
|
- Refresh/merge all other patches:
|
||||||
|
* coreutils-build-timeout-as-pie.patch
|
||||||
|
* coreutils-disable_tests.patch
|
||||||
|
* coreutils-i18n.patch
|
||||||
|
* coreutils-invalid-ids.patch
|
||||||
|
* coreutils-misc.patch
|
||||||
|
* coreutils-ocfs2_reflinks.patch
|
||||||
|
* coreutils-remove_hostname_documentation.patch
|
||||||
|
* coreutils-remove_kill_documentation.patch
|
||||||
|
* coreutils-skip-gnulib-test-tls.patch
|
||||||
|
* coreutils-test_without_valgrind.patch
|
||||||
|
* coreutils-tests-shorten-extreme-factor-tests.patch
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Sun Sep 20 15:22:45 UTC 2015 - mail@bernhard-voelker.de
|
Sun Sep 20 15:22:45 UTC 2015 - mail@bernhard-voelker.de
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#
|
#
|
||||||
# spec file for package coreutils-testsuite
|
# spec file for package coreutils-testsuite
|
||||||
#
|
#
|
||||||
# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
|
# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
|
||||||
#
|
#
|
||||||
# All modifications and additions to the file contributed by third parties
|
# All modifications and additions to the file contributed by third parties
|
||||||
# remain the property of their copyright owners, unless otherwise agreed
|
# remain the property of their copyright owners, unless otherwise agreed
|
||||||
@ -21,7 +21,7 @@ Summary: GNU Core Utilities
|
|||||||
License: GPL-3.0+
|
License: GPL-3.0+
|
||||||
Group: System/Base
|
Group: System/Base
|
||||||
Url: http://www.gnu.org/software/coreutils/
|
Url: http://www.gnu.org/software/coreutils/
|
||||||
Version: 8.24
|
Version: 8.25
|
||||||
Release: 0
|
Release: 0
|
||||||
|
|
||||||
#################################################################
|
#################################################################
|
||||||
@ -128,15 +128,13 @@ 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
|
||||||
|
|
||||||
Patch600: coreutils-tests-avoid-FP-of-ls-stat-free-color.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
|
||||||
the GNU fileutils, sh-utils, and textutils packages.
|
the GNU fileutils, sh-utils, and textutils packages.
|
||||||
|
|
||||||
[ arch base64 basename cat chcon chgrp chmod chown chroot cksum comm cp
|
[ arch base32 base64 basename cat chcon chgrp chmod chown chroot cksum comm
|
||||||
csplit cut date dd df dir dircolors dirname du echo env expand expr
|
cp csplit cut date dd df dir dircolors dirname du echo env expand expr
|
||||||
factor false fmt fold groups head hostid id install join
|
factor false fmt fold groups head hostid id install join
|
||||||
link ln logname ls md5sum mkdir mkfifo mknod mktemp mv nice nl nohup
|
link ln logname ls md5sum mkdir mkfifo mknod mktemp mv nice nl nohup
|
||||||
nproc numfmt od paste pathchk pinky pr printenv printf ptx pwd readlink
|
nproc numfmt od paste pathchk pinky pr printenv printf ptx pwd readlink
|
||||||
@ -172,9 +170,6 @@ the GNU fileutils, sh-utils, and textutils packages.
|
|||||||
%patch500
|
%patch500
|
||||||
%patch501
|
%patch501
|
||||||
|
|
||||||
# Upstream patch on top of v8.24 to fix a FP test failure with glibc>=2.22.
|
|
||||||
%patch600
|
|
||||||
|
|
||||||
#???## We need to statically link to gmp, otherwise we have a build loop
|
#???## We need to statically link to gmp, otherwise we have a build loop
|
||||||
#???#sed -i s,'$(LIB_GMP)',%%{_libdir}/libgmp.a,g Makefile.in
|
#???#sed -i s,'$(LIB_GMP)',%%{_libdir}/libgmp.a,g Makefile.in
|
||||||
|
|
||||||
|
@ -1,3 +1,24 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Jan 29 22:08:45 UTC 2016 - mail@bernhard-voelker.de
|
||||||
|
|
||||||
|
- Update to 8.25
|
||||||
|
(for details see included NEWS file)
|
||||||
|
- coreutils.spec (%description): Add base32, a new utility.
|
||||||
|
- Remove now-upstream patch:
|
||||||
|
* coreutils-tests-avoid-FP-of-ls-stat-free-color.patch
|
||||||
|
- Refresh/merge all other patches:
|
||||||
|
* coreutils-build-timeout-as-pie.patch
|
||||||
|
* coreutils-disable_tests.patch
|
||||||
|
* coreutils-i18n.patch
|
||||||
|
* coreutils-invalid-ids.patch
|
||||||
|
* coreutils-misc.patch
|
||||||
|
* coreutils-ocfs2_reflinks.patch
|
||||||
|
* coreutils-remove_hostname_documentation.patch
|
||||||
|
* coreutils-remove_kill_documentation.patch
|
||||||
|
* coreutils-skip-gnulib-test-tls.patch
|
||||||
|
* coreutils-test_without_valgrind.patch
|
||||||
|
* coreutils-tests-shorten-extreme-factor-tests.patch
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Sun Sep 20 15:22:45 UTC 2015 - mail@bernhard-voelker.de
|
Sun Sep 20 15:22:45 UTC 2015 - mail@bernhard-voelker.de
|
||||||
|
|
||||||
|
Binary file not shown.
@ -1,7 +1,7 @@
|
|||||||
#
|
#
|
||||||
# spec file for package coreutils
|
# spec file for package coreutils
|
||||||
#
|
#
|
||||||
# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
|
# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
|
||||||
#
|
#
|
||||||
# All modifications and additions to the file contributed by third parties
|
# All modifications and additions to the file contributed by third parties
|
||||||
# remain the property of their copyright owners, unless otherwise agreed
|
# remain the property of their copyright owners, unless otherwise agreed
|
||||||
@ -21,7 +21,7 @@ Summary: GNU Core Utilities
|
|||||||
License: GPL-3.0+
|
License: GPL-3.0+
|
||||||
Group: System/Base
|
Group: System/Base
|
||||||
Url: http://www.gnu.org/software/coreutils/
|
Url: http://www.gnu.org/software/coreutils/
|
||||||
Version: 8.24
|
Version: 8.25
|
||||||
Release: 0
|
Release: 0
|
||||||
|
|
||||||
#################################################################
|
#################################################################
|
||||||
@ -128,15 +128,13 @@ 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
|
||||||
|
|
||||||
Patch600: coreutils-tests-avoid-FP-of-ls-stat-free-color.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
|
||||||
the GNU fileutils, sh-utils, and textutils packages.
|
the GNU fileutils, sh-utils, and textutils packages.
|
||||||
|
|
||||||
[ arch base64 basename cat chcon chgrp chmod chown chroot cksum comm cp
|
[ arch base32 base64 basename cat chcon chgrp chmod chown chroot cksum comm
|
||||||
csplit cut date dd df dir dircolors dirname du echo env expand expr
|
cp csplit cut date dd df dir dircolors dirname du echo env expand expr
|
||||||
factor false fmt fold groups head hostid id install join
|
factor false fmt fold groups head hostid id install join
|
||||||
link ln logname ls md5sum mkdir mkfifo mknod mktemp mv nice nl nohup
|
link ln logname ls md5sum mkdir mkfifo mknod mktemp mv nice nl nohup
|
||||||
nproc numfmt od paste pathchk pinky pr printenv printf ptx pwd readlink
|
nproc numfmt od paste pathchk pinky pr printenv printf ptx pwd readlink
|
||||||
@ -172,9 +170,6 @@ the GNU fileutils, sh-utils, and textutils packages.
|
|||||||
%patch500
|
%patch500
|
||||||
%patch501
|
%patch501
|
||||||
|
|
||||||
# Upstream patch on top of v8.24 to fix a FP test failure with glibc>=2.22.
|
|
||||||
%patch600
|
|
||||||
|
|
||||||
#???## We need to statically link to gmp, otherwise we have a build loop
|
#???## We need to statically link to gmp, otherwise we have a build loop
|
||||||
#???#sed -i s,'$(LIB_GMP)',%%{_libdir}/libgmp.a,g Makefile.in
|
#???#sed -i s,'$(LIB_GMP)',%%{_libdir}/libgmp.a,g Makefile.in
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user