diff --git a/coreutils-6.10-longoptions.patch b/coreutils-6.10-longoptions.patch new file mode 100644 index 0000000..3407791 --- /dev/null +++ b/coreutils-6.10-longoptions.patch @@ -0,0 +1,27 @@ +diff -urp coreutils-6.10-orig/src/echo.c coreutils-6.10/src/echo.c +--- coreutils-6.10-orig/src/echo.c 2007-11-25 14:23:31.000000000 +0100 ++++ coreutils-6.10/src/echo.c 2008-01-31 14:01:52.000000000 +0100 +@@ -163,6 +163,10 @@ main (int argc, char **argv) + { + case 'e': case 'E': case 'n': + break; ++ case '-': ++ /* end of short options(allows to print -n,-e or -E) */ ++ argc--; ++ argv++; + default: + goto just_echo; + } +diff -urp coreutils-6.10-orig/lib/long-options.c coreutils-6.10/lib/long-options.c +--- coreutils-6.10-orig/lib/long-options.c 2007-10-17 15:47:26.000000000 +0200 ++++ coreutils-6.10/lib/long-options.c 2008-01-31 14:28:01.000000000 +0100 +@@ -57,8 +57,7 @@ parse_long_options (int argc, + /* Don't print an error message for unrecognized options. */ + opterr = 0; + +- if (argc == 2 +- && (c = getopt_long (argc, argv, "+", long_options, NULL)) != -1) ++ while ((c = getopt_long (argc, argv, "+", long_options, NULL)) != -1) + { + switch (c) + { diff --git a/coreutils-colorls.csh b/coreutils-colorls.csh index f2e9b12..8dadaeb 100755 --- a/coreutils-colorls.csh +++ b/coreutils-colorls.csh @@ -1,21 +1,40 @@ +#! /bin/csh -f # color-ls initialization +if ( "$LS_COLORS" != '' ) then + #do not override user specified LS_COLORS and use them + alias ll 'ls -l --color=tty' + alias l. 'ls -d .* --color=tty' + alias ls 'ls --color=tty' + exit +endif + alias ll 'ls -l' alias l. 'ls -d .*' set COLORS=/etc/DIR_COLORS if ($?TERM) then - if ( -e "/etc/DIR_COLORS.$TERM" ) set COLORS="/etc/DIR_COLORS.$TERM" + if ( -e "/etc/DIR_COLORS.$TERM" ) then + set COLORS="/etc/DIR_COLORS.$TERM" + endif endif -if ( -f ~/.dircolors ) set COLORS=~/.dircolors -if ($?TERM) then - if ( -f ~/.dircolors."$TERM" ) set COLORS=~/.dircolors."$TERM" +if ( -f ~/.dircolors ) then + set COLORS=~/.dircolors +endif +if ( -f ~/.dir_colors ) then + set COLORS=~/.dir_colors endif -if ( -f ~/.dir_colors ) set COLORS=~/.dir_colors if ($?TERM) then - if ( -f ~/.dir_colors."$TERM" ) set COLORS=~/.dir_colors."$TERM" + if ( -f ~/.dircolors."$TERM" ) then + set COLORS=~/.dircolors."$TERM" + endif + if ( -f ~/.dir_colors."$TERM" ) then + set COLORS=~/.dir_colors."$TERM" + endif endif -if ( ! -e "$COLORS" ) exit +if ( ! -e "$COLORS" ) then + exit +endif eval `dircolors -c $COLORS` @@ -25,8 +44,8 @@ endif set color_none=`sed -n '/^COLOR.*none/Ip' < $COLORS` if ( "$color_none" == '' ) then -alias ll 'ls -l --color=tty' -alias l. 'ls -d .* --color=tty' -alias ls 'ls --color=tty' + alias ll 'ls -l --color=tty' + alias l. 'ls -d .* --color=tty' + alias ls 'ls --color=tty' endif unset color_none diff --git a/coreutils-colorls.sh b/coreutils-colorls.sh index ff9ac6a..0f92715 100755 --- a/coreutils-colorls.sh +++ b/coreutils-colorls.sh @@ -1,4 +1,10 @@ # color-ls initialization +if [ -n "$LS_COLORS" ]; then + #do not override user LS_COLORS but use them + alias ll='ls -l --color=tty' 2>/dev/null + alias l.='ls -d .* --color=tty' 2>/dev/null + alias ls='ls --color=tty' 2>/dev/null +fi alias ll='ls -l' 2>/dev/null alias l.='ls -d .*' 2>/dev/null @@ -6,12 +12,12 @@ alias l.='ls -d .*' 2>/dev/null COLORS=/etc/DIR_COLORS [ -e "/etc/DIR_COLORS.$TERM" ] && COLORS="/etc/DIR_COLORS.$TERM" [ -e "$HOME/.dircolors" ] && COLORS="$HOME/.dircolors" -[ -e "$HOME/.dircolors.$TERM" ] && COLORS="$HOME/.dircolors.$TERM" [ -e "$HOME/.dir_colors" ] && COLORS="$HOME/.dir_colors" +[ -e "$HOME/.dircolors.$TERM" ] && COLORS="$HOME/.dircolors.$TERM" [ -e "$HOME/.dir_colors.$TERM" ] && COLORS="$HOME/.dir_colors.$TERM" [ -e "$COLORS" ] || return -eval `dircolors --sh "$COLORS"` +eval `dircolors --sh "$COLORS" 2>/dev/null` [ -z "$LS_COLORS" ] && return if ! egrep -qi "^COLOR.*none" $COLORS >/dev/null 2>/dev/null ; then diff --git a/coreutils-selinux.patch b/coreutils-selinux.patch index 081efa6..5d6b22b 100644 --- a/coreutils-selinux.patch +++ b/coreutils-selinux.patch @@ -243,7 +243,7 @@ diff -urp coreutils-6.10-orig/man/vdir.1 coreutils-6.10/man/vdir.1 diff -urp coreutils-6.10-orig/src/copy.c coreutils-6.10/src/copy.c --- coreutils-6.10-orig/src/copy.c 2008-01-05 23:59:11.000000000 +0100 +++ coreutils-6.10/src/copy.c 2008-01-25 17:23:17.000000000 +0100 -@@ -370,9 +367,10 @@ copy_reg (char const *src_name, char con +@@ -371,9 +371,10 @@ copy_reg (char const *src_name, char con security_context_t con = NULL; if (getfscreatecon (&con) < 0) { @@ -255,7 +255,7 @@ diff -urp coreutils-6.10-orig/src/copy.c coreutils-6.10/src/copy.c return_val = false; goto close_src_and_dst_desc; } -@@ -383,11 +387,12 @@ copy_reg (char const *src_name, char con +@@ -383,11 +384,12 @@ copy_reg (char const *src_name, char con { if (fsetfilecon (dest_desc, con) < 0) { @@ -271,7 +271,7 @@ diff -urp coreutils-6.10-orig/src/copy.c coreutils-6.10/src/copy.c return_val = false; freecon (con); goto close_src_and_dst_desc; -@@ -1630,11 +1635,12 @@ copy_internal (char const *src_name, cha +@@ -1630,11 +1632,12 @@ copy_internal (char const *src_name, cha { if (setfscreatecon (con) < 0) { @@ -287,7 +287,7 @@ diff -urp coreutils-6.10-orig/src/copy.c coreutils-6.10/src/copy.c freecon (con); return false; } -@@ -1644,12 +1650,14 @@ copy_internal (char const *src_name, cha +@@ -1644,12 +1647,14 @@ copy_internal (char const *src_name, cha else { if (errno != ENOTSUP && errno != ENODATA) @@ -308,7 +308,7 @@ diff -urp coreutils-6.10-orig/src/copy.c coreutils-6.10/src/copy.c } } } -@@ -1735,6 +1743,8 @@ copy_internal (char const *src_name, cha +@@ -1735,6 +1740,8 @@ copy_internal (char const *src_name, cha { /* Here, we are crossing a file system boundary and cp's -x option is in effect: so don't copy the contents of this directory. */ @@ -532,6 +532,18 @@ diff -urp coreutils-6.10-orig/src/ls.c coreutils-6.10/src/ls.c }; /* Display letters and indicators for each filetype. +@@ -177,8 +178,9 @@ struct fileinfo + exists, otherwise false. */ + bool linkok; + +- /* For long listings, true if the file has an access control list, +- or an SELinux security context. */ ++ /* For long listings, true if the file has an access control list. ++ Unlike with upstream not true for SELinux scontext(#430779) as ++ this removes possibility to detect ACL via ls */ + bool have_acl; + }; + @@ -241,6 +242,7 @@ static void queue_directory (char const static void sort_files (void); static void parse_ls_color (void); @@ -709,6 +721,26 @@ diff -urp coreutils-6.10-orig/src/ls.c coreutils-6.10/src/ls.c { bool have_acl = false; int attr_len = (do_deref +@@ -2667,9 +2694,7 @@ gobble_file (char const *name, enum file + : lgetfilecon (absolute_name, &f->scontext)); + err = (attr_len < 0); + +- if (err == 0) +- have_acl = ! STREQ ("unlabeled", f->scontext); +- else ++ if (err != 0) + { + f->scontext = UNKNOWN_SECURITY_CONTEXT; + +@@ -2681,7 +2706,7 @@ gobble_file (char const *name, enum file + err = 0; + } + +- if (err == 0 && ! have_acl && format == long_format) ++ if (err == 0 && format == long_format) + { + int n = file_has_acl (absolute_name, &f->stat); + err = (n < 0); @@ -3255,6 +3281,13 @@ print_current_files (void) print_long_format (sorted_file[i]); DIRED_PUTCHAR ('\n'); @@ -1124,12 +1156,17 @@ diff -urp coreutils-6.10-orig/src/stat.c coreutils-6.10/src/stat.c diff -urp coreutils-6.10-orig/tests/misc/selinux coreutils-6.10/tests/misc/selinux --- coreutils-6.10-orig/tests/misc/selinux 2008-01-11 11:34:22.000000000 +0100 +++ coreutils-6.10/tests/misc/selinux 2008-01-25 18:17:59.000000000 +0100 -@@ -32,7 +32,7 @@ chcon $ctx f d p 2>/dev/null || { +@@ -32,12 +32,10 @@ chcon $ctx f d p 2>/dev/null || { # inspect that context with both ls -Z and stat. for i in d f p; do - c=`ls -dogZ $i|cut -d' ' -f3`; test x$c = x$ctx || fail=1 -+ c=`ls -dogZ $i|cut -d' ' -f4`; test x$c = x$ctx || fail=1 ++ c=`ls -dogZ $i|cut -d' ' -f5`; test x$c = x$ctx || fail=1 c=`stat --printf %C $i`; test x$c = x$ctx || fail=1 done - + +-# ensure that ls -l output includes the "+". +-c=`ls -l f|cut -c11`; test "$c" = + || fail=1 + + # Copy each to a new directory and ensure that context is preserved. + cp -r --preserve=all d f p s1 || fail=1 diff --git a/coreutils.spec b/coreutils.spec index a43113a..a1a5308 100644 --- a/coreutils.spec +++ b/coreutils.spec @@ -1,7 +1,7 @@ Summary: The GNU core utilities: a set of tools commonly used in shell scripts Name: coreutils Version: 6.10 -Release: 2%{?dist} +Release: 3%{?dist} License: GPLv3+ Group: System Environment/Base Url: http://www.gnu.org/software/coreutils/ @@ -23,6 +23,7 @@ Source203: coreutils-runuser-l.pamd Patch100: coreutils-chgrp.patch Patch101: coreutils-6.10-configuration.patch Patch102: coreutils-6.10-manpages.patch +Patch103: coreutils-6.10-longoptions.patch # sh-utils Patch703: sh-utils-2.0.11-dateman.patch @@ -99,6 +100,7 @@ cd %name-%version %patch100 -p1 -b .chgrp %patch101 -p1 -b .configure %patch102 -p1 -b .manpages +%patch103 -p1 -b .longopt # sh-utils %patch703 -p1 -b .dateman @@ -289,6 +291,18 @@ fi /sbin/runuser %changelog +* Thu Jan 31 2008 Ondrej Vasik - 6.10-3 +- fix unability of echo to display certain strings(added -- + separator, #431005) +- do not require only one long_opt for certain commands + e.g. sleep, yes - but use first usable (#431005) +- do not override userspecified LS_COLORS variable, but + use it for colored ls(#430827) +- discard errors from dircolors to /dev/null + some tuning + of lscolor sh/csh scripts(#430823) +- do not consider files with SELinux security context as + files having ACL in ls long format(#430779) + * Mon Jan 28 2008 Ondrej Vasik - 6.10-2 - some manpages improvements(#406981,#284881) - fix non-versioned obsoletes of mktemp(#430407)