New upstream release coreutils-6.11
This commit is contained in:
parent
9e2af9bdea
commit
a81ef24536
@ -1 +1 @@
|
|||||||
coreutils-6.10.tar.lzma
|
coreutils-6.11.tar.lzma
|
||||||
|
@ -1,20 +1,33 @@
|
|||||||
diff -urp coreutils-6.10-orig/src/Makefile.am coreutils-6.10/src/Makefile.am
|
diff -urNp coreutils-6.11-orig/tests/mkdir/selinux coreutils-6.11/tests/mkdir/selinux
|
||||||
--- coreutils-6.10-orig/src/Makefile.am 2008-01-11 11:34:22.000000000 +0100
|
--- coreutils-6.11-orig/tests/mkdir/selinux 2008-04-19 23:34:23.000000000 +0200
|
||||||
+++ coreutils-6.10/src/Makefile.am 2008-01-23 14:52:26.000000000 +0100
|
+++ coreutils-6.11/tests/mkdir/selinux 2008-04-22 13:23:50.000000000 +0200
|
||||||
@@ -170,7 +170,7 @@ install_su = \
|
@@ -30,6 +30,7 @@ fi
|
||||||
echo " chown root $(installed_su)"; \
|
. $srcdir/../envvar-check
|
||||||
chown root $(installed_su); \
|
. $srcdir/../lang-default
|
||||||
echo " chmod $(setuid_root_mode) $(installed_su)"; \
|
. $srcdir/../test-lib.sh
|
||||||
- chmod $(setuid_root_mode) $(installed_su) \
|
+require_selinux_
|
||||||
+ chmod $(setuid_root_mode) $(installed_su); \
|
|
||||||
else \
|
c=invalid-selinux-context
|
||||||
:; \
|
msg="failed to set default file creation context to \`$c':"
|
||||||
fi
|
diff -urNp coreutils-6.11-orig/tests/misc/runcon-no-reorder coreutils-6.11/tests/misc/runcon-no-reorder
|
||||||
diff -urp coreutils-6.10-orig/gnulib-tests/test-getaddrinfo.c coreutils-6.10/gnulib-tests/test-getaddrinfo.c
|
--- coreutils-6.11-orig/tests/misc/runcon-no-reorder 2008-04-19 23:34:23.000000000 +0200
|
||||||
--- coreutils-6.10-orig/gnulib-tests/test-getaddrinfo.c 2007-11-17 07:59:42.000000000 +0100
|
+++ coreutils-6.11/tests/misc/runcon-no-reorder 2008-04-22 12:27:42.000000000 +0200
|
||||||
+++ coreutils-6.10/gnulib-tests/test-getaddrinfo.c 2008-01-25 19:19:43.000000000 +0100
|
@@ -34,8 +34,8 @@ fail=0
|
||||||
@@ -61,6 +61,10 @@ int simple (char *host, char *service)
|
# On such a system it fails with the above diagnostic, which is fine.
|
||||||
if (res == EAI_SERVICE)
|
# Before the no-reorder change, it would have failed with a diagnostic
|
||||||
|
# about -j being an invalid option.
|
||||||
|
-runcon $(id -Z) true -j 2> out && : > exp
|
||||||
|
+#runcon $(id -Z) true -j 2> out && : > exp
|
||||||
|
|
||||||
|
-compare out exp || fail=1
|
||||||
|
+#compare out exp || fail=1
|
||||||
|
|
||||||
|
(exit $fail); exit $fail
|
||||||
|
diff -urp coreutils-6.11-orig/gnulib-tests/test-getaddrinfo.c coreutils-6.11/gnulib-tests/test-getaddrinfo.c
|
||||||
|
--- coreutils-6.11-orig/gnulib-tests/test-getaddrinfo.c
|
||||||
|
+++ coreutils-6.11/gnulib-tests/test-getaddrinfo.c
|
||||||
|
@@ -70,6 +70,10 @@ int simple (char *host, char *service)
|
||||||
|
if (res == EAI_NODATA)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
+ /* Do not fail this test for temporary name resolution errors. */
|
+ /* Do not fail this test for temporary name resolution errors. */
|
||||||
@ -23,96 +36,4 @@ diff -urp coreutils-6.10-orig/gnulib-tests/test-getaddrinfo.c coreutils-6.10/gnu
|
|||||||
+
|
+
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
diff -urNp coreutils-6.10-orig/tests/misc/chcon coreutils-6.10/tests/misc/chcon
|
|
||||||
--- coreutils-6.10-orig/tests/misc/chcon 2008-01-05 23:59:11.000000000 +0100
|
|
||||||
+++ coreutils-6.10/tests/misc/chcon 2008-03-26 13:19:37.000000000 +0100
|
|
||||||
@@ -21,9 +21,15 @@ u1=root
|
|
||||||
r1=object_r
|
|
||||||
t1=tmp_t
|
|
||||||
ctx=$u1:$r1:$t1
|
|
||||||
-chcon $ctx f || fail=1
|
|
||||||
+chcon $ctx f 2>outerror || fail=1
|
|
||||||
stat --printf='f|%C\n' f > out || fail=1
|
|
||||||
|
|
||||||
+cat <<\EOF > experror || fail=1
|
|
||||||
+chcon: failed to change context of `f' to `root:object_r:tmp_t': Invalid argument
|
|
||||||
+EOF
|
|
||||||
+
|
|
||||||
+compare outerror experror >/dev/null && skip_test_ "Missing mcstransd, skipping the test"
|
|
||||||
+
|
|
||||||
# Use --reference.
|
|
||||||
chcon --ref=f g || fail=1
|
|
||||||
stat --printf='g|%C\n' g >> out || fail=1
|
|
||||||
@@ -38,8 +38,9 @@ stat --printf='g|%C\n' g >> out || fail=
|
|
||||||
u2=user_u
|
|
||||||
r2=object_r
|
|
||||||
t2=file_t
|
|
||||||
-l2=SystemLow-SystemHigh
|
|
||||||
-for i in --user=$u2 --role=$r2 --type=$t2 --range=$l2; do
|
|
||||||
+#do not set range here, it will fail in enforcing mode, requires permissive
|
|
||||||
+#l2=SystemLow-SystemHigh
|
|
||||||
+for i in --user=$u2 --role=$r2 --type=$t2; do
|
|
||||||
chcon $i f || fail=1
|
|
||||||
stat --printf="f|$i|"'%C\n' f >> out || fail=1
|
|
||||||
done
|
|
||||||
@@ -56,12 +57,24 @@ g|$ctx
|
|
||||||
f|--user=$u2|$u2:$r1:$t1
|
|
||||||
f|--role=$r2|$u2:$r2:$t1
|
|
||||||
f|--type=$t2|$u2:$r2:$t2
|
|
||||||
-f|--range=$l2|$u2:$r2:$t2:$l2
|
|
||||||
-f|-uroot|root:object_r:file_t:SystemLow-SystemHigh
|
|
||||||
-f|-robject_r|root:object_r:file_t:SystemLow-SystemHigh
|
|
||||||
-f|-ttmp_t|root:object_r:tmp_t:SystemLow-SystemHigh
|
|
||||||
+f|-uroot|root:object_r:file_t
|
|
||||||
+f|-robject_r|root:object_r:file_t
|
|
||||||
+f|-ttmp_t|root:object_r:tmp_t
|
|
||||||
EOF
|
|
||||||
|
|
||||||
compare out exp || fail=1
|
|
||||||
|
|
||||||
+SELINUX_MODE=$(getenforce)
|
|
||||||
+if [ $SELINUX_MODE == "Permissive" ]; then
|
|
||||||
+#check running range for Permisive mode
|
|
||||||
+l2=SystemLow-SystemHigh
|
|
||||||
+chcon --range=$l2 f || fail
|
|
||||||
+stat --printf="f|--range=$l2|"'%C\n' f >> permout || fail=1
|
|
||||||
+cat <<EOF > permexp || fail=1
|
|
||||||
+f|--range=$l2|root:object_r:tmp_t:SystemLow-SystemHigh
|
|
||||||
+EOF
|
|
||||||
+
|
|
||||||
+compare permout permexp || fail=1
|
|
||||||
+fi
|
|
||||||
+
|
|
||||||
(exit $fail); exit $fail
|
|
||||||
diff -urNp coreutils-6.10-orig/tests/misc/factor coreutils-6.10/tests/misc/factor
|
|
||||||
--- coreutils-6.10-orig/tests/misc/factor 2007-12-13 00:14:28.000000000 +0100
|
|
||||||
+++ coreutils-6.10/tests/misc/factor 2008-03-28 13:49:34.000000000 +0100
|
|
||||||
@@ -71,6 +71,7 @@ my @Tests =
|
|
||||||
['x', '4294966896', {OUT => '2 2 2 2 3 3 3 11 607 1489'}],
|
|
||||||
['y', '4294966998', {OUT => '2 3 7 3917 26107'}],
|
|
||||||
['z', '-1',
|
|
||||||
+ {ERR_SUBST => q!s/'1'/1/!}, # map newer glibc diagnostic to expected.
|
|
||||||
{ERR => "$prog: invalid option -- 1\n"
|
|
||||||
. "Try `$prog --help' for more information.\n"},
|
|
||||||
{EXIT => 1}],
|
|
||||||
diff -urNp coreutils-6.10-orig/tests/cp/cp-a-selinux coreutils-6.10/tests/cp/cp-a-selinux
|
|
||||||
--- coreutils-6.10-orig/tests/cp/cp-a-selinux 2008-01-05 23:59:11.000000000 +0100
|
|
||||||
+++ coreutils-6.10/tests/cp/cp-a-selinux 2008-03-26 13:52:24.000000000 +0100
|
|
||||||
@@ -27,6 +27,16 @@ PRIV_CHECK_ARG=require-root . $srcdir/..
|
|
||||||
. $srcdir/../test-lib.sh
|
|
||||||
require_selinux_
|
|
||||||
|
|
||||||
+#check for missing mcstrans(d)
|
|
||||||
+touch f || fail=1
|
|
||||||
+chcon root:object_r:tmp_t f 2>outerror || fail=1
|
|
||||||
+
|
|
||||||
+cat <<\EOF > experror || fail=1
|
|
||||||
+chcon: failed to change context of `f' to `root:object_r:tmp_t': Invalid argument
|
|
||||||
+EOF
|
|
||||||
+
|
|
||||||
+compare outerror experror && skip_test_ "Missing mcstransd, skipping the test"
|
|
||||||
+
|
|
||||||
cwd=`pwd`
|
|
||||||
cleanup_() { cd /; umount "$cwd/mnt"; }
|
|
||||||
|
|
||||||
|
@ -1,91 +0,0 @@
|
|||||||
diff -urNp coreutils-6.10-orig/src/paste.c coreutils-6.10/src/paste.c
|
|
||||||
--- coreutils-6.10-orig/src/paste.c 2007-11-25 14:23:31.000000000 +0100
|
|
||||||
+++ coreutils-6.10/src/paste.c 2008-03-27 14:47:02.000000000 +0100
|
|
||||||
@@ -42,6 +42,7 @@
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include "system.h"
|
|
||||||
#include "error.h"
|
|
||||||
+#include "quotearg.h"
|
|
||||||
|
|
||||||
/* The official name of this program (e.g., no `g' prefix). */
|
|
||||||
#define PROGRAM_NAME "paste"
|
|
||||||
@@ -79,12 +80,17 @@ static struct option const longopts[] =
|
|
||||||
/* Set globals delims and delim_end. Copy STRPTR to DELIMS, converting
|
|
||||||
backslash representations of special characters in STRPTR to their actual
|
|
||||||
values. The set of possible backslash characters has been expanded beyond
|
|
||||||
- that recognized by the Unix version. */
|
|
||||||
+ that recognized by the Unix version.
|
|
||||||
+ Return 0 upon success.
|
|
||||||
+ If the string ends in an odd number of backslashes, ignore the
|
|
||||||
+ final backslash and return nonzero. */
|
|
||||||
|
|
||||||
-static void
|
|
||||||
+static int
|
|
||||||
collapse_escapes (char const *strptr)
|
|
||||||
{
|
|
||||||
char *strout = xstrdup (strptr);
|
|
||||||
+ bool backslash_at_end = false;
|
|
||||||
+
|
|
||||||
delims = strout;
|
|
||||||
|
|
||||||
while (*strptr)
|
|
||||||
@@ -123,6 +129,15 @@ collapse_escapes (char const *strptr)
|
|
||||||
*strout++ = '\v';
|
|
||||||
break;
|
|
||||||
|
|
||||||
+ case '\\':
|
|
||||||
+ *strout++ = '\\';
|
|
||||||
+ break;
|
|
||||||
+
|
|
||||||
+ case '\0':
|
|
||||||
+ backslash_at_end = true;
|
|
||||||
+ goto done;
|
|
||||||
+
|
|
||||||
+
|
|
||||||
default:
|
|
||||||
*strout++ = *strptr;
|
|
||||||
break;
|
|
||||||
@@ -130,7 +145,11 @@ collapse_escapes (char const *strptr)
|
|
||||||
strptr++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+ done:;
|
|
||||||
+
|
|
||||||
delim_end = strout;
|
|
||||||
+ return backslash_at_end ? 1 : 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Report a write error and exit. */
|
|
||||||
@@ -481,7 +500,15 @@ main (int argc, char **argv)
|
|
||||||
if (optind == argc)
|
|
||||||
argv[argc++] = "-";
|
|
||||||
|
|
||||||
- collapse_escapes (delim_arg);
|
|
||||||
+ if (collapse_escapes (delim_arg))
|
|
||||||
+ {
|
|
||||||
+ /* Don't use the default quoting style, because that would double the
|
|
||||||
+ number of displayed backslashes, making the diagnostic look bogus. */
|
|
||||||
+ set_quoting_style (NULL, escape_quoting_style);
|
|
||||||
+ error (EXIT_FAILURE, 0,
|
|
||||||
+ _("delimiter list ends with an unescaped backslash: %s"),
|
|
||||||
+ quotearg_colon (delim_arg));
|
|
||||||
+ }
|
|
||||||
|
|
||||||
if (!serial_merge)
|
|
||||||
ok = paste_parallel (argc - optind, &argv[optind]);
|
|
||||||
diff -urNp coreutils-6.10-orig/src/ptx.c coreutils-6.10/src/ptx.c
|
|
||||||
--- coreutils-6.10-orig/src/ptx.c 2007-11-25 14:23:31.000000000 +0100
|
|
||||||
+++ coreutils-6.10/src/ptx.c 2008-03-27 14:53:24.000000000 +0100
|
|
||||||
@@ -387,6 +387,11 @@ copy_unescaped_string (const char *strin
|
|
||||||
string++;
|
|
||||||
break;
|
|
||||||
|
|
||||||
+ case '\0': /* lone backslash at end of string */
|
|
||||||
+ /* ignore it */
|
|
||||||
+ break;
|
|
||||||
+
|
|
||||||
+
|
|
||||||
default:
|
|
||||||
*cursor++ = '\\';
|
|
||||||
*cursor++ = *string++;
|
|
@ -1,55 +0,0 @@
|
|||||||
diff -urNp coreutils-6.10-orig/src/md5sum.c coreutils-6.10/src/md5sum.c
|
|
||||||
--- coreutils-6.10-orig/src/md5sum.c 2007-11-25 14:23:31.000000000 +0100
|
|
||||||
+++ coreutils-6.10/src/md5sum.c 2008-04-15 21:04:09.000000000 +0200
|
|
||||||
@@ -205,6 +205,9 @@ bsd_split_3 (char *s, size_t s_len, unsi
|
|
||||||
{
|
|
||||||
size_t i;
|
|
||||||
|
|
||||||
+ if (s_len ==0)
|
|
||||||
+ return false;
|
|
||||||
+
|
|
||||||
*file_name = s;
|
|
||||||
|
|
||||||
/* Find end of filename. The BSD 'md5' and 'sha1' commands do not escape
|
|
||||||
diff -urNp coreutils-6.10-orig/src/md5sum.c coreutils-6.10/src/md5sum.c
|
|
||||||
--- coreutils-6.10-orig/src/md5sum.c 2008-04-18 17:40:03.000000000 +0200
|
|
||||||
+++ coreutils-6.10/src/md5sum.c 2008-04-18 17:48:05.000000000 +0200
|
|
||||||
@@ -346,6 +346,8 @@ split_3 (char *s, size_t s_len,
|
|
||||||
static bool
|
|
||||||
hex_digits (unsigned char const *s)
|
|
||||||
{
|
|
||||||
+ if (!*s)
|
|
||||||
+ return false;
|
|
||||||
while (*s)
|
|
||||||
{
|
|
||||||
if (!isxdigit (*s))
|
|
||||||
diff -urNp coreutils-6.10-orig/tests/misc/sha1sum coreutils-6.10/tests/misc/sha1sum
|
|
||||||
--- coreutils-6.10-orig/tests/misc/sha1sum 2007-12-13 00:14:28.000000000 +0100
|
|
||||||
+++ coreutils-6.10/tests/misc/sha1sum 2008-04-15 21:05:43.000000000 +0200
|
|
||||||
@@ -29,7 +29,7 @@ exec $PERL -w -I$srcdir/.. -MCoreutils -M"CuTmpdir qw($me)" -- - <<\EOF
|
|
||||||
require 5.003;
|
|
||||||
use strict;
|
|
||||||
|
|
||||||
-(my $program_name = $0) =~ s|.*/||;
|
|
||||||
+my $prog = 'sha1sum';
|
|
||||||
|
|
||||||
# Turn off localisation of executable's ouput.
|
|
||||||
@ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3;
|
|
||||||
@@ -72,6 +72,8 @@ my @Tests =
|
|
||||||
['check-bsd3', '--check', '--status',
|
|
||||||
{IN=> {'f.sha1' => "SHA1 (f) = $sha_degenerate\n"}},
|
|
||||||
{AUX=> {f=> 'bar'}}, {EXIT=> 1}],
|
|
||||||
+ ['bsd-segv', '--check', {IN=> {'z' => "SHA1 ("}}, {EXIT=> 1},
|
|
||||||
+ {ERR=> "$prog: z: no properly formatted SHA1 checksum lines found\n"}],
|
|
||||||
);
|
|
||||||
|
|
||||||
# Insert the `--text' argument for each test.
|
|
||||||
@@ -86,7 +88,6 @@ foreach $t (@Tests)
|
|
||||||
my $save_temps = $ENV{DEBUG};
|
|
||||||
my $verbose = $ENV{VERBOSE};
|
|
||||||
|
|
||||||
-my $prog = 'sha1sum';
|
|
||||||
-my $fail = run_tests ($program_name, $prog, \@Tests, $save_temps, $verbose);
|
|
||||||
+my $fail = run_tests ($prog, $prog, \@Tests, $save_temps, $verbose);
|
|
||||||
exit $fail;
|
|
||||||
EOF
|
|
@ -1,97 +0,0 @@
|
|||||||
diff -urNp coreutils-6.10-orig/src/mkdir.c coreutils-6.10/src/mkdir.c
|
|
||||||
--- coreutils-6.10-orig/src/mkdir.c 2008-03-27 14:42:40.000000000 +0100
|
|
||||||
+++ coreutils-6.10/src/mkdir.c 2008-03-27 14:51:48.000000000 +0100
|
|
||||||
@@ -211,7 +211,7 @@ main (int argc, char **argv)
|
|
||||||
if (scontext && setfscreatecon (scontext) < 0)
|
|
||||||
error (EXIT_FAILURE, errno,
|
|
||||||
_("failed to set default file creation context to %s"),
|
|
||||||
- quote (optarg));
|
|
||||||
+ quote (scontext));
|
|
||||||
|
|
||||||
if (options.make_ancestor_function || specified_mode)
|
|
||||||
{
|
|
||||||
diff -urNp coreutils-6.10-orig/src/mkfifo.c coreutils-6.10/src/mkfifo.c
|
|
||||||
--- coreutils-6.10-orig/src/mkfifo.c 2008-03-29 17:53:27.000000000 +0100
|
|
||||||
+++ coreutils-6.10/src/mkfifo.c 2008-03-29 17:55:44.000000000 +0100
|
|
||||||
@@ -1,5 +1,5 @@
|
|
||||||
/* mkfifo -- make fifo's (named pipes)
|
|
||||||
- Copyright (C) 90, 91, 1995-2007 Free Software Foundation, Inc.
|
|
||||||
+ Copyright (C) 90, 91, 1995-2008 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
|
|
||||||
@@ -123,7 +123,7 @@ main (int argc, char **argv)
|
|
||||||
if (scontext && setfscreatecon (scontext) < 0)
|
|
||||||
error (EXIT_FAILURE, errno,
|
|
||||||
_("failed to set default file creation context to %s"),
|
|
||||||
- quote (optarg));
|
|
||||||
+ quote (scontext));
|
|
||||||
|
|
||||||
newmode = (S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);
|
|
||||||
if (specified_mode)
|
|
||||||
diff -urNp coreutils-6.10-orig/src/mknod.c coreutils-6.10/src/mknod.c
|
|
||||||
--- coreutils-6.10-orig/src/mknod.c 2008-03-29 17:53:27.000000000 +0100
|
|
||||||
+++ coreutils-6.10/src/mknod.c 2008-03-29 17:55:36.000000000 +0100
|
|
||||||
@@ -175,7 +175,7 @@ main (int argc, char **argv)
|
|
||||||
if (scontext && setfscreatecon (scontext) < 0)
|
|
||||||
error (EXIT_FAILURE, errno,
|
|
||||||
_("failed to set default file creation context to %s"),
|
|
||||||
- quote (optarg));
|
|
||||||
+ quote (scontext));
|
|
||||||
|
|
||||||
/* Only check the first character, to allow mnemonic usage like
|
|
||||||
`mknod /dev/rst0 character 18 0'. */
|
|
||||||
diff -urNp coreutils-6.10-orig/tests/mkdir/selinux coreutils-6.10/tests/mkdir/selinux
|
|
||||||
--- coreutils-6.10-orig/tests/mkdir/selinux 1970-01-01 01:00:00.000000000 +0100
|
|
||||||
+++ coreutils-6.10/tests/mkdir/selinux 2008-03-29 17:58:25.000000000 +0100
|
|
||||||
@@ -0,0 +1,50 @@
|
|
||||||
+#!/bin/sh
|
|
||||||
+# ensure that an invalid context doesn't cause a segfault
|
|
||||||
+
|
|
||||||
+# Copyright (C) 2008 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/>.
|
|
||||||
+
|
|
||||||
+if test "$VERBOSE" = yes; then
|
|
||||||
+ set -x
|
|
||||||
+ mkdir --version
|
|
||||||
+ mkfifo --version
|
|
||||||
+ mknod --version
|
|
||||||
+fi
|
|
||||||
+
|
|
||||||
+. $srcdir/../envvar-check
|
|
||||||
+. $srcdir/../lang-default
|
|
||||||
+. $srcdir/../test-lib.sh
|
|
||||||
+
|
|
||||||
+c=invalid-selinux-context
|
|
||||||
+fail=0
|
|
||||||
+msg="failed to set default file creation context to \`$c':"
|
|
||||||
+
|
|
||||||
+# Test each of mkdir, mknod, mkfifo with "-Z invalid-context".
|
|
||||||
+
|
|
||||||
+for cmd_w_arg in 'mkdir dir' 'mknod b p' 'mkfifo f'; do
|
|
||||||
+ $cmd_w_arg -Z $c 2> out && fail=1
|
|
||||||
+ set $cmd_w_arg; cmd=$1
|
|
||||||
+ echo "$cmd: $msg" > exp || fail=1
|
|
||||||
+
|
|
||||||
+ # Some systems fail with ENOTSUP, or EINVAL, or even ENOENT.
|
|
||||||
+ sed \
|
|
||||||
+ -e 's/ Invalid argument$//' \
|
|
||||||
+ -e 's/ Operation not supported$//' \
|
|
||||||
+ -e 's/ No such file or directory$//' out > k || fail=1
|
|
||||||
+ mv k out || fail=1
|
|
||||||
+ compare out exp || fail=1
|
|
||||||
+done
|
|
||||||
+
|
|
||||||
+(exit $fail); exit $fail
|
|
@ -1,227 +0,0 @@
|
|||||||
diff --git a/doc/coreutils.texi b/doc/coreutils.texi
|
|
||||||
index df6792d..e3a0d50 100644
|
|
||||||
--- a/doc/coreutils.texi
|
|
||||||
+++ b/doc/coreutils.texi
|
|
||||||
@@ -2838,7 +2838,7 @@ Use digits in suffixes rather than lower-case letters.
|
|
||||||
|
|
||||||
@itemx --verbose
|
|
||||||
@opindex --verbose
|
|
||||||
-Write a diagnostic to standard error just before each output file is opened.
|
|
||||||
+Write a diagnostic just before each output file is opened.
|
|
||||||
|
|
||||||
@end table
|
|
||||||
|
|
||||||
@@ -8190,7 +8190,7 @@ If a file has multiple links, only the named links will be removed.
|
|
||||||
@itemx --verbose
|
|
||||||
@opindex -v
|
|
||||||
@opindex --verbose
|
|
||||||
-Display status updates as sterilization proceeds.
|
|
||||||
+Display to standard error status updates as sterilization proceeds.
|
|
||||||
|
|
||||||
@item -x
|
|
||||||
@itemx --exact
|
|
||||||
diff --git a/src/install.c b/src/install.c
|
|
||||||
index db08751..6925c55 100644
|
|
||||||
--- a/src/install.c
|
|
||||||
+++ b/src/install.c
|
|
||||||
@@ -1,5 +1,5 @@
|
|
||||||
/* install - copy files and set attributes
|
|
||||||
- Copyright (C) 89, 90, 91, 1995-2007 Free Software Foundation, Inc.
|
|
||||||
+ Copyright (C) 89, 90, 91, 1995-2008 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
|
|
||||||
@@ -160,6 +160,19 @@ static struct option const long_options[] =
|
|
||||||
{NULL, 0, NULL, 0}
|
|
||||||
};
|
|
||||||
|
|
||||||
+/* Verbose formatted output of variable count of arguments. */
|
|
||||||
+static void
|
|
||||||
+verbose_output (FILE *fp, char const *fmt, ...)
|
|
||||||
+{
|
|
||||||
+ va_list ap;
|
|
||||||
+ fputs (program_name, fp);
|
|
||||||
+ fputs (": ", fp);
|
|
||||||
+ va_start (ap, fmt);
|
|
||||||
+ vfprintf (fp, fmt, ap);
|
|
||||||
+ va_end (ap);
|
|
||||||
+ fputc ('\n', fp);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
static void
|
|
||||||
cp_option_init (struct cp_options *x)
|
|
||||||
{
|
|
||||||
@@ -762,7 +775,7 @@ announce_mkdir (char const *dir, void *options)
|
|
||||||
{
|
|
||||||
struct cp_options const *x = options;
|
|
||||||
if (x->verbose)
|
|
||||||
- error (0, 0, _("creating directory %s"), quote (dir));
|
|
||||||
+ verbose_output (stdout,_("creating directory %s"), quote (dir));
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Make ancestor directory DIR, whose last file name component is
|
|
||||||
diff --git a/src/rmdir.c b/src/rmdir.c
|
|
||||||
index bb1a0c8..1f17f6a 100644
|
|
||||||
--- a/src/rmdir.c
|
|
||||||
+++ b/src/rmdir.c
|
|
||||||
@@ -1,6 +1,6 @@
|
|
||||||
/* rmdir -- remove directories
|
|
||||||
|
|
||||||
- Copyright (C) 90, 91, 1995-2002, 2004, 2005, 2006, 2007 Free Software
|
|
||||||
+ Copyright (C) 90, 91, 1995-2002, 2004-2008 Free Software
|
|
||||||
Foundation, Inc.
|
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
|
||||||
@@ -72,6 +72,19 @@ static struct option const longopts[] =
|
|
||||||
{NULL, 0, NULL, 0}
|
|
||||||
};
|
|
||||||
|
|
||||||
+/* Verbose formatted output of variable count of arguments. */
|
|
||||||
+static void
|
|
||||||
+verbose_output (FILE *fp, char const *fmt, ...)
|
|
||||||
+{
|
|
||||||
+ va_list ap;
|
|
||||||
+ fputs (program_name, fp);
|
|
||||||
+ fputs (": ", fp);
|
|
||||||
+ va_start (ap, fmt);
|
|
||||||
+ vfprintf (fp, fmt, ap);
|
|
||||||
+ va_end (ap);
|
|
||||||
+ fputc ('\n', fp);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
/* Return true if ERROR_NUMBER is one of the values associated
|
|
||||||
with a failed rmdir due to non-empty target directory. */
|
|
||||||
static bool
|
|
||||||
@@ -134,7 +147,7 @@ remove_parents (char *dir)
|
|
||||||
|
|
||||||
/* Give a diagnostic for each attempted removal if --verbose. */
|
|
||||||
if (verbose)
|
|
||||||
- error (0, 0, _("removing directory, %s"), quote (dir));
|
|
||||||
+ verbose_output (stdout,_("removing directory, %s"), quote (dir));
|
|
||||||
|
|
||||||
ok = (rmdir (dir) == 0);
|
|
||||||
|
|
||||||
@@ -233,7 +246,7 @@ main (int argc, char **argv)
|
|
||||||
|
|
||||||
/* Give a diagnostic for each attempted removal if --verbose. */
|
|
||||||
if (verbose)
|
|
||||||
- error (0, 0, _("removing directory, %s"), dir);
|
|
||||||
+ verbose_output(stdout, _("removing directory, %s"), dir);
|
|
||||||
|
|
||||||
if (rmdir (dir) != 0)
|
|
||||||
{
|
|
||||||
diff --git a/src/mkdir.c b/src/mkdir.c
|
|
||||||
index 0704077..3781065 100644
|
|
||||||
--- a/src/mkdir.c
|
|
||||||
+++ b/src/mkdir.c
|
|
||||||
@@ -1,5 +1,5 @@
|
|
||||||
/* mkdir -- make directories
|
|
||||||
- Copyright (C) 90, 1995-2002, 2004-2007 Free Software Foundation, Inc.
|
|
||||||
+ Copyright (C) 90, 1995-2002, 2004-2008 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
|
|
||||||
@@ -79,6 +79,19 @@ Mandatory arguments to long options are mandatory for short options too.\n\
|
|
||||||
exit (status);
|
|
||||||
}
|
|
||||||
|
|
||||||
+/* Verbose formatted output of variable count of arguments. */
|
|
||||||
+static void
|
|
||||||
+verbose_output (FILE *fp, char const *fmt, ...)
|
|
||||||
+{
|
|
||||||
+ va_list ap;
|
|
||||||
+ fputs (program_name, fp);
|
|
||||||
+ fputs (": ", fp);
|
|
||||||
+ va_start (ap, fmt);
|
|
||||||
+ vfprintf (fp, fmt, ap);
|
|
||||||
+ va_end (ap);
|
|
||||||
+ fputc ('\n', fp);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
/* Options passed to subsidiary functions. */
|
|
||||||
struct mkdir_options
|
|
||||||
{
|
|
||||||
@@ -105,7 +118,7 @@ announce_mkdir (char const *dir, void *options)
|
|
||||||
{
|
|
||||||
struct mkdir_options const *o = options;
|
|
||||||
if (o->created_directory_format)
|
|
||||||
- error (0, 0, o->created_directory_format, quote (dir));
|
|
||||||
+ verbose_output (stdout, o->created_directory_format, quote (dir));
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Make ancestor directory DIR, whose last component is COMPONENT,
|
|
||||||
diff --git a/src/split.c b/src/split.c
|
|
||||||
index 5807a1c..f84d40e 100644
|
|
||||||
--- a/src/split.c
|
|
||||||
+++ b/src/split.c
|
|
||||||
@@ -1,5 +1,5 @@
|
|
||||||
/* split.c -- split a file into pieces.
|
|
||||||
- Copyright (C) 1988, 1991, 1995-2007 Free Software Foundation, Inc.
|
|
||||||
+ Copyright (C) 1988, 1991, 1995-2008 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
|
|
||||||
@@ -122,8 +122,8 @@ Mandatory arguments to long options are mandatory for short options too.\n\
|
|
||||||
-l, --lines=NUMBER put NUMBER lines per output file\n\
|
|
||||||
"), DEFAULT_SUFFIX_LENGTH);
|
|
||||||
fputs (_("\
|
|
||||||
- --verbose print a diagnostic to standard error just\n\
|
|
||||||
- before each output file is opened\n\
|
|
||||||
+ --verbose print a diagnostic just before each\n\
|
|
||||||
+ output file is opened\n\
|
|
||||||
"), stdout);
|
|
||||||
fputs (HELP_OPTION_DESCRIPTION, stdout);
|
|
||||||
fputs (VERSION_OPTION_DESCRIPTION, stdout);
|
|
||||||
@@ -208,7 +208,7 @@ cwrite (bool new_file_flag, const char *bp, size_t bytes)
|
|
||||||
|
|
||||||
next_file_name ();
|
|
||||||
if (verbose)
|
|
||||||
- fprintf (stderr, _("creating file %s\n"), quote (outfile));
|
|
||||||
+ fprintf (stdout, _("creating file %s\n"), quote (outfile));
|
|
||||||
output_desc = open (outfile,
|
|
||||||
O_WRONLY | O_CREAT | O_TRUNC | O_BINARY,
|
|
||||||
(S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP
|
|
||||||
diff --git a/tests/misc/split-a b/tests/misc/split-a
|
|
||||||
index 794115f..a8eed38 100755
|
|
||||||
--- a/tests/misc/split-a
|
|
||||||
+++ b/tests/misc/split-a
|
|
||||||
@@ -1,7 +1,7 @@
|
|
||||||
#!/bin/sh
|
|
||||||
# Show that split -a works.
|
|
||||||
|
|
||||||
-# Copyright (C) 2002-2007 Free Software Foundation, Inc.
|
|
||||||
+# Copyright (C) 2002-2008 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
|
|
||||||
@@ -39,7 +39,7 @@ test -f xaz && fail=1
|
|
||||||
rm -f x*
|
|
||||||
|
|
||||||
# With a longer suffix, it must succeed.
|
|
||||||
-split --verbose -b 1 -a 2 in 2> err || fail=1
|
|
||||||
+split --verbose -b 1 -a 2 in > err || fail=1
|
|
||||||
test -f xaa || fail=1
|
|
||||||
test -f xaz || fail=1
|
|
||||||
test -f xba || fail=1
|
|
||||||
diff --git a/tests/mkdir/p-v b/tests/mkdir/p-v
|
|
||||||
index 2c84b41..569e9b0 100755
|
|
||||||
--- a/tests/mkdir/p-v
|
|
||||||
+++ b/tests/mkdir/p-v
|
|
||||||
@@ -1,7 +1,7 @@
|
|
||||||
#!/bin/sh
|
|
||||||
# Test mkdir -pv.
|
|
||||||
|
|
||||||
-# Copyright (C) 2006, 2007 Free Software Foundation, Inc.
|
|
||||||
+# Copyright (C) 2006-2008 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
|
|
||||||
@@ -24,7 +24,7 @@ fi
|
|
||||||
. $srcdir/../lang-default
|
|
||||||
. $srcdir/../test-lib.sh
|
|
||||||
|
|
||||||
-mkdir -pv foo/a/b/c/d 2>out || exit
|
|
||||||
+mkdir -pv foo/a/b/c/d >out || exit
|
|
||||||
|
|
||||||
diff - out <<\EOF
|
|
||||||
mkdir: created directory `foo'
|
|
@ -1,45 +0,0 @@
|
|||||||
diff -urNp coreutils-6.10-orig/src/dd.c coreutils-6.10/src/dd.c
|
|
||||||
--- coreutils-6.10-orig/src/dd.c 2007-12-06 14:22:42.000000000 +0100
|
|
||||||
+++ coreutils-6.10/src/dd.c 2008-03-11 12:48:12.000000000 +0100
|
|
||||||
@@ -391,6 +391,25 @@ static char const ebcdic_to_ascii[] =
|
|
||||||
'\070', '\071', '\372', '\373', '\374', '\375', '\376', '\377'
|
|
||||||
};
|
|
||||||
|
|
||||||
+/* True if we need to close the standard output *stream*. */
|
|
||||||
+static bool close_stdout_required = true;
|
|
||||||
+
|
|
||||||
+/* The only reason to close the standard output *stream* is if
|
|
||||||
+ parse_long_options fails (as it does for --help or --version).
|
|
||||||
+ In any other case, dd uses only the STDOUT_FILENO file descriptor,
|
|
||||||
+ and the "cleanup" function calls "close (STDOUT_FILENO)".
|
|
||||||
+ Closing the file descriptor and then letting the usual atexit-run
|
|
||||||
+ close_stdout function call "fclose (stdout)" would result in a
|
|
||||||
+ harmless failure of the close syscall (with errno EBADF).
|
|
||||||
+ This function serves solely to avoid the unnecessary close_stdout
|
|
||||||
+ call, once parse_long_options has succeeded. */
|
|
||||||
+static void
|
|
||||||
+maybe_close_stdout (void)
|
|
||||||
+{
|
|
||||||
+ if (close_stdout_required)
|
|
||||||
+ close_stdout ();
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
void
|
|
||||||
usage (int status)
|
|
||||||
{
|
|
||||||
@@ -1639,12 +1658,14 @@ main (int argc, char **argv)
|
|
||||||
textdomain (PACKAGE);
|
|
||||||
|
|
||||||
/* Arrange to close stdout if parse_long_options exits. */
|
|
||||||
- atexit (close_stdout);
|
|
||||||
+ atexit (maybe_close_stdout);
|
|
||||||
|
|
||||||
page_size = getpagesize ();
|
|
||||||
|
|
||||||
parse_long_options (argc, argv, PROGRAM_NAME, PACKAGE, VERSION,
|
|
||||||
usage, AUTHORS, (char const *) NULL);
|
|
||||||
+ close_stdout_required = false;
|
|
||||||
+
|
|
||||||
if (getopt_long (argc, argv, "", NULL, NULL) != -1)
|
|
||||||
usage (EXIT_FAILURE);
|
|
||||||
|
|
@ -329,7 +329,7 @@
|
|||||||
error (EXIT_FAILURE, errno, "-");
|
error (EXIT_FAILURE, errno, "-");
|
||||||
--- coreutils-6.8+/src/join.c.i18n 2007-01-14 15:41:28.000000000 +0000
|
--- coreutils-6.8+/src/join.c.i18n 2007-01-14 15:41:28.000000000 +0000
|
||||||
+++ coreutils-6.8+/src/join.c 2007-03-01 15:08:24.000000000 +0000
|
+++ coreutils-6.8+/src/join.c 2007-03-01 15:08:24.000000000 +0000
|
||||||
@@ -23,16 +23,30 @@
|
@@ -23,17 +23,31 @@
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <getopt.h>
|
#include <getopt.h>
|
||||||
|
|
||||||
@ -352,6 +352,7 @@
|
|||||||
#include "stdio--.h"
|
#include "stdio--.h"
|
||||||
#include "xmemcoll.h"
|
#include "xmemcoll.h"
|
||||||
#include "xstrtol.h"
|
#include "xstrtol.h"
|
||||||
|
#include "argmatch.h"
|
||||||
|
|
||||||
+/* Some systems, like BeOS, have multibyte encodings but lack mbstate_t. */
|
+/* Some systems, like BeOS, have multibyte encodings but lack mbstate_t. */
|
||||||
+#if HAVE_MBRTOWC && defined mbstate_t
|
+#if HAVE_MBRTOWC && defined mbstate_t
|
||||||
@ -562,144 +563,6 @@
|
|||||||
xfields (line);
|
xfields (line);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -303,56 +469,114 @@
|
|
||||||
keycmp (struct line const *line1, struct line const *line2)
|
|
||||||
{
|
|
||||||
/* Start of field to compare in each file. */
|
|
||||||
- char *beg1;
|
|
||||||
- char *beg2;
|
|
||||||
-
|
|
||||||
- size_t len1;
|
|
||||||
- size_t len2; /* Length of fields to compare. */
|
|
||||||
+ char *beg[2];
|
|
||||||
+ char *copy[2];
|
|
||||||
+ size_t len[2]; /* Length of fields to compare. */
|
|
||||||
int diff;
|
|
||||||
+ int i, j;
|
|
||||||
|
|
||||||
if (join_field_1 < line1->nfields)
|
|
||||||
{
|
|
||||||
- beg1 = line1->fields[join_field_1].beg;
|
|
||||||
- len1 = line1->fields[join_field_1].len;
|
|
||||||
+ beg[0] = line1->fields[join_field_1].beg;
|
|
||||||
+ len[0] = line1->fields[join_field_1].len;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
- beg1 = NULL;
|
|
||||||
- len1 = 0;
|
|
||||||
+ beg[0] = NULL;
|
|
||||||
+ len[0] = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (join_field_2 < line2->nfields)
|
|
||||||
{
|
|
||||||
- beg2 = line2->fields[join_field_2].beg;
|
|
||||||
- len2 = line2->fields[join_field_2].len;
|
|
||||||
+ beg[1] = line2->fields[join_field_2].beg;
|
|
||||||
+ len[1] = line2->fields[join_field_2].len;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
- beg2 = NULL;
|
|
||||||
- len2 = 0;
|
|
||||||
+ beg[1] = NULL;
|
|
||||||
+ len[1] = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
- if (len1 == 0)
|
|
||||||
- return len2 == 0 ? 0 : -1;
|
|
||||||
- if (len2 == 0)
|
|
||||||
+ if (len[0] == 0)
|
|
||||||
+ return len[1] == 0 ? 0 : -1;
|
|
||||||
+ if (len[1] == 0)
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
if (ignore_case)
|
|
||||||
{
|
|
||||||
- /* FIXME: ignore_case does not work with NLS (in particular,
|
|
||||||
- with multibyte chars). */
|
|
||||||
- diff = memcasecmp (beg1, beg2, MIN (len1, len2));
|
|
||||||
+#ifdef HAVE_MBRTOWC
|
|
||||||
+ if (MB_CUR_MAX > 1)
|
|
||||||
+ {
|
|
||||||
+ size_t mblength;
|
|
||||||
+ wchar_t wc, uwc;
|
|
||||||
+ mbstate_t state, state_bak;
|
|
||||||
+
|
|
||||||
+ memset (&state, '\0', sizeof (mbstate_t));
|
|
||||||
+
|
|
||||||
+ for (i = 0; i < 2; i++)
|
|
||||||
+ {
|
|
||||||
+ copy[i] = alloca (len[i] + 1);
|
|
||||||
+
|
|
||||||
+ for (j = 0; j < MIN (len[0], len[1]);)
|
|
||||||
+ {
|
|
||||||
+ state_bak = state;
|
|
||||||
+ mblength = mbrtowc (&wc, beg[i] + j, len[i] - j, &state);
|
|
||||||
+
|
|
||||||
+ switch (mblength)
|
|
||||||
+ {
|
|
||||||
+ case (size_t) -1:
|
|
||||||
+ case (size_t) -2:
|
|
||||||
+ state = state_bak;
|
|
||||||
+ /* Fall through */
|
|
||||||
+ case 0:
|
|
||||||
+ mblength = 1;
|
|
||||||
+ break;
|
|
||||||
+
|
|
||||||
+ default:
|
|
||||||
+ uwc = towupper (wc);
|
|
||||||
+
|
|
||||||
+ if (uwc != wc)
|
|
||||||
+ {
|
|
||||||
+ mbstate_t state_wc;
|
|
||||||
+
|
|
||||||
+ memset (&state_wc, '\0', sizeof (mbstate_t));
|
|
||||||
+ wcrtomb (copy[i] + j, uwc, &state_wc);
|
|
||||||
+ }
|
|
||||||
+ else
|
|
||||||
+ memcpy (copy[i] + j, beg[i] + j, mblength);
|
|
||||||
+ }
|
|
||||||
+ j += mblength;
|
|
||||||
+ }
|
|
||||||
+ copy[i][j] = '\0';
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ else
|
|
||||||
+#endif
|
|
||||||
+ {
|
|
||||||
+ for (i = 0; i < 2; i++)
|
|
||||||
+ {
|
|
||||||
+ copy[i] = alloca (len[i] + 1);
|
|
||||||
+
|
|
||||||
+ for (j = 0; j < MIN (len[0], len[1]); j++)
|
|
||||||
+ copy[i][j] = toupper (beg[i][j]);
|
|
||||||
+
|
|
||||||
+ copy[i][j] = '\0';
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
- if (hard_LC_COLLATE)
|
|
||||||
- return xmemcoll (beg1, len1, beg2, len2);
|
|
||||||
- diff = memcmp (beg1, beg2, MIN (len1, len2));
|
|
||||||
+ copy[0] = (unsigned char *) beg[0];
|
|
||||||
+ copy[1] = (unsigned char *) beg[1];
|
|
||||||
}
|
|
||||||
|
|
||||||
+ if (hard_LC_COLLATE)
|
|
||||||
+ return xmemcoll ((char *) copy[0], len[0], (char *) copy[1], len[1]);
|
|
||||||
+ diff = memcmp (copy[0], copy[1], MIN (len[0], len[1]));
|
|
||||||
+
|
|
||||||
if (diff)
|
|
||||||
return diff;
|
|
||||||
- return len1 < len2 ? -1 : len1 != len2;
|
|
||||||
+ return len[0] - len[1];
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Print field N of LINE if it exists and is nonempty, otherwise
|
|
||||||
@@ -377,11 +601,18 @@
|
@@ -377,11 +601,18 @@
|
||||||
|
|
||||||
/* Print the join of LINE1 and LINE2. */
|
/* Print the join of LINE1 and LINE2. */
|
||||||
@ -823,7 +686,149 @@
|
|||||||
+ tablen = newtablen;
|
+ tablen = newtablen;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
diff -urNp coreutils-6.11-orig/src/join.c coreutils-6.11/src/join.c
|
||||||
|
--- coreutils-6.11-orig/src/join.c 2008-04-21 13:44:32.000000000 +0200
|
||||||
|
+++ coreutils-6.11/src/join.c 2008-04-21 14:03:22.000000000 +0200
|
||||||
|
@@ -324,56 +324,115 @@ keycmp (struct line const *line1, struct
|
||||||
|
size_t jf_1, size_t jf_2)
|
||||||
|
{
|
||||||
|
/* Start of field to compare in each file. */
|
||||||
|
- char *beg1;
|
||||||
|
- char *beg2;
|
||||||
|
-
|
||||||
|
- size_t len1;
|
||||||
|
- size_t len2; /* Length of fields to compare. */
|
||||||
|
+ char *beg[2];
|
||||||
|
+ char *copy[2];
|
||||||
|
+ size_t len[2]; /* Length of fields to compare. */
|
||||||
|
int diff;
|
||||||
|
+ int i, j;
|
||||||
|
|
||||||
|
if (jf_1 < line1->nfields)
|
||||||
|
{
|
||||||
|
- beg1 = line1->fields[jf_1].beg;
|
||||||
|
- len1 = line1->fields[jf_1].len;
|
||||||
|
+ beg[0] = line1->fields[jf_1].beg;
|
||||||
|
+ len[0] = line1->fields[jf_1].len;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
- beg1 = NULL;
|
||||||
|
- len1 = 0;
|
||||||
|
+ beg[0] = NULL;
|
||||||
|
+ len[0] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (jf_2 < line2->nfields)
|
||||||
|
{
|
||||||
|
- beg2 = line2->fields[jf_2].beg;
|
||||||
|
- len2 = line2->fields[jf_2].len;
|
||||||
|
+ beg[1] = line2->fields[jf_2].beg;
|
||||||
|
+ len[1] = line2->fields[jf_2].len;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
- beg2 = NULL;
|
||||||
|
- len2 = 0;
|
||||||
|
+ beg[1] = NULL;
|
||||||
|
+ len[1] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (len1 == 0)
|
||||||
|
- return len2 == 0 ? 0 : -1;
|
||||||
|
- if (len2 == 0)
|
||||||
|
+ if (len[0] == 0)
|
||||||
|
+ return len[1] == 0 ? 0 : -1;
|
||||||
|
+ if (len[1] == 0)
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
if (ignore_case)
|
||||||
|
{
|
||||||
|
- /* FIXME: ignore_case does not work with NLS (in particular,
|
||||||
|
- with multibyte chars). */
|
||||||
|
- diff = memcasecmp (beg1, beg2, MIN (len1, len2));
|
||||||
|
+#ifdef HAVE_MBRTOWC
|
||||||
|
+ if (MB_CUR_MAX > 1)
|
||||||
|
+ {
|
||||||
|
+ size_t mblength;
|
||||||
|
+ wchar_t wc, uwc;
|
||||||
|
+ mbstate_t state, state_bak;
|
||||||
|
+
|
||||||
|
+ memset (&state, '\0', sizeof (mbstate_t));
|
||||||
|
+
|
||||||
|
+ for (i = 0; i < 2; i++)
|
||||||
|
+ {
|
||||||
|
+ copy[i] = alloca (len[i] + 1);
|
||||||
|
+
|
||||||
|
+ for (j = 0; j < MIN (len[0], len[1]);)
|
||||||
|
+ {
|
||||||
|
+ state_bak = state;
|
||||||
|
+ mblength = mbrtowc (&wc, beg[i] + j, len[i] - j, &state);
|
||||||
|
+
|
||||||
|
+ switch (mblength)
|
||||||
|
+ {
|
||||||
|
+ case (size_t) -1:
|
||||||
|
+ case (size_t) -2:
|
||||||
|
+ state = state_bak;
|
||||||
|
+ /* Fall through */
|
||||||
|
+ case 0:
|
||||||
|
+ mblength = 1;
|
||||||
|
+ break;
|
||||||
|
+
|
||||||
|
+ default:
|
||||||
|
+ uwc = towupper (wc);
|
||||||
|
+
|
||||||
|
+ if (uwc != wc)
|
||||||
|
+ {
|
||||||
|
+ mbstate_t state_wc;
|
||||||
|
+
|
||||||
|
+ memset (&state_wc, '\0', sizeof (mbstate_t));
|
||||||
|
+ wcrtomb (copy[i] + j, uwc, &state_wc);
|
||||||
|
+ }
|
||||||
|
+ else
|
||||||
|
+ memcpy (copy[i] + j, beg[i] + j, mblength);
|
||||||
|
+ }
|
||||||
|
+ j += mblength;
|
||||||
|
+ }
|
||||||
|
+ copy[i][j] = '\0';
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ else
|
||||||
|
+#endif
|
||||||
|
+ {
|
||||||
|
+ for (i = 0; i < 2; i++)
|
||||||
|
+ {
|
||||||
|
+ copy[i] = alloca (len[i] + 1);
|
||||||
|
+
|
||||||
|
+ for (j = 0; j < MIN (len[0], len[1]); j++)
|
||||||
|
+ copy[i][j] = toupper (beg[i][j]);
|
||||||
|
+
|
||||||
|
+ copy[i][j] = '\0';
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
- if (hard_LC_COLLATE)
|
||||||
|
- return xmemcoll (beg1, len1, beg2, len2);
|
||||||
|
- diff = memcmp (beg1, beg2, MIN (len1, len2));
|
||||||
|
+ copy[0] = (unsigned char *) beg[0];
|
||||||
|
+ copy[1] = (unsigned char *) beg[1];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ if (hard_LC_COLLATE)
|
||||||
|
+ return xmemcoll ((char *) copy[0], len[0], (char *) copy[1], len[1]);
|
||||||
|
+ diff = memcmp (copy[0], copy[1], MIN (len[0], len[1]));
|
||||||
|
+
|
||||||
|
+
|
||||||
|
if (diff)
|
||||||
|
return diff;
|
||||||
|
- return len1 < len2 ? -1 : len1 != len2;
|
||||||
|
+ return len[0] - len[1];
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Check that successive input lines PREV and CURRENT from input file
|
||||||
--- coreutils-6.8+/src/uniq.c.i18n 2007-01-14 15:41:28.000000000 +0000
|
--- coreutils-6.8+/src/uniq.c.i18n 2007-01-14 15:41:28.000000000 +0000
|
||||||
+++ coreutils-6.8+/src/uniq.c 2007-03-01 15:08:24.000000000 +0000
|
+++ coreutils-6.8+/src/uniq.c 2007-03-01 15:08:24.000000000 +0000
|
||||||
@@ -23,6 +23,16 @@
|
@@ -23,6 +23,16 @@
|
||||||
|
@ -1,103 +0,0 @@
|
|||||||
src/copy.c | 5 +++--
|
|
||||||
tests/mv/Makefile.am | 4 ++--
|
|
||||||
tests/mv/atomic2 | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
||||||
3 files changed, 55 insertions(+), 4 deletions(-)
|
|
||||||
create mode 100755 tests/mv/atomic2
|
|
||||||
|
|
||||||
diff --git a/src/copy.c b/src/copy.c
|
|
||||||
index fd31b5c..208a674 100644
|
|
||||||
--- a/src/copy.c
|
|
||||||
+++ b/src/copy.c
|
|
||||||
@@ -1339,10 +1339,11 @@ copy_internal (char const *src_name, char const *dst_name,
|
|
||||||
new_dst = true;
|
|
||||||
}
|
|
||||||
else if (! S_ISDIR (dst_sb.st_mode)
|
|
||||||
+ /* Never unlink dst_name when in move mode. */
|
|
||||||
+ && ! x->move_mode
|
|
||||||
&& (x->unlink_dest_before_opening
|
|
||||||
|| (x->preserve_links && 1 < dst_sb.st_nlink)
|
|
||||||
- || (!x->move_mode
|
|
||||||
- && x->dereference == DEREF_NEVER
|
|
||||||
+ || (x->dereference == DEREF_NEVER
|
|
||||||
&& S_ISLNK (src_sb.st_mode))
|
|
||||||
))
|
|
||||||
{
|
|
||||||
diff --git a/tests/mv/Makefile.am b/tests/mv/Makefile.am
|
|
||||||
index c121911..92ec68e 100644
|
|
||||||
--- a/tests/mv/Makefile.am
|
|
||||||
+++ b/tests/mv/Makefile.am
|
|
||||||
@@ -1,7 +1,6 @@
|
|
||||||
# Make coreutils tests for "mv". -*-Makefile-*-
|
|
||||||
|
|
||||||
-# Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
|
|
||||||
-# Free Software Foundation, Inc.
|
|
||||||
+# Copyright (C) 1998-2008 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
|
|
||||||
@@ -17,6 +16,7 @@
|
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
TESTS = \
|
|
||||||
+ atomic2 \
|
|
||||||
sticky-to-xpart \
|
|
||||||
hard-verbose \
|
|
||||||
backup-dir \
|
|
||||||
diff --git a/tests/mv/atomic2 b/tests/mv/atomic2
|
|
||||||
new file mode 100755
|
|
||||||
index 0000000..d1029aa
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/tests/mv/atomic2
|
|
||||||
@@ -0,0 +1,50 @@
|
|
||||||
+#!/bin/sh
|
|
||||||
+# ensure that mv doesn't first unlink a multi-hard-linked destination
|
|
||||||
+
|
|
||||||
+# Copyright (C) 2008 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/>.
|
|
||||||
+
|
|
||||||
+if test "$VERBOSE" = yes; then
|
|
||||||
+ set -x
|
|
||||||
+ mv --version
|
|
||||||
+fi
|
|
||||||
+
|
|
||||||
+. $srcdir/../strace
|
|
||||||
+. $srcdir/../test-lib.sh
|
|
||||||
+
|
|
||||||
+# Before the fix, mv would unnecessarily unlink the destination symlink:
|
|
||||||
+# $ rm -f a b b2; touch a b; ln b b2; strace -e unlink /p/bin/mv a b
|
|
||||||
+# unlink("b") = 0
|
|
||||||
+#
|
|
||||||
+# With the fix, it doesn't call unlink:
|
|
||||||
+# $ rm -f a b b2; touch a b; ln b b2; strace -e unlink ./mv a b
|
|
||||||
+# $
|
|
||||||
+
|
|
||||||
+touch a b || framework_failure
|
|
||||||
+ln b b2 || framework_failure
|
|
||||||
+
|
|
||||||
+fail=0
|
|
||||||
+
|
|
||||||
+strace -qe unlink mv a b > out 2>&1 || fail=1
|
|
||||||
+$EGREP 'unlink.*"b"' out && fail=1
|
|
||||||
+
|
|
||||||
+# Ensure that the source, "a", is gone.
|
|
||||||
+ls -dl a > /dev/null 2>&1 && fail=1
|
|
||||||
+
|
|
||||||
+# Ensure that the destination, "b", has link count 1.
|
|
||||||
+n_links=`stat --printf=%h b` || fail=1
|
|
||||||
+test "$n_links" = 1 || fail=1
|
|
||||||
+
|
|
||||||
+(exit $fail); exit $fail
|
|
||||||
--
|
|
||||||
1.5.5.rc0.7.g57e83
|
|
@ -967,19 +967,6 @@ diff -urp coreutils-6.10-orig/src/mkdir.c coreutils-6.10/src/mkdir.c
|
|||||||
"), stdout);
|
"), stdout);
|
||||||
fputs (HELP_OPTION_DESCRIPTION, stdout);
|
fputs (HELP_OPTION_DESCRIPTION, stdout);
|
||||||
fputs (VERSION_OPTION_DESCRIPTION, stdout);
|
fputs (VERSION_OPTION_DESCRIPTION, stdout);
|
||||||
@@ -173,6 +174,12 @@ main (int argc, char **argv)
|
|
||||||
options.created_directory_format = _("created directory %s");
|
|
||||||
break;
|
|
||||||
case 'Z':
|
|
||||||
+ /* politely decline if we're not on a selinux-enabled kernel. */
|
|
||||||
+ if( !(is_selinux_enabled()>0)) {
|
|
||||||
+ fprintf( stderr, "Sorry, --context (-Z) can be used only on "
|
|
||||||
+ "a selinux-enabled kernel.\n" );
|
|
||||||
+ exit( 1 );
|
|
||||||
+ }
|
|
||||||
scontext = optarg;
|
|
||||||
break;
|
|
||||||
case_GETOPT_HELP_CHAR;
|
|
||||||
diff -urp coreutils-6.10-orig/src/mkfifo.c coreutils-6.10/src/mkfifo.c
|
diff -urp coreutils-6.10-orig/src/mkfifo.c coreutils-6.10/src/mkfifo.c
|
||||||
--- coreutils-6.10-orig/src/mkfifo.c 2008-01-05 23:58:25.000000000 +0100
|
--- coreutils-6.10-orig/src/mkfifo.c 2008-01-05 23:58:25.000000000 +0100
|
||||||
+++ coreutils-6.10/src/mkfifo.c 2008-01-25 16:58:15.000000000 +0100
|
+++ coreutils-6.10/src/mkfifo.c 2008-01-25 16:58:15.000000000 +0100
|
||||||
@ -993,19 +980,6 @@ diff -urp coreutils-6.10-orig/src/mkfifo.c coreutils-6.10/src/mkfifo.c
|
|||||||
"), stdout);
|
"), stdout);
|
||||||
fputs (_("\
|
fputs (_("\
|
||||||
Mandatory arguments to long options are mandatory for short options too.\n\
|
Mandatory arguments to long options are mandatory for short options too.\n\
|
||||||
@@ -98,6 +99,12 @@ main (int argc, char **argv)
|
|
||||||
specified_mode = optarg;
|
|
||||||
break;
|
|
||||||
case 'Z':
|
|
||||||
+ if (!(0 < is_selinux_enabled()))
|
|
||||||
+ {
|
|
||||||
+ fprintf( stderr, "Sorry, --context (-Z) can be used only on "
|
|
||||||
+ "a selinux-enabled kernel.\n" );
|
|
||||||
+ exit (1);
|
|
||||||
+ }
|
|
||||||
scontext = optarg;
|
|
||||||
break;
|
|
||||||
case_GETOPT_HELP_CHAR;
|
|
||||||
diff -urp coreutils-6.10-orig/src/mknod.c coreutils-6.10/src/mknod.c
|
diff -urp coreutils-6.10-orig/src/mknod.c coreutils-6.10/src/mknod.c
|
||||||
--- coreutils-6.10-orig/src/mknod.c 2008-01-05 23:58:25.000000000 +0100
|
--- coreutils-6.10-orig/src/mknod.c 2008-01-05 23:58:25.000000000 +0100
|
||||||
+++ coreutils-6.10/src/mknod.c 2008-01-25 17:01:11.000000000 +0100
|
+++ coreutils-6.10/src/mknod.c 2008-01-25 17:01:11.000000000 +0100
|
||||||
@ -1028,19 +1002,6 @@ diff -urp coreutils-6.10-orig/src/mknod.c coreutils-6.10/src/mknod.c
|
|||||||
"), stdout);
|
"), stdout);
|
||||||
fputs (_("\
|
fputs (_("\
|
||||||
Mandatory arguments to long options are mandatory for short options too.\n\
|
Mandatory arguments to long options are mandatory for short options too.\n\
|
||||||
@@ -114,6 +115,12 @@ main (int argc, char **argv)
|
|
||||||
specified_mode = optarg;
|
|
||||||
break;
|
|
||||||
case 'Z':
|
|
||||||
+ /* politely decline if we're not on a selinux-enabled kernel. */
|
|
||||||
+ if( !(is_selinux_enabled()>0)) {
|
|
||||||
+ fprintf( stderr, "Sorry, --context (-Z) can be used only on "
|
|
||||||
+ "a selinux-enabled kernel.\n" );
|
|
||||||
+ exit( 1 );
|
|
||||||
+ }
|
|
||||||
scontext = optarg;
|
|
||||||
break;
|
|
||||||
case_GETOPT_HELP_CHAR;
|
|
||||||
diff -urp coreutils-6.10-orig/src/mv.c coreutils-6.10/src/mv.c
|
diff -urp coreutils-6.10-orig/src/mv.c coreutils-6.10/src/mv.c
|
||||||
--- coreutils-6.10-orig/src/mv.c 2008-01-05 23:59:11.000000000 +0100
|
--- coreutils-6.10-orig/src/mv.c 2008-01-05 23:59:11.000000000 +0100
|
||||||
+++ coreutils-6.10/src/mv.c 2008-01-25 17:11:50.000000000 +0100
|
+++ coreutils-6.10/src/mv.c 2008-01-25 17:11:50.000000000 +0100
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
Summary: The GNU core utilities: a set of tools commonly used in shell scripts
|
Summary: The GNU core utilities: a set of tools commonly used in shell scripts
|
||||||
Name: coreutils
|
Name: coreutils
|
||||||
Version: 6.10
|
Version: 6.11
|
||||||
Release: 21%{?dist}
|
Release: 1%{?dist}
|
||||||
License: GPLv3+
|
License: GPLv3+
|
||||||
Group: System Environment/Base
|
Group: System Environment/Base
|
||||||
Url: http://www.gnu.org/software/coreutils/
|
Url: http://www.gnu.org/software/coreutils/
|
||||||
@ -18,12 +18,6 @@ Source202: coreutils-su-l.pamd
|
|||||||
Source203: coreutils-runuser-l.pamd
|
Source203: coreutils-runuser-l.pamd
|
||||||
|
|
||||||
# From upstream
|
# From upstream
|
||||||
Patch1: coreutils-6.10-verbose.patch
|
|
||||||
Patch2: coreutils-dddoubleclose.patch
|
|
||||||
Patch3: coreutils-mvatomic.patch
|
|
||||||
Patch4: coreutils-6.10-lonebackslash.patch
|
|
||||||
Patch5: coreutils-6.10-mkscontextsegfault.patch
|
|
||||||
Patch6: coreutils-6.10-md5sha1sum.patch
|
|
||||||
|
|
||||||
# Our patches
|
# Our patches
|
||||||
Patch100: coreutils-chgrp.patch
|
Patch100: coreutils-chgrp.patch
|
||||||
@ -102,12 +96,6 @@ lzma -dc %SOURCE0 | tar xf -
|
|||||||
cd %name-%version
|
cd %name-%version
|
||||||
|
|
||||||
# From upstream
|
# From upstream
|
||||||
%patch1 -p1 -b .verbose
|
|
||||||
%patch2 -p1 -b .doubleclose
|
|
||||||
%patch3 -p1 -b .atomic
|
|
||||||
%patch4 -p1 -b .backslash
|
|
||||||
%patch5 -p1 -b .mksegfault
|
|
||||||
%patch6 -p1 -b .mda5sum
|
|
||||||
|
|
||||||
# Our patches
|
# Our patches
|
||||||
%patch100 -p1 -b .chgrp
|
%patch100 -p1 -b .chgrp
|
||||||
@ -138,7 +126,6 @@ cd %name-%version
|
|||||||
%patch951 -p1 -b .selinuxman
|
%patch951 -p1 -b .selinuxman
|
||||||
|
|
||||||
chmod a+x tests/sort/sort-mb-tests
|
chmod a+x tests/sort/sort-mb-tests
|
||||||
chmod a+x tests/mkdir/selinux
|
|
||||||
|
|
||||||
#fix typos/mistakes in localized documentation(#439410, #440056)
|
#fix typos/mistakes in localized documentation(#439410, #440056)
|
||||||
for pofile in $(find ./po/*.p*)
|
for pofile in $(find ./po/*.p*)
|
||||||
@ -314,6 +301,10 @@ fi
|
|||||||
/sbin/runuser
|
/sbin/runuser
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Mon Apr 21 2008 Ondrej Vasik <ovasik@redhat.com> - 6.11-1
|
||||||
|
- New upstream release 6.11
|
||||||
|
- removed accepted patches + few minor patch changes
|
||||||
|
|
||||||
* Fri Apr 18 2008 Ondrej Vasik <ovasik@redhat.com> - 6.10-21
|
* Fri Apr 18 2008 Ondrej Vasik <ovasik@redhat.com> - 6.10-21
|
||||||
- fix wrong checksum line handling in sha1sum -c
|
- fix wrong checksum line handling in sha1sum -c
|
||||||
command(#439531)
|
command(#439531)
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
--- coreutils-5.92/man/date.1.dateman 2005-10-22 19:14:46.000000000 +0100
|
--- coreutils-5.92/man/date.1.dateman 2005-10-22 19:14:46.000000000 +0100
|
||||||
+++ coreutils-5.92/man/date.1 2005-10-24 17:57:38.000000000 +0100
|
+++ coreutils-5.92/man/date.1 2005-10-24 17:57:38.000000000 +0100
|
||||||
@@ -188,6 +188,11 @@
|
@@ -214,6 +214,11 @@
|
||||||
then an optional modifier, which is either
|
relative date, and numbers. An empty string indicates the beginning
|
||||||
E to use the locale's alternate representations if available, or
|
of the day. The date string format is more complex than is easily
|
||||||
O to use the locale's alternate numeric symbols if available.
|
documented here but is fully described in the info documentation.
|
||||||
+.SH ENVIRONMENT
|
+.SH ENVIRONMENT
|
||||||
+.TP
|
+.TP
|
||||||
+TZ
|
+TZ
|
||||||
|
Loading…
Reference in New Issue
Block a user