- Update to 8.17:

** Bug fixes
  * stat no longer reports a negative file size as a huge positive
    number.  [bug present since 'stat' was introduced in
    fileutils-4.1.9]
 ** New features
  * split and truncate now allow any seekable files in situations
    where the file size is needed, instead of insisting on regular
    files.
  * fmt now accepts the --goal=WIDTH (-g) option.
  * stat -f recognizes new file system types: bdevfs, inodefs, qnx6
 ** Changes in behavior
  * cp,mv,install,cat,split: now read and write a minimum of 64KiB at
    a time.  This was previously 32KiB and increasing to 64KiB was
    seen to increase throughput by about 10% when reading cached
    files on 64 bit GNU/Linux.
  * cp --attributes-only no longer truncates any existing destination
    file, allowing for more general copying of attributes from one
    file to another.
- Bring german message catalog up-to-date

OBS-URL: https://build.opensuse.org/package/show/Base:System/coreutils?expand=0&rev=156
This commit is contained in:
Philipp Thomas 2012-06-19 12:54:24 +00:00 committed by Git OBS Bridge
parent 5f6070ac6a
commit 81c6e98de3
9 changed files with 100 additions and 427 deletions

View File

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

View File

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

3
coreutils-8.17.de.po.xz Normal file
View File

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

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

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

View File

@ -20,7 +20,7 @@
Index: lib/linebuffer.h Index: lib/linebuffer.h
=================================================================== ===================================================================
--- lib/linebuffer.h.orig 2012-01-06 10:14:31.000000000 +0100 --- lib/linebuffer.h.orig 2012-01-06 10:14:31.000000000 +0100
+++ lib/linebuffer.h 2012-04-16 17:00:03.953114761 +0200 +++ lib/linebuffer.h 2012-06-19 12:13:47.369654318 +0200
@@ -21,6 +21,11 @@ @@ -21,6 +21,11 @@
# include <stdio.h> # include <stdio.h>
@ -45,8 +45,8 @@ Index: lib/linebuffer.h
/* Initialize linebuffer LINEBUFFER for use. */ /* Initialize linebuffer LINEBUFFER for use. */
Index: src/cut.c Index: src/cut.c
=================================================================== ===================================================================
--- src/cut.c.orig 2012-03-24 21:26:51.000000000 +0100 --- src/cut.c.orig 2012-05-02 10:31:47.000000000 +0200
+++ src/cut.c 2012-04-16 17:00:03.954114734 +0200 +++ src/cut.c 2012-06-19 12:13:47.370654294 +0200
@@ -28,6 +28,11 @@ @@ -28,6 +28,11 @@
#include <assert.h> #include <assert.h>
#include <getopt.h> #include <getopt.h>
@ -639,8 +639,8 @@ Index: src/cut.c
if (optind == argc) if (optind == argc)
Index: src/expand.c Index: src/expand.c
=================================================================== ===================================================================
--- src/expand.c.orig 2012-03-24 21:26:51.000000000 +0100 --- src/expand.c.orig 2012-05-01 22:55:08.000000000 +0200
+++ src/expand.c 2012-04-16 17:00:03.954114734 +0200 +++ src/expand.c 2012-06-19 12:13:47.370654294 +0200
@@ -37,12 +37,29 @@ @@ -37,12 +37,29 @@
#include <stdio.h> #include <stdio.h>
#include <getopt.h> #include <getopt.h>
@ -830,8 +830,8 @@ Index: src/expand.c
error (EXIT_FAILURE, errno, "-"); error (EXIT_FAILURE, errno, "-");
Index: src/fold.c Index: src/fold.c
=================================================================== ===================================================================
--- src/fold.c.orig 2012-03-24 19:22:13.000000000 +0100 --- src/fold.c.orig 2012-04-29 13:45:30.000000000 +0200
+++ src/fold.c 2012-04-16 17:00:03.954114734 +0200 +++ src/fold.c 2012-06-19 12:13:47.370654294 +0200
@@ -22,12 +22,34 @@ @@ -22,12 +22,34 @@
#include <getopt.h> #include <getopt.h>
#include <sys/types.h> #include <sys/types.h>
@ -1232,8 +1232,8 @@ Index: src/fold.c
case 's': /* Break at word boundaries. */ case 's': /* Break at word boundaries. */
Index: src/join.c Index: src/join.c
=================================================================== ===================================================================
--- src/join.c.orig 2012-03-24 21:26:51.000000000 +0100 --- src/join.c.orig 2012-05-02 10:31:47.000000000 +0200
+++ src/join.c 2012-04-16 17:00:03.955114707 +0200 +++ src/join.c 2012-06-19 12:13:47.371654270 +0200
@@ -22,18 +22,32 @@ @@ -22,18 +22,32 @@
#include <sys/types.h> #include <sys/types.h>
#include <getopt.h> #include <getopt.h>
@ -1712,8 +1712,8 @@ Index: src/join.c
case NOCHECK_ORDER_OPTION: case NOCHECK_ORDER_OPTION:
Index: src/pr.c Index: src/pr.c
=================================================================== ===================================================================
--- src/pr.c.orig 2012-03-24 21:26:51.000000000 +0100 --- src/pr.c.orig 2012-05-10 09:14:30.000000000 +0200
+++ src/pr.c 2012-04-16 17:00:03.955114707 +0200 +++ src/pr.c 2012-06-19 12:15:34.144102794 +0200
@@ -312,6 +312,32 @@ @@ -312,6 +312,32 @@
#include <getopt.h> #include <getopt.h>
@ -2001,13 +2001,13 @@ Index: src/pr.c
} }
/* It's rather pointless to define a TAB separator with column /* It's rather pointless to define a TAB separator with column
@@ -1279,11 +1405,11 @@ init_parameters (int number_of_files) @@ -1279,11 +1405,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. */
- if (number_separator == '\t') - if (number_separator == '\t')
+ if (number_separator[0] == '\t') + if (number_separator[0] == '\t')
number_width = chars_per_number + number_width = (chars_per_number
TAB_WIDTH (chars_per_default_tab, chars_per_number); + TAB_WIDTH (chars_per_default_tab, chars_per_number));
else else
- number_width = chars_per_number + 1; - number_width = chars_per_number + 1;
+ number_width = chars_per_number + number_separator_width; + number_width = chars_per_number + number_separator_width;
@ -2017,9 +2017,9 @@ Index: src/pr.c
@@ -1298,7 +1424,7 @@ init_parameters (int number_of_files) @@ -1298,7 +1424,7 @@ init_parameters (int number_of_files)
} }
chars_per_column = (chars_per_line - chars_used_by_number - chars_per_column = (chars_per_line - chars_used_by_number
- (columns - 1) * col_sep_length) / columns; - - (columns - 1) * col_sep_length) / columns;
+ (columns - 1) * col_sep_width) / columns; + - (columns - 1) * col_sep_width) / columns;
if (chars_per_column < 1) if (chars_per_column < 1)
error (EXIT_FAILURE, 0, _("page width too narrow")); error (EXIT_FAILURE, 0, _("page width too narrow"));
@ -2438,15 +2438,16 @@ Index: src/pr.c
Index: src/sort.c Index: src/sort.c
=================================================================== ===================================================================
--- src/sort.c.orig 2012-03-24 21:26:51.000000000 +0100 --- src/sort.c.orig 2012-05-04 12:06:22.000000000 +0200
+++ src/sort.c 2012-04-16 17:03:09.060189025 +0200 +++ src/sort.c 2012-06-19 12:16:37.982577478 +0200
@@ -22,11 +22,20 @@ @@ -22,12 +22,21 @@
#include <config.h> #include <config.h>
+#include <assert.h> +#include <assert.h>
#include <getopt.h> #include <getopt.h>
#include <pthread.h> #include <pthread.h>
#include <sys/resource.h>
#include <sys/types.h> #include <sys/types.h>
#include <sys/wait.h> #include <sys/wait.h>
#include <signal.h> #include <signal.h>
@ -2461,7 +2462,7 @@ Index: src/sort.c
#include "system.h" #include "system.h"
#include "argmatch.h" #include "argmatch.h"
#include "error.h" #include "error.h"
@@ -167,12 +176,34 @@ static int thousands_sep; @@ -165,12 +174,34 @@ static int thousands_sep;
/* Nonzero if the corresponding locales are hard. */ /* Nonzero if the corresponding locales are hard. */
static bool hard_LC_COLLATE; static bool hard_LC_COLLATE;
@ -2497,7 +2498,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 };
@@ -343,13 +374,11 @@ static bool reverse; @@ -341,13 +372,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;
@ -2514,7 +2515,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. */
@@ -782,6 +811,46 @@ reap_all (void) @@ -780,6 +809,46 @@ reap_all (void)
reap (-1); reap (-1);
} }
@ -2561,7 +2562,7 @@ Index: src/sort.c
/* Clean up any remaining temporary files. */ /* Clean up any remaining temporary files. */
static void static void
@@ -1214,7 +1283,7 @@ zaptemp (char const *name) @@ -1212,7 +1281,7 @@ zaptemp (char const *name)
free (node); free (node);
} }
@ -2570,7 +2571,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)
@@ -1229,7 +1298,7 @@ struct_month_cmp (void const *m1, void c @@ -1227,7 +1296,7 @@ struct_month_cmp (void const *m1, void c
/* Initialize the character class tables. */ /* Initialize the character class tables. */
static void static void
@ -2579,7 +2580,7 @@ Index: src/sort.c
{ {
size_t i; size_t i;
@@ -1241,7 +1310,7 @@ inittables (void) @@ -1239,7 +1308,7 @@ inittables (void)
fold_toupper[i] = toupper (i); fold_toupper[i] = toupper (i);
} }
@ -2588,7 +2589,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)
{ {
@@ -1323,6 +1392,84 @@ specify_nmerge (int oi, char c, char con @@ -1321,6 +1390,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);
} }
@ -2673,7 +2674,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)
@@ -1551,7 +1698,7 @@ buffer_linelim (struct buffer const *buf @@ -1549,7 +1696,7 @@ buffer_linelim (struct buffer const *buf
by KEY in LINE. */ by KEY in LINE. */
static char * static char *
@ -2682,7 +2683,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;
@@ -1560,10 +1707,10 @@ begfield (struct line const *line, struc @@ -1558,10 +1705,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. */
@ -2695,7 +2696,7 @@ Index: src/sort.c
++ptr; ++ptr;
if (ptr < lim) if (ptr < lim)
++ptr; ++ptr;
@@ -1589,11 +1736,70 @@ begfield (struct line const *line, struc @@ -1587,11 +1734,70 @@ begfield (struct line const *line, struc
return ptr; return ptr;
} }
@ -2767,7 +2768,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;
@@ -1608,10 +1814,10 @@ limfield (struct line const *line, struc @@ -1606,10 +1812,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. */
@ -2780,7 +2781,7 @@ Index: src/sort.c
++ptr; ++ptr;
if (ptr < lim && (eword || echar)) if (ptr < lim && (eword || echar))
++ptr; ++ptr;
@@ -1657,10 +1863,10 @@ limfield (struct line const *line, struc @@ -1655,10 +1861,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. */
@ -2793,7 +2794,7 @@ Index: src/sort.c
if (newlim) if (newlim)
lim = newlim; lim = newlim;
} }
@@ -1691,6 +1897,130 @@ limfield (struct line const *line, struc @@ -1689,6 +1895,130 @@ limfield (struct line const *line, struc
return ptr; return ptr;
} }
@ -2924,7 +2925,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
@@ -1777,8 +2107,22 @@ fillbuf (struct buffer *buf, FILE *fp, c @@ -1775,8 +2105,22 @@ fillbuf (struct buffer *buf, FILE *fp, c
else else
{ {
if (key->skipsblanks) if (key->skipsblanks)
@ -2949,7 +2950,7 @@ Index: src/sort.c
line->keybeg = line_start; line->keybeg = line_start;
} }
} }
@@ -1899,7 +2243,7 @@ human_numcompare (char const *a, char co @@ -1897,7 +2241,7 @@ human_numcompare (char const *a, char co
hideously fast. */ hideously fast. */
static int static int
@ -2958,7 +2959,7 @@ Index: src/sort.c
{ {
while (blanks[to_uchar (*a)]) while (blanks[to_uchar (*a)])
a++; a++;
@@ -1927,6 +2271,25 @@ nan_compare (char const *sa, char const @@ -1925,6 +2269,25 @@ nan_compare (char const *sa, char const
return memcmp (&a, &b, sizeof a); return memcmp (&a, &b, sizeof a);
} }
@ -2984,7 +2985,7 @@ Index: src/sort.c
static int static int
general_numcompare (char const *sa, char const *sb) general_numcompare (char const *sa, char const *sb)
{ {
@@ -1959,7 +2322,7 @@ general_numcompare (char const *sa, char @@ -1957,7 +2320,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
@ -2993,7 +2994,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;
@@ -2234,15 +2597,14 @@ debug_key (struct line const *line, stru @@ -2232,15 +2595,14 @@ debug_key (struct line const *line, stru
char saved = *lim; char saved = *lim;
*lim = '\0'; *lim = '\0';
@ -3011,7 +3012,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)
@@ -2386,7 +2748,7 @@ key_warnings (struct keyfield const *gke @@ -2384,7 +2746,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 */
@ -3020,7 +3021,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)))
@@ -2444,11 +2806,83 @@ key_warnings (struct keyfield const *gke @@ -2442,11 +2804,83 @@ 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"));
} }
@ -3105,7 +3106,7 @@ Index: src/sort.c
{ {
struct keyfield *key = keylist; struct keyfield *key = keylist;
@@ -2533,7 +2967,7 @@ keycompare (struct line const *a, struct @@ -2531,7 +2965,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)
@ -3114,7 +3115,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)
@@ -2649,6 +3083,179 @@ keycompare (struct line const *a, struct @@ -2647,6 +3081,179 @@ keycompare (struct line const *a, struct
return key->reverse ? -diff : diff; return key->reverse ? -diff : diff;
} }
@ -3294,7 +3295,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. */
@@ -4109,7 +4716,7 @@ main (int argc, char **argv) @@ -4107,7 +4714,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);
@ -3303,7 +3304,7 @@ Index: src/sort.c
hard_LC_TIME = hard_locale (LC_TIME); hard_LC_TIME = hard_locale (LC_TIME);
#endif #endif
@@ -4130,6 +4737,29 @@ main (int argc, char **argv) @@ -4128,6 +4735,29 @@ main (int argc, char **argv)
thousands_sep = -1; thousands_sep = -1;
} }
@ -3333,7 +3334,7 @@ Index: src/sort.c
have_read_stdin = false; have_read_stdin = false;
inittables (); inittables ();
@@ -4400,13 +5030,34 @@ main (int argc, char **argv) @@ -4398,13 +5028,34 @@ main (int argc, char **argv)
case 't': case 't':
{ {
@ -3372,7 +3373,7 @@ Index: src/sort.c
else else
{ {
/* Provoke with 'sort -txx'. Complain about /* Provoke with 'sort -txx'. Complain about
@@ -4417,9 +5068,12 @@ main (int argc, char **argv) @@ -4415,9 +5066,12 @@ main (int argc, char **argv)
quote (optarg)); quote (optarg));
} }
} }
@ -3389,8 +3390,8 @@ Index: src/sort.c
Index: src/unexpand.c Index: src/unexpand.c
=================================================================== ===================================================================
--- src/unexpand.c.orig 2012-03-24 21:26:51.000000000 +0100 --- src/unexpand.c.orig 2012-05-01 22:55:08.000000000 +0200
+++ src/unexpand.c 2012-04-16 17:00:03.957114654 +0200 +++ src/unexpand.c 2012-06-19 12:13:47.373654222 +0200
@@ -38,12 +38,29 @@ @@ -38,12 +38,29 @@
#include <stdio.h> #include <stdio.h>
#include <getopt.h> #include <getopt.h>
@ -3646,8 +3647,8 @@ Index: src/unexpand.c
error (EXIT_FAILURE, errno, "-"); error (EXIT_FAILURE, errno, "-");
Index: src/uniq.c Index: src/uniq.c
=================================================================== ===================================================================
--- src/uniq.c.orig 2012-03-24 21:26:51.000000000 +0100 --- src/uniq.c.orig 2012-05-01 22:55:08.000000000 +0200
+++ src/uniq.c 2012-04-16 17:00:03.957114654 +0200 +++ src/uniq.c 2012-06-19 12:13:47.374654199 +0200
@@ -21,6 +21,16 @@ @@ -21,6 +21,16 @@
#include <getopt.h> #include <getopt.h>
#include <sys/types.h> #include <sys/types.h>
@ -4016,9 +4017,9 @@ Index: src/uniq.c
check_chars = SIZE_MAX; check_chars = SIZE_MAX;
Index: tests/Makefile.am Index: tests/Makefile.am
=================================================================== ===================================================================
--- tests/Makefile.am.orig 2012-03-24 19:22:13.000000000 +0100 --- tests/Makefile.am.orig 2012-05-10 16:36:42.000000000 +0200
+++ tests/Makefile.am 2012-04-16 17:00:03.957114654 +0200 +++ tests/Makefile.am 2012-06-19 12:13:47.374654199 +0200
@@ -243,6 +243,7 @@ TESTS = \ @@ -247,6 +247,7 @@ TESTS = \
misc/sort-debug-warn \ misc/sort-debug-warn \
misc/sort-discrim \ misc/sort-discrim \
misc/sort-files0-from \ misc/sort-files0-from \
@ -4026,7 +4027,7 @@ Index: tests/Makefile.am
misc/sort-float \ misc/sort-float \
misc/sort-merge \ misc/sort-merge \
misc/sort-merge-fdlimit \ misc/sort-merge-fdlimit \
@@ -537,6 +538,10 @@ TESTS = \ @@ -543,6 +544,10 @@ TESTS = \
$(root_tests) $(root_tests)
pr_data = \ pr_data = \
@ -4040,7 +4041,7 @@ Index: tests/Makefile.am
Index: tests/misc/cut Index: tests/misc/cut
=================================================================== ===================================================================
--- tests/misc/cut.orig 2012-02-03 10:22:06.000000000 +0100 --- tests/misc/cut.orig 2012-02-03 10:22:06.000000000 +0100
+++ tests/misc/cut 2012-04-16 17:00:03.957114654 +0200 +++ tests/misc/cut 2012-06-19 12:13:47.374654199 +0200
@@ -30,7 +30,7 @@ my $mb_locale = $ENV{LOCALE_FR_UTF8}; @@ -30,7 +30,7 @@ my $mb_locale = $ENV{LOCALE_FR_UTF8};
my $prog = 'cut'; my $prog = 'cut';
my $try = "Try '$prog --help' for more information.\n"; my $try = "Try '$prog --help' for more information.\n";
@ -4062,7 +4063,7 @@ Index: tests/misc/cut
Index: tests/misc/mb1.I Index: tests/misc/mb1.I
=================================================================== ===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ tests/misc/mb1.I 2012-04-16 17:00:03.958114628 +0200 +++ tests/misc/mb1.I 2012-06-19 12:13:47.374654199 +0200
@@ -0,0 +1,4 @@ @@ -0,0 +1,4 @@
+Apple10 +Apple10
+Banana5 +Banana5
@ -4071,7 +4072,7 @@ Index: tests/misc/mb1.I
Index: tests/misc/mb1.X Index: tests/misc/mb1.X
=================================================================== ===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ tests/misc/mb1.X 2012-04-16 17:00:03.958114628 +0200 +++ tests/misc/mb1.X 2012-06-19 12:13:47.374654199 +0200
@@ -0,0 +1,4 @@ @@ -0,0 +1,4 @@
+Banana5 +Banana5
+Apple10 +Apple10
@ -4080,7 +4081,7 @@ Index: tests/misc/mb1.X
Index: tests/misc/mb2.I Index: tests/misc/mb2.I
=================================================================== ===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ tests/misc/mb2.I 2012-04-16 17:00:03.958114628 +0200 +++ tests/misc/mb2.I 2012-06-19 12:13:47.374654199 +0200
@@ -0,0 +1,4 @@ @@ -0,0 +1,4 @@
+Apple1020 +Apple1020
+Banana530 +Banana530
@ -4089,7 +4090,7 @@ Index: tests/misc/mb2.I
Index: tests/misc/mb2.X Index: tests/misc/mb2.X
=================================================================== ===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ tests/misc/mb2.X 2012-04-16 17:00:03.958114628 +0200 +++ tests/misc/mb2.X 2012-06-19 12:13:47.374654199 +0200
@@ -0,0 +1,4 @@ @@ -0,0 +1,4 @@
+Citrus205 +Citrus205
+Cherry3010 +Cherry3010
@ -4098,7 +4099,7 @@ Index: tests/misc/mb2.X
Index: tests/misc/sort-mb-tests Index: tests/misc/sort-mb-tests
=================================================================== ===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ tests/misc/sort-mb-tests 2012-04-16 17:00:03.958114628 +0200 +++ tests/misc/sort-mb-tests 2012-06-19 12:13:47.375654176 +0200
@@ -0,0 +1,58 @@ @@ -0,0 +1,58 @@
+#! /bin/sh +#! /bin/sh
+case $# in +case $# in

View File

@ -1,176 +0,0 @@
commit 032a549481444395558286b433296c97c09c721d
Author: Jim Meyering <meyering@redhat.com>
Date: Fri Apr 27 13:28:32 2012 +0200
id,groups: with no user name, print only real and/or effective IDs,
... i.e., don't use the getpw* functions.
Before this change, running groups or id with no user name argument
would include a group name or ID from /etc/passwd. Thus, under unusual
circumstances (default group is changed, but has not taken effect for a
given session), those programs could print a name or ID that is neither
real nor effective.
To demonstrate, run this:
echo 'for i in 1 2; do id -G; sleep 1.5; done' \
|su -s /bin/sh ftp - &
sleep 1; perl -pi -e 's/^(ftp:x:\d+):(\d+)/$1:9876/' /etc/passwd
Those id -G commands printed the following:
50
50 9876
With this change, they print this:
50
50
Similarly, running those programs set-GID could make them
print one ID too many.
* src/group-list.c (print_group_list): When username is NULL, pass
egid, not getpwuid(ruid)->pw_gid), to xgetgroups, per the API
requirements of xgetgroups callee, mgetgroups.
When not using the password database, don't call getpwuid.
* NEWS (Bug fixes): Mention it.
* tests/misc/id-setgid: New file.
* tests/Makefile.am (TESTS): Add it.
(root_tests): It's a root-only test, so add it here, too.
Originally reported by Brynnen Owen as http://bugs.gnu.org/7320.
Raised again by Marc Mengel in http://bugzilla.redhat.com/816708.
Index: NEWS
===================================================================
--- NEWS.orig 2012-03-26 14:06:43.000000000 +0200
+++ NEWS 2012-05-07 14:20:23.431517270 +0200
@@ -1,5 +1,15 @@
GNU coreutils NEWS -*- outline -*-
+** Bug fixes
+
+ id and groups, when invoked with no user name argument, would print
+ the default group ID listed in the password database, and sometimes
+ that ID would be neither real nor effective. For example, when run
+ set-GID, or in a session for which the default group has just been
+ changed, the new group ID would be listed, even though it is not
+ yet effective.
+
+
* Noteworthy changes in release 8.16 (2012-03-26) [stable]
** New features
Index: THANKS.in
===================================================================
--- THANKS.in.orig 2012-03-24 19:22:13.000000000 +0100
+++ THANKS.in 2012-05-07 14:19:38.953620833 +0200
@@ -98,6 +98,7 @@ Brian Silverman bsil
Brian Youmans 3diff@gnu.org
Britton Leo Kerin fsblk@aurora.uaf.edu
Bruce Robertson brucer@theodolite.dyndns.org
+Brynnen Owen owen@illinois.edu
Carl Johnson carlj@cjlinux.home.org
Carl Lowenstein cdl@mpl.UCSD.EDU
Carl Roth roth@urs.us
@@ -355,6 +356,7 @@ Manfred Hollstein manf
Марк Коренберг socketpair@gmail.com
Marc Boucher marc@mbsi.ca
Marc Haber mh+debian-bugs@zugschlus.de
+Marc Mengel mengel@fnal.gov
Marc Lehman schmorp@schmorp.de
Marc Olzheim marcolz@stack.nl
Marco Franzen Marco.Franzen@Thyron.com
Index: src/group-list.c
===================================================================
--- src/group-list.c.orig 2012-02-03 14:16:13.000000000 +0100
+++ src/group-list.c 2012-05-07 14:19:38.953620833 +0200
@@ -38,11 +38,14 @@ print_group_list (const char *username,
bool use_names)
{
bool ok = true;
- struct passwd *pwd;
+ struct passwd *pwd = NULL;
- pwd = getpwuid (ruid);
- if (pwd == NULL)
- ok = false;
+ if (username)
+ {
+ pwd = getpwuid (ruid);
+ if (pwd == NULL)
+ ok = false;
+ }
if (!print_group (rgid, use_names))
ok = false;
@@ -58,8 +61,7 @@ print_group_list (const char *username,
gid_t *groups;
int i;
- int n_groups = xgetgroups (username, (pwd ? pwd->pw_gid : (gid_t) -1),
- &groups);
+ int n_groups = xgetgroups (username, (pwd ? pwd->pw_gid : egid), &groups);
if (n_groups < 0)
{
if (username)
Index: tests/Makefile.am
===================================================================
--- tests/Makefile.am.orig 2012-05-07 14:19:38.807624454 +0200
+++ tests/Makefile.am 2012-05-07 14:19:38.953620833 +0200
@@ -36,6 +36,7 @@ root_tests = \
ls/nameless-uid \
misc/chcon \
misc/chroot-credentials \
+ misc/id-setgid \
misc/selinux \
misc/truncate-owned-by-other \
mkdir/writable-under-readonly \
@@ -197,6 +198,7 @@ TESTS = \
misc/head-pos \
misc/id-context \
misc/id-groups \
+ misc/id-setgid \
misc/md5sum \
misc/md5sum-bsd \
misc/md5sum-newline \
Index: tests/misc/id-setgid
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ tests/misc/id-setgid 2012-05-07 14:19:38.953620833 +0200
@@ -0,0 +1,34 @@
+#!/bin/sh
+# Verify that id -G prints the right group when run set-GID.
+
+# Copyright (C) 2012 Free Software Foundation, Inc.
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+. "${srcdir=.}/init.sh"; path_prepend_ ../src
+print_ver_ id
+require_root_
+
+g=$(id -u $NON_ROOT_USERNAME) || framework_failure_
+
+# Construct a different group number.
+gp1=$(expr $g + 1)
+
+echo $gp1 > exp || framework_failure_
+
+setuidgid -g $gp1 $NON_ROOT_USERNAME env PATH="$PATH" id -G > out || fail=1
+compare exp out || fail=1
+# With coreutils-8.16 and earlier, id -G would print both: $gp1 $g
+
+Exit $fail

View File

@ -1,178 +0,0 @@
commit ee9e43460f366406edff96b5abfb3ff33587e062
Author: Jim Meyering <meyering@redhat.com>
Date: Fri May 4 16:42:31 2012 +0200
cp: handle a race condition more sensibly
* src/copy.c (copy_reg): In a narrow race (stat sees dest, yet
open-without-O_CREAT fails with ENOENT), retry the open with O_CREAT.
* tests/cp/nfs-removal-race: New file.
* tests/Makefile.am (TESTS): Add it.
* NEWS (Bug fixes): Mention it.
Reported by Philipp Thomas and Neil F. Brown in
http://bugs.gnu.org/11100
Index: NEWS
===================================================================
--- NEWS.orig 2012-05-07 14:20:52.079810454 +0200
+++ NEWS 2012-05-07 14:21:35.566738140 +0200
@@ -9,6 +9,14 @@ GNU coreutils NEWS
changed, the new group ID would be listed, even though it is not
yet effective.
+ 'cp S D' is no longer subject to a race: if an existing D were removed
+ between the initial stat and subsequent open-without-O_CREAT, cp would
+ fail with a confusing diagnostic saying that the destination, D, was not
+ found. Now, in this unusual case, it retries the open (but with O_CREAT),
+ and hence usually succeeds. With NFS attribute caching, the condition
+ was particularly easy to trigger, since there, the removal of D could
+ precede the initial stat. [This bug was present in "the beginning".]
+
* Noteworthy changes in release 8.16 (2012-03-26) [stable]
Index: THANKS.in
===================================================================
--- THANKS.in.orig 2012-05-07 14:20:52.079810454 +0200
+++ THANKS.in 2012-05-07 14:20:52.087810257 +0200
@@ -439,7 +439,7 @@ Minh Tran-Le tran
Morten Welinder terra@diku.dk
Nao Nishijima nao.nishijima.xt@hitachi.com
Neal H Walfield neal@cs.uml.edu
-Neil Brown neilb@cse.unsw.edu.au
+Neil F. Brown neilb@suse.de
Nelson H. F. Beebe beebe@math.utah.edu
Nick Estes debian@nickstoys.com
Nick Graham nick.d.graham@gmail.com
@@ -489,6 +489,7 @@ Phil Richards phil
Philippe De Muyter phdm@macqel.be
Philippe Schnoebelen Philippe.Schnoebelen@imag.fr
Phillip Jones mouse@datastacks.com
+Philipp Thomas pth@suse.de
Piergiorgio Sartor sartor@sony.de
Pieter Bowman bowman@math.utah.edu
Piotr Gackiewicz gacek@intertele.pl
Index: src/copy.c
===================================================================
--- src/copy.c.orig 2012-03-24 21:26:51.000000000 +0100
+++ src/copy.c 2012-05-07 14:20:52.087810257 +0200
@@ -889,6 +889,8 @@ copy_reg (char const *src_name, char con
if (*new_dst)
{
+ open_with_O_CREAT:;
+
int open_flags = O_WRONLY | O_CREAT | O_BINARY;
dest_desc = open (dst_name, open_flags | O_EXCL,
dst_mode & ~omitted_permissions);
@@ -939,6 +941,23 @@ copy_reg (char const *src_name, char con
if (dest_desc < 0)
{
+ /* If we've just failed due to ENOENT for an ostensibly preexisting
+ destination (*new_dst was 0), that's a bit of a contradiction/race:
+ the prior stat/lstat said the file existed (*new_dst was 0), yet
+ the subsequent open-existing-file failed with ENOENT. With NFS,
+ the race window is wider still, since its meta-data caching tends
+ to make the stat succeed for a just-removed remote file, while the
+ more-definitive initial open call will fail with ENOENT. When this
+ situation arises, we attempt to open again, but this time with
+ O_CREAT. Do this only when not in move-mode, since when handling
+ a cross-device move, we must never open an existing destination. */
+ if (dest_errno == ENOENT && ! *new_dst && ! x->move_mode)
+ {
+ *new_dst = 1;
+ goto open_with_O_CREAT;
+ }
+
+ /* Otherwise, it's an error. */
error (0, dest_errno, _("cannot create regular file %s"),
quote (dst_name));
return_val = false;
Index: tests/Makefile.am
===================================================================
--- tests/Makefile.am.orig 2012-05-07 14:20:52.080810429 +0200
+++ tests/Makefile.am 2012-05-07 14:20:52.087810257 +0200
@@ -347,6 +347,7 @@ TESTS = \
cp/link-no-deref \
cp/link-preserve \
cp/link-symlink \
+ cp/nfs-removal-race \
cp/no-deref-link1 \
cp/no-deref-link2 \
cp/no-deref-link3 \
Index: tests/cp/nfs-removal-race
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ tests/cp/nfs-removal-race 2012-05-07 14:20:52.087810257 +0200
@@ -0,0 +1,70 @@
+#!/bin/sh
+# Running cp S D on an NFS client while another client has just removed D
+# would lead (w/coreutils-8.16 and earlier) to cp's initial stat call
+# seeing (via stale NFS cache) that D exists, so that cp would then call
+# open without the O_CREAT flag. Yet, the open must actually consult
+# the server, which confesses that D has been deleted, thus causing the
+# open call to fail with ENOENT.
+#
+# This test simulates that situation by intercepting stat for a nonexistent
+# destination, D, and making the stat fill in the result struct for another
+# file and return 0.
+#
+# This test is skipped on systems that lack LD_PRELOAD support; that's fine.
+# Similarly, on a system that lacks <dlfcn.h> or __xstat, skipping it is fine.
+
+# Copyright (C) 2012 Free Software Foundation, Inc.
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+. "${srcdir=.}/init.sh"; path_prepend_ ../src
+print_ver_ cp
+
+# Replace each stat call with a call to this wrapper.
+cat > k.c <<'EOF' || framework_failure_
+#define _GNU_SOURCE
+#include <sys/types.h>
+#include <dlfcn.h>
+
+#define __xstat __xstat_orig
+
+#include <sys/stat.h>
+#include <stddef.h>
+
+#undef __xstat
+
+int
+__xstat (int ver, const char *path, struct stat *st)
+{
+ static int (*real_stat)(int ver, const char *path, struct stat *st) = NULL;
+ if (!real_stat)
+ real_stat = dlsym (RTLD_NEXT, "__xstat");
+ /* When asked to stat nonexistent "d",
+ return results suggesting it exists. */
+ return real_stat (ver, *path == 'd' && path[1] == 0 ? "d2" : path, st);
+}
+EOF
+
+# Then compile/link it:
+$CC -shared -fPIC -O2 k.c -o k.so \
+ || framework_failure_ 'failed to compile with -shared -fPIC'
+
+touch d2 || framework_failure_
+echo xyz > src || framework_failure_
+
+# Finally, run the test:
+LD_PRELOAD=./k.so cp src d || fail=1
+
+compare src d || fail=1
+Exit $fail

View File

@ -1,3 +1,35 @@
-------------------------------------------------------------------
Tue Jun 19 12:37:47 CEST 2012 - pth@suse.de
- Update to 8.17:
** Bug fixes
* stat no longer reports a negative file size as a huge positive
number. [bug present since 'stat' was introduced in
fileutils-4.1.9]
** New features
* split and truncate now allow any seekable files in situations
where the file size is needed, instead of insisting on regular
files.
* fmt now accepts the --goal=WIDTH (-g) option.
* stat -f recognizes new file system types: bdevfs, inodefs, qnx6
** Changes in behavior
* cp,mv,install,cat,split: now read and write a minimum of 64KiB at
a time. This was previously 32KiB and increasing to 64KiB was
seen to increase throughput by about 10% when reading cached
files on 64 bit GNU/Linux.
* cp --attributes-only no longer truncates any existing destination
file, allowing for more general copying of attributes from one
file to another.
- Bring german message catalog up-to-date
------------------------------------------------------------------- -------------------------------------------------------------------
Tue May 15 22:34:03 UTC 2012 - schwab@linux-m68k.org Tue May 15 22:34:03 UTC 2012 - schwab@linux-m68k.org

View File

@ -29,7 +29,7 @@ BuildRequires: libselinux-devel
BuildRequires: pam-devel BuildRequires: pam-devel
BuildRequires: xz BuildRequires: xz
Url: http://www.gnu.org/software/coreutils/ Url: http://www.gnu.org/software/coreutils/
Version: 8.16 Version: 8.17
Release: 0 Release: 0
Provides: fileutils = %{version} Provides: fileutils = %{version}
Provides: mktemp = %{version} Provides: mktemp = %{version}
@ -76,10 +76,6 @@ Patch33: coreutils-8.9-singlethreaded-sort.patch
Patch34: coreutils-acl-nofollow.patch Patch34: coreutils-acl-nofollow.patch
Patch36: coreutils-basename_documentation.patch Patch36: coreutils-basename_documentation.patch
Patch37: coreutils-bnc#697897-setsid.patch Patch37: coreutils-bnc#697897-setsid.patch
#Upstream patch will be included with 8.17
Patch38: coreutils-id_show_real_groups.patch
#Upstream patch, needs to be removed for 8.17
Patch39: coreutils-race_in_cp.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRoot: %{_tmppath}/%{name}-%{version}-build
# this will create a cycle, broken up randomly - coreutils is just too core to have other # this will create a cycle, broken up randomly - coreutils is just too core to have other
# prerequires # prerequires
@ -123,8 +119,6 @@ uname unexpand uniq unlink uptime users vdir wc who whoami yes
%patch34 %patch34
%patch36 %patch36
%patch37 %patch37
%patch38
%patch39
xz -dc %{S:4} >po/de.po xz -dc %{S:4} >po/de.po