From 81c6e98de32821db3484d88447983a651fe69656353882d2840593f7cb39a3d6 Mon Sep 17 00:00:00 2001 From: Philipp Thomas Date: Tue, 19 Jun 2012 12:54:24 +0000 Subject: [PATCH] - 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 --- coreutils-8.16.de.po.xz | 3 - coreutils-8.16.tar.xz | 3 - coreutils-8.17.de.po.xz | 3 + coreutils-8.17.tar.xz | 3 + coreutils-i18n.patch | 121 +++++++++---------- coreutils-id_show_real_groups.patch | 176 --------------------------- coreutils-race_in_cp.patch | 178 ---------------------------- coreutils.changes | 32 +++++ coreutils.spec | 8 +- 9 files changed, 100 insertions(+), 427 deletions(-) delete mode 100644 coreutils-8.16.de.po.xz delete mode 100644 coreutils-8.16.tar.xz create mode 100644 coreutils-8.17.de.po.xz create mode 100644 coreutils-8.17.tar.xz delete mode 100644 coreutils-id_show_real_groups.patch delete mode 100644 coreutils-race_in_cp.patch diff --git a/coreutils-8.16.de.po.xz b/coreutils-8.16.de.po.xz deleted file mode 100644 index 010f408..0000000 --- a/coreutils-8.16.de.po.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1bc7a83591e12aea216f73f8b0667779886c35518737240b26d6d7d3d7b6a87e -size 98512 diff --git a/coreutils-8.16.tar.xz b/coreutils-8.16.tar.xz deleted file mode 100644 index 9fd6785..0000000 --- a/coreutils-8.16.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2a458fead15d9336f46bb4304cc3eaa6ed9407b9130e7ee2ec533909881d2067 -size 5042844 diff --git a/coreutils-8.17.de.po.xz b/coreutils-8.17.de.po.xz new file mode 100644 index 0000000..ba527eb --- /dev/null +++ b/coreutils-8.17.de.po.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6d62887c50239bfa3c743df063fb20b319c1b70ec019a017da1c8b50a11b87ef +size 98604 diff --git a/coreutils-8.17.tar.xz b/coreutils-8.17.tar.xz new file mode 100644 index 0000000..4b6b684 --- /dev/null +++ b/coreutils-8.17.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4e075a0d238072a5bd079046e1f024dc5e0d9133d43a39c73d0b86b0d1e2c5e5 +size 5077388 diff --git a/coreutils-i18n.patch b/coreutils-i18n.patch index 6413288..044310a 100644 --- a/coreutils-i18n.patch +++ b/coreutils-i18n.patch @@ -20,7 +20,7 @@ Index: lib/linebuffer.h =================================================================== --- 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 @@ # include @@ -45,8 +45,8 @@ Index: lib/linebuffer.h /* Initialize linebuffer LINEBUFFER for use. */ Index: src/cut.c =================================================================== ---- src/cut.c.orig 2012-03-24 21:26:51.000000000 +0100 -+++ src/cut.c 2012-04-16 17:00:03.954114734 +0200 +--- src/cut.c.orig 2012-05-02 10:31:47.000000000 +0200 ++++ src/cut.c 2012-06-19 12:13:47.370654294 +0200 @@ -28,6 +28,11 @@ #include #include @@ -639,8 +639,8 @@ Index: src/cut.c if (optind == argc) Index: src/expand.c =================================================================== ---- src/expand.c.orig 2012-03-24 21:26:51.000000000 +0100 -+++ src/expand.c 2012-04-16 17:00:03.954114734 +0200 +--- src/expand.c.orig 2012-05-01 22:55:08.000000000 +0200 ++++ src/expand.c 2012-06-19 12:13:47.370654294 +0200 @@ -37,12 +37,29 @@ #include #include @@ -830,8 +830,8 @@ Index: src/expand.c error (EXIT_FAILURE, errno, "-"); Index: src/fold.c =================================================================== ---- src/fold.c.orig 2012-03-24 19:22:13.000000000 +0100 -+++ src/fold.c 2012-04-16 17:00:03.954114734 +0200 +--- src/fold.c.orig 2012-04-29 13:45:30.000000000 +0200 ++++ src/fold.c 2012-06-19 12:13:47.370654294 +0200 @@ -22,12 +22,34 @@ #include #include @@ -1232,8 +1232,8 @@ Index: src/fold.c case 's': /* Break at word boundaries. */ Index: src/join.c =================================================================== ---- src/join.c.orig 2012-03-24 21:26:51.000000000 +0100 -+++ src/join.c 2012-04-16 17:00:03.955114707 +0200 +--- src/join.c.orig 2012-05-02 10:31:47.000000000 +0200 ++++ src/join.c 2012-06-19 12:13:47.371654270 +0200 @@ -22,18 +22,32 @@ #include #include @@ -1712,8 +1712,8 @@ Index: src/join.c case NOCHECK_ORDER_OPTION: Index: src/pr.c =================================================================== ---- src/pr.c.orig 2012-03-24 21:26:51.000000000 +0100 -+++ src/pr.c 2012-04-16 17:00:03.955114707 +0200 +--- src/pr.c.orig 2012-05-10 09:14:30.000000000 +0200 ++++ src/pr.c 2012-06-19 12:15:34.144102794 +0200 @@ -312,6 +312,32 @@ #include @@ -2001,13 +2001,13 @@ Index: src/pr.c } /* It's rather pointless to define a TAB separator with column @@ -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. */ - if (number_separator == '\t') + if (number_separator[0] == '\t') - number_width = chars_per_number + - TAB_WIDTH (chars_per_default_tab, chars_per_number); + number_width = (chars_per_number + + TAB_WIDTH (chars_per_default_tab, chars_per_number)); else - number_width = chars_per_number + 1; + 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) } - chars_per_column = (chars_per_line - chars_used_by_number - -- (columns - 1) * col_sep_length) / columns; -+ (columns - 1) * col_sep_width) / columns; + chars_per_column = (chars_per_line - chars_used_by_number +- - (columns - 1) * col_sep_length) / columns; ++ - (columns - 1) * col_sep_width) / columns; if (chars_per_column < 1) error (EXIT_FAILURE, 0, _("page width too narrow")); @@ -2438,15 +2438,16 @@ Index: src/pr.c Index: src/sort.c =================================================================== ---- src/sort.c.orig 2012-03-24 21:26:51.000000000 +0100 -+++ src/sort.c 2012-04-16 17:03:09.060189025 +0200 -@@ -22,11 +22,20 @@ +--- src/sort.c.orig 2012-05-04 12:06:22.000000000 +0200 ++++ src/sort.c 2012-06-19 12:16:37.982577478 +0200 +@@ -22,12 +22,21 @@ #include +#include #include #include + #include #include #include #include @@ -2461,7 +2462,7 @@ Index: src/sort.c #include "system.h" #include "argmatch.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. */ static bool hard_LC_COLLATE; @@ -2497,7 +2498,7 @@ Index: src/sort.c /* The kind of blanks for '-b' to skip in various options. */ 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. */ static bool stable; @@ -2514,7 +2515,7 @@ Index: src/sort.c /* Flag to remove consecutive duplicate lines from the output. Only the last of a sequence of equal lines will be output. */ -@@ -782,6 +811,46 @@ reap_all (void) +@@ -780,6 +809,46 @@ reap_all (void) reap (-1); } @@ -2561,7 +2562,7 @@ Index: src/sort.c /* Clean up any remaining temporary files. */ static void -@@ -1214,7 +1283,7 @@ zaptemp (char const *name) +@@ -1212,7 +1281,7 @@ zaptemp (char const *name) free (node); } @@ -2570,7 +2571,7 @@ Index: src/sort.c static int 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. */ static void @@ -2579,7 +2580,7 @@ Index: src/sort.c { size_t i; -@@ -1241,7 +1310,7 @@ inittables (void) +@@ -1239,7 +1308,7 @@ inittables (void) 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 (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); } @@ -2673,7 +2674,7 @@ Index: src/sort.c /* Specify the amount of main memory to use when sorting. */ static void specify_sort_size (int oi, char c, char const *s) -@@ -1551,7 +1698,7 @@ buffer_linelim (struct buffer const *buf +@@ -1549,7 +1696,7 @@ buffer_linelim (struct buffer const *buf by KEY in LINE. */ static char * @@ -2682,7 +2683,7 @@ Index: src/sort.c { char *ptr = line->text, *lim = ptr + line->length - 1; 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 is absent. */ @@ -2695,7 +2696,7 @@ Index: src/sort.c ++ptr; if (ptr < lim) ++ptr; -@@ -1589,11 +1736,70 @@ begfield (struct line const *line, struc +@@ -1587,11 +1734,70 @@ begfield (struct line const *line, struc return ptr; } @@ -2767,7 +2768,7 @@ Index: src/sort.c { char *ptr = line->text, *lim = ptr + line->length - 1; 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. Otherwise, leave PTR pointing at the first 'blank' character after the preceding field. */ @@ -2780,7 +2781,7 @@ Index: src/sort.c ++ptr; if (ptr < lim && (eword || echar)) ++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. */ @@ -2793,7 +2794,7 @@ Index: src/sort.c if (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; } @@ -2924,7 +2925,7 @@ Index: src/sort.c /* Fill BUF reading from FP, moving buf->left bytes from the end of buf->buf to the beginning first. If EOF is reached and the file wasn't terminated by a newline, supply one. Set up BUF's line -@@ -1777,8 +2107,22 @@ fillbuf (struct buffer *buf, FILE *fp, c +@@ -1775,8 +2105,22 @@ fillbuf (struct buffer *buf, FILE *fp, c else { if (key->skipsblanks) @@ -2949,7 +2950,7 @@ Index: src/sort.c 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. */ static int @@ -2958,7 +2959,7 @@ Index: src/sort.c { while (blanks[to_uchar (*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); } @@ -2984,7 +2985,7 @@ Index: src/sort.c static int 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. */ static int @@ -2993,7 +2994,7 @@ Index: src/sort.c { size_t lo = 0; 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; *lim = '\0'; @@ -3011,7 +3012,7 @@ Index: src/sort.c else if (key->general_numeric) ignore_value (strtold (beg, &tighter_lim)); 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) && !(key->schar || key->echar); 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 && key->schar) || (!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")); } @@ -3105,7 +3106,7 @@ Index: src/sort.c { 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) diff = human_numcompare (ta, tb); else if (key->month) @@ -3114,7 +3115,7 @@ Index: src/sort.c else if (key->random) diff = compare_random (ta, tlena, tb, tlenb); 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; } @@ -3294,7 +3295,7 @@ Index: src/sort.c /* Compare two lines A and B, returning negative, zero, or positive depending on whether A compares less than, equal to, or greater than B. */ -@@ -4109,7 +4716,7 @@ main (int argc, char **argv) +@@ -4107,7 +4714,7 @@ main (int argc, char **argv) initialize_exit_failure (SORT_FAILURE); hard_LC_COLLATE = hard_locale (LC_COLLATE); @@ -3303,7 +3304,7 @@ Index: src/sort.c hard_LC_TIME = hard_locale (LC_TIME); #endif -@@ -4130,6 +4737,29 @@ main (int argc, char **argv) +@@ -4128,6 +4735,29 @@ main (int argc, char **argv) thousands_sep = -1; } @@ -3333,7 +3334,7 @@ Index: src/sort.c have_read_stdin = false; inittables (); -@@ -4400,13 +5030,34 @@ main (int argc, char **argv) +@@ -4398,13 +5028,34 @@ main (int argc, char **argv) case 't': { @@ -3372,7 +3373,7 @@ Index: src/sort.c else { /* 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)); } } @@ -3389,8 +3390,8 @@ Index: src/sort.c Index: src/unexpand.c =================================================================== ---- src/unexpand.c.orig 2012-03-24 21:26:51.000000000 +0100 -+++ src/unexpand.c 2012-04-16 17:00:03.957114654 +0200 +--- src/unexpand.c.orig 2012-05-01 22:55:08.000000000 +0200 ++++ src/unexpand.c 2012-06-19 12:13:47.373654222 +0200 @@ -38,12 +38,29 @@ #include #include @@ -3646,8 +3647,8 @@ Index: src/unexpand.c error (EXIT_FAILURE, errno, "-"); Index: src/uniq.c =================================================================== ---- src/uniq.c.orig 2012-03-24 21:26:51.000000000 +0100 -+++ src/uniq.c 2012-04-16 17:00:03.957114654 +0200 +--- src/uniq.c.orig 2012-05-01 22:55:08.000000000 +0200 ++++ src/uniq.c 2012-06-19 12:13:47.374654199 +0200 @@ -21,6 +21,16 @@ #include #include @@ -4016,9 +4017,9 @@ Index: src/uniq.c check_chars = SIZE_MAX; Index: tests/Makefile.am =================================================================== ---- tests/Makefile.am.orig 2012-03-24 19:22:13.000000000 +0100 -+++ tests/Makefile.am 2012-04-16 17:00:03.957114654 +0200 -@@ -243,6 +243,7 @@ TESTS = \ +--- tests/Makefile.am.orig 2012-05-10 16:36:42.000000000 +0200 ++++ tests/Makefile.am 2012-06-19 12:13:47.374654199 +0200 +@@ -247,6 +247,7 @@ TESTS = \ misc/sort-debug-warn \ misc/sort-discrim \ misc/sort-files0-from \ @@ -4026,7 +4027,7 @@ Index: tests/Makefile.am misc/sort-float \ misc/sort-merge \ misc/sort-merge-fdlimit \ -@@ -537,6 +538,10 @@ TESTS = \ +@@ -543,6 +544,10 @@ TESTS = \ $(root_tests) pr_data = \ @@ -4040,7 +4041,7 @@ Index: tests/Makefile.am Index: tests/misc/cut =================================================================== --- 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}; my $prog = 'cut'; my $try = "Try '$prog --help' for more information.\n"; @@ -4062,7 +4063,7 @@ Index: tests/misc/cut Index: tests/misc/mb1.I =================================================================== --- /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 @@ +Apple@10 +Banana@5 @@ -4071,7 +4072,7 @@ Index: tests/misc/mb1.I Index: tests/misc/mb1.X =================================================================== --- /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 @@ +Banana@5 +Apple@10 @@ -4080,7 +4081,7 @@ Index: tests/misc/mb1.X Index: tests/misc/mb2.I =================================================================== --- /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 @@ +Apple@AA10@@20 +Banana@AA5@@30 @@ -4089,7 +4090,7 @@ Index: tests/misc/mb2.I Index: tests/misc/mb2.X =================================================================== --- /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 @@ +Citrus@AA20@@5 +Cherry@AA30@@10 @@ -4098,7 +4099,7 @@ Index: tests/misc/mb2.X Index: tests/misc/sort-mb-tests =================================================================== --- /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 @@ +#! /bin/sh +case $# in diff --git a/coreutils-id_show_real_groups.patch b/coreutils-id_show_real_groups.patch deleted file mode 100644 index 51e9598..0000000 --- a/coreutils-id_show_real_groups.patch +++ /dev/null @@ -1,176 +0,0 @@ -commit 032a549481444395558286b433296c97c09c721d -Author: Jim Meyering -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 . -+ -+. "${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 diff --git a/coreutils-race_in_cp.patch b/coreutils-race_in_cp.patch deleted file mode 100644 index 0e2824c..0000000 --- a/coreutils-race_in_cp.patch +++ /dev/null @@ -1,178 +0,0 @@ -commit ee9e43460f366406edff96b5abfb3ff33587e062 -Author: Jim Meyering -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 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 . -+ -+. "${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 -+#include -+ -+#define __xstat __xstat_orig -+ -+#include -+#include -+ -+#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 diff --git a/coreutils.changes b/coreutils.changes index bf1c7cb..418981e 100644 --- a/coreutils.changes +++ b/coreutils.changes @@ -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 diff --git a/coreutils.spec b/coreutils.spec index d9dd736..a303659 100644 --- a/coreutils.spec +++ b/coreutils.spec @@ -29,7 +29,7 @@ BuildRequires: libselinux-devel BuildRequires: pam-devel BuildRequires: xz Url: http://www.gnu.org/software/coreutils/ -Version: 8.16 +Version: 8.17 Release: 0 Provides: fileutils = %{version} Provides: mktemp = %{version} @@ -76,10 +76,6 @@ Patch33: coreutils-8.9-singlethreaded-sort.patch Patch34: coreutils-acl-nofollow.patch Patch36: coreutils-basename_documentation.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 # this will create a cycle, broken up randomly - coreutils is just too core to have other # prerequires @@ -123,8 +119,6 @@ uname unexpand uniq unlink uptime users vdir wc who whoami yes %patch34 %patch36 %patch37 -%patch38 -%patch39 xz -dc %{S:4} >po/de.po