This commit is contained in:
parent
53989f3f1e
commit
a4ae165425
File diff suppressed because it is too large
Load Diff
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:49d2f703e2310e6328cb6f9d9bae3612c42b3ee5175f449692c5b95e453cf18a
|
|
||||||
size 9001890
|
|
@ -1,8 +1,162 @@
|
|||||||
Index: src/Makefile.am
|
--- Makefile.in
|
||||||
================================================================================
|
+++ Makefile.in
|
||||||
|
@@ -732,6 +732,7 @@ PACKAGE_STRING = @PACKAGE_STRING@
|
||||||
|
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||||
|
PACKAGE_URL = @PACKAGE_URL@
|
||||||
|
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||||
|
+PAM_LIBS = @PAM_LIBS@
|
||||||
|
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||||
|
PERL = @PERL@
|
||||||
|
POSIX_SHELL = @POSIX_SHELL@
|
||||||
|
--- configure
|
||||||
|
+++ configure
|
||||||
|
@@ -612,6 +612,7 @@ OPTIONAL_BIN_PROGS
|
||||||
|
INSTALL_SU
|
||||||
|
LIB_GMP
|
||||||
|
LIB_CRYPT
|
||||||
|
+PAM_LIBS
|
||||||
|
WERROR_CFLAGS
|
||||||
|
SEQ_LIBM
|
||||||
|
LIB_CAP
|
||||||
|
@@ -1231,6 +1232,7 @@ with_included_regex
|
||||||
|
enable_xattr
|
||||||
|
enable_libcap
|
||||||
|
enable_gcc_warnings
|
||||||
|
+enable_pam
|
||||||
|
with_gmp
|
||||||
|
enable_install_program
|
||||||
|
enable_no_install_program
|
||||||
|
@@ -1877,6 +1879,7 @@ Optional Features:
|
||||||
|
--disable-xattr do not support extended attributes
|
||||||
|
--disable-libcap disable libcap support
|
||||||
|
--enable-gcc-warnings turn on lots of GCC warnings (not recommended)
|
||||||
|
+ --disable-pam Enable PAM support in su (default=auto)
|
||||||
|
--enable-install-program=PROG_LIST
|
||||||
|
install the programs in PROG_LIST (comma-separated,
|
||||||
|
default: none)
|
||||||
|
@@ -26931,7 +26934,6 @@ fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
-
|
||||||
|
XGETTEXT_EXTRA_OPTIONS="$XGETTEXT_EXTRA_OPTIONS --keyword='proper_name:1,\"This is a proper name. See the gettext manual, section Names.\"'"
|
||||||
|
|
||||||
|
|
||||||
|
@@ -39096,6 +39098,111 @@ $as_echo "#define HAVE_WORKING_FORK 1" >
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
+# Check whether --enable-pam was given.
|
||||||
|
+if test "${enable_pam+set}" = set; then
|
||||||
|
+ enableval=$enable_pam;
|
||||||
|
+else
|
||||||
|
+ enable_pam=yes
|
||||||
|
+fi
|
||||||
|
+
|
||||||
|
+if test "x$enable_pam" != xno; then
|
||||||
|
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pam_start in -lpam" >&5
|
||||||
|
+$as_echo_n "checking for pam_start in -lpam... " >&6; }
|
||||||
|
+if test "${ac_cv_lib_pam_pam_start+set}" = set; then
|
||||||
|
+ $as_echo_n "(cached) " >&6
|
||||||
|
+else
|
||||||
|
+ ac_check_lib_save_LIBS=$LIBS
|
||||||
|
+LIBS="-lpam $LIBS"
|
||||||
|
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||||
|
+/* end confdefs.h. */
|
||||||
|
+
|
||||||
|
+/* Override any GCC internal prototype to avoid an error.
|
||||||
|
+ Use char because int might match the return type of a GCC
|
||||||
|
+ builtin and then its argument prototype would still apply. */
|
||||||
|
+#ifdef __cplusplus
|
||||||
|
+extern "C"
|
||||||
|
+#endif
|
||||||
|
+char pam_start ();
|
||||||
|
+int
|
||||||
|
+main ()
|
||||||
|
+{
|
||||||
|
+return pam_start ();
|
||||||
|
+ ;
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+_ACEOF
|
||||||
|
+if ac_fn_c_try_link "$LINENO"; then
|
||||||
|
+ ac_cv_lib_pam_pam_start=yes
|
||||||
|
+else
|
||||||
|
+ ac_cv_lib_pam_pam_start=no
|
||||||
|
+fi
|
||||||
|
+rm -f core conftest.err conftest.$ac_objext \
|
||||||
|
+ conftest$ac_exeext conftest.$ac_ext
|
||||||
|
+LIBS=$ac_check_lib_save_LIBS
|
||||||
|
+fi
|
||||||
|
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pam_pam_start" >&5
|
||||||
|
+$as_echo "$ac_cv_lib_pam_pam_start" >&6; }
|
||||||
|
+if test "x$ac_cv_lib_pam_pam_start" = x""yes; then
|
||||||
|
+ enable_pam=yes
|
||||||
|
+else
|
||||||
|
+ enable_pam=no
|
||||||
|
+fi
|
||||||
|
+
|
||||||
|
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for misc_conv in -lpam_misc" >&5
|
||||||
|
+$as_echo_n "checking for misc_conv in -lpam_misc... " >&6; }
|
||||||
|
+if test "${ac_cv_lib_pam_misc_misc_conv+set}" = set; then
|
||||||
|
+ $as_echo_n "(cached) " >&6
|
||||||
|
+else
|
||||||
|
+ ac_check_lib_save_LIBS=$LIBS
|
||||||
|
+LIBS="-lpam_misc $LIBS"
|
||||||
|
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||||
|
+/* end confdefs.h. */
|
||||||
|
+
|
||||||
|
+/* Override any GCC internal prototype to avoid an error.
|
||||||
|
+ Use char because int might match the return type of a GCC
|
||||||
|
+ builtin and then its argument prototype would still apply. */
|
||||||
|
+#ifdef __cplusplus
|
||||||
|
+extern "C"
|
||||||
|
+#endif
|
||||||
|
+char misc_conv ();
|
||||||
|
+int
|
||||||
|
+main ()
|
||||||
|
+{
|
||||||
|
+return misc_conv ();
|
||||||
|
+ ;
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+_ACEOF
|
||||||
|
+if ac_fn_c_try_link "$LINENO"; then
|
||||||
|
+ ac_cv_lib_pam_misc_misc_conv=yes
|
||||||
|
+else
|
||||||
|
+ ac_cv_lib_pam_misc_misc_conv=no
|
||||||
|
+fi
|
||||||
|
+rm -f core conftest.err conftest.$ac_objext \
|
||||||
|
+ conftest$ac_exeext conftest.$ac_ext
|
||||||
|
+LIBS=$ac_check_lib_save_LIBS
|
||||||
|
+fi
|
||||||
|
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pam_misc_misc_conv" >&5
|
||||||
|
+$as_echo "$ac_cv_lib_pam_misc_misc_conv" >&6; }
|
||||||
|
+if test "x$ac_cv_lib_pam_misc_misc_conv" = x""yes; then
|
||||||
|
+ :
|
||||||
|
+else
|
||||||
|
+ enable_pam=no
|
||||||
|
+fi
|
||||||
|
+
|
||||||
|
+ if test "x$enable_pam" != xno; then
|
||||||
|
+
|
||||||
|
+$as_echo "#define USE_PAM 1" >>confdefs.h
|
||||||
|
+
|
||||||
|
+ PAM_LIBS="-lpam -lpam_misc"
|
||||||
|
+
|
||||||
|
+ fi
|
||||||
|
+fi
|
||||||
|
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable PAM support in su" >&5
|
||||||
|
+$as_echo_n "checking whether to enable PAM support in su... " >&6; }
|
||||||
|
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_pam" >&5
|
||||||
|
+$as_echo "$enable_pam" >&6; }
|
||||||
|
+
|
||||||
|
optional_bin_progs=
|
||||||
|
for ac_func in uname
|
||||||
|
do
|
||||||
--- configure.ac
|
--- configure.ac
|
||||||
+++ configure.ac
|
+++ configure.ac
|
||||||
@@ -46,6 +46,20 @@ coreutils_MACROS
|
@@ -79,6 +79,20 @@ fi
|
||||||
|
|
||||||
AC_FUNC_FORK
|
AC_FUNC_FORK
|
||||||
|
|
||||||
@ -21,11 +175,51 @@ Index: src/Makefile.am
|
|||||||
+AC_MSG_RESULT([$enable_pam])
|
+AC_MSG_RESULT([$enable_pam])
|
||||||
+
|
+
|
||||||
optional_bin_progs=
|
optional_bin_progs=
|
||||||
AC_CHECK_FUNCS(uname,
|
AC_CHECK_FUNCS([uname],
|
||||||
gl_ADD_PROG([optional_bin_progs], [uname]))
|
gl_ADD_PROG([optional_bin_progs], [uname]))
|
||||||
|
--- doc/Makefile.in
|
||||||
|
+++ doc/Makefile.in
|
||||||
|
@@ -713,6 +713,7 @@ PACKAGE_STRING = @PACKAGE_STRING@
|
||||||
|
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||||
|
PACKAGE_URL = @PACKAGE_URL@
|
||||||
|
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||||
|
+PAM_LIBS = @PAM_LIBS@
|
||||||
|
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||||
|
PERL = @PERL@
|
||||||
|
POSIX_SHELL = @POSIX_SHELL@
|
||||||
|
--- gnulib-tests/Makefile.in
|
||||||
|
+++ gnulib-tests/Makefile.in
|
||||||
|
@@ -1421,6 +1421,7 @@ PACKAGE_STRING = @PACKAGE_STRING@
|
||||||
|
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||||
|
PACKAGE_URL = @PACKAGE_URL@
|
||||||
|
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||||
|
+PAM_LIBS = @PAM_LIBS@
|
||||||
|
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||||
|
PERL = @PERL@
|
||||||
|
POSIX_SHELL = @POSIX_SHELL@
|
||||||
|
--- lib/Makefile.in
|
||||||
|
+++ lib/Makefile.in
|
||||||
|
@@ -763,6 +763,7 @@ PACKAGE_STRING = @PACKAGE_STRING@
|
||||||
|
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||||
|
PACKAGE_URL = @PACKAGE_URL@
|
||||||
|
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||||
|
+PAM_LIBS = @PAM_LIBS@
|
||||||
|
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||||
|
PERL = @PERL@
|
||||||
|
POSIX_SHELL = @POSIX_SHELL@
|
||||||
|
--- man/Makefile.in
|
||||||
|
+++ man/Makefile.in
|
||||||
|
@@ -703,6 +703,7 @@ PACKAGE_STRING = @PACKAGE_STRING@
|
||||||
|
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||||
|
PACKAGE_URL = @PACKAGE_URL@
|
||||||
|
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||||
|
+PAM_LIBS = @PAM_LIBS@
|
||||||
|
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||||
|
PERL = @PERL@
|
||||||
|
POSIX_SHELL = @POSIX_SHELL@
|
||||||
--- src/Makefile.am
|
--- src/Makefile.am
|
||||||
+++ src/Makefile.am
|
+++ src/Makefile.am
|
||||||
@@ -124,7 +124,8 @@ tail_LDADD = $(nanosec_libs)
|
@@ -147,7 +147,8 @@ tail_LDADD = $(nanosec_libs)
|
||||||
# If necessary, add -lm to resolve use of pow in lib/strtod.c.
|
# If necessary, add -lm to resolve use of pow in lib/strtod.c.
|
||||||
uptime_LDADD = $(LDADD) $(POW_LIB) $(GETLOADAVG_LIBS)
|
uptime_LDADD = $(LDADD) $(POW_LIB) $(GETLOADAVG_LIBS)
|
||||||
|
|
||||||
@ -33,8 +227,82 @@ Index: src/Makefile.am
|
|||||||
+su_SOURCES = su.c getdef.c
|
+su_SOURCES = su.c getdef.c
|
||||||
+su_LDADD = $(LDADD) $(LIB_CRYPT) $(PAM_LIBS)
|
+su_LDADD = $(LDADD) $(LIB_CRYPT) $(PAM_LIBS)
|
||||||
|
|
||||||
dir_LDADD += $(LIB_ACL_TRIVIAL) $(LIB_ACL)
|
dir_LDADD += $(LIB_ACL)
|
||||||
ls_LDADD += $(LIB_ACL_TRIVIAL) $(LIB_ACL)
|
ls_LDADD += $(LIB_ACL)
|
||||||
|
--- src/Makefile.in
|
||||||
|
+++ src/Makefile.in
|
||||||
|
@@ -605,9 +605,10 @@ stty_OBJECTS = stty.$(OBJEXT)
|
||||||
|
stty_LDADD = $(LDADD)
|
||||||
|
stty_DEPENDENCIES = libver.a ../lib/libcoreutils.a \
|
||||||
|
$(am__DEPENDENCIES_1) ../lib/libcoreutils.a
|
||||||
|
-su_SOURCES = su.c
|
||||||
|
-su_OBJECTS = su.$(OBJEXT)
|
||||||
|
-su_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
|
||||||
|
+am_su_OBJECTS = su.$(OBJEXT) getdef.$(OBJEXT)
|
||||||
|
+su_OBJECTS = $(am_su_OBJECTS)
|
||||||
|
+su_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \
|
||||||
|
+ $(am__DEPENDENCIES_1)
|
||||||
|
sum_SOURCES = sum.c
|
||||||
|
sum_OBJECTS = sum.$(OBJEXT)
|
||||||
|
sum_LDADD = $(LDADD)
|
||||||
|
@@ -735,11 +736,11 @@ SOURCES = $(nodist_libver_a_SOURCES) $(_
|
||||||
|
$(rm_SOURCES) $(rmdir_SOURCES) runcon.c seq.c setuidgid.c \
|
||||||
|
$(sha1sum_SOURCES) $(sha224sum_SOURCES) $(sha256sum_SOURCES) \
|
||||||
|
$(sha384sum_SOURCES) $(sha512sum_SOURCES) shred.c shuf.c \
|
||||||
|
- sleep.c sort.c split.c stat.c stty.c su.c sum.c sync.c tac.c \
|
||||||
|
- tail.c tee.c test.c $(timeout_SOURCES) touch.c tr.c true.c \
|
||||||
|
- truncate.c tsort.c tty.c $(uname_SOURCES) unexpand.c uniq.c \
|
||||||
|
- unlink.c uptime.c users.c $(vdir_SOURCES) wc.c who.c whoami.c \
|
||||||
|
- yes.c
|
||||||
|
+ sleep.c sort.c split.c stat.c stty.c $(su_SOURCES) sum.c \
|
||||||
|
+ sync.c tac.c tail.c tee.c test.c $(timeout_SOURCES) touch.c \
|
||||||
|
+ tr.c true.c truncate.c tsort.c tty.c $(uname_SOURCES) \
|
||||||
|
+ unexpand.c uniq.c unlink.c uptime.c users.c $(vdir_SOURCES) \
|
||||||
|
+ wc.c who.c whoami.c yes.c
|
||||||
|
DIST_SOURCES = $(__SOURCES) $(arch_SOURCES) base64.c basename.c cat.c \
|
||||||
|
chcon.c $(chgrp_SOURCES) chmod.c $(chown_SOURCES) chroot.c \
|
||||||
|
cksum.c comm.c $(cp_SOURCES) csplit.c cut.c date.c dd.c df.c \
|
||||||
|
@@ -754,10 +755,10 @@ DIST_SOURCES = $(__SOURCES) $(arch_SOURC
|
||||||
|
$(rmdir_SOURCES) runcon.c seq.c setuidgid.c $(sha1sum_SOURCES) \
|
||||||
|
$(sha224sum_SOURCES) $(sha256sum_SOURCES) $(sha384sum_SOURCES) \
|
||||||
|
$(sha512sum_SOURCES) shred.c shuf.c sleep.c sort.c split.c \
|
||||||
|
- stat.c stty.c su.c sum.c sync.c tac.c tail.c tee.c test.c \
|
||||||
|
- $(timeout_SOURCES) touch.c tr.c true.c truncate.c tsort.c \
|
||||||
|
- tty.c $(uname_SOURCES) unexpand.c uniq.c unlink.c uptime.c \
|
||||||
|
- users.c $(vdir_SOURCES) wc.c who.c whoami.c yes.c
|
||||||
|
+ stat.c stty.c $(su_SOURCES) sum.c sync.c tac.c tail.c tee.c \
|
||||||
|
+ test.c $(timeout_SOURCES) touch.c tr.c true.c truncate.c \
|
||||||
|
+ tsort.c tty.c $(uname_SOURCES) unexpand.c uniq.c unlink.c \
|
||||||
|
+ uptime.c users.c $(vdir_SOURCES) wc.c who.c whoami.c yes.c
|
||||||
|
HEADERS = $(noinst_HEADERS)
|
||||||
|
ETAGS = etags
|
||||||
|
CTAGS = ctags
|
||||||
|
@@ -1209,6 +1210,7 @@ PACKAGE_STRING = @PACKAGE_STRING@
|
||||||
|
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||||
|
PACKAGE_URL = @PACKAGE_URL@
|
||||||
|
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||||
|
+PAM_LIBS = @PAM_LIBS@
|
||||||
|
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||||
|
PERL = @PERL@
|
||||||
|
POSIX_SHELL = @POSIX_SHELL@
|
||||||
|
@@ -1511,7 +1513,8 @@ tail_LDADD = $(nanosec_libs)
|
||||||
|
|
||||||
|
# If necessary, add -lm to resolve use of pow in lib/strtod.c.
|
||||||
|
uptime_LDADD = $(LDADD) $(POW_LIB) $(GETLOADAVG_LIBS)
|
||||||
|
-su_LDADD = $(LDADD) $(LIB_CRYPT)
|
||||||
|
+su_SOURCES = su.c getdef.c
|
||||||
|
+su_LDADD = $(LDADD) $(LIB_CRYPT) $(PAM_LIBS)
|
||||||
|
stat_LDADD = $(LDADD) $(LIB_SELINUX)
|
||||||
|
|
||||||
|
# programs that use getaddrinfo (e.g., via canon_host)
|
||||||
|
@@ -2040,6 +2043,7 @@ distclean-compile:
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/false.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fmt.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fold.Po@am__quote@
|
||||||
|
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getdef.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getlimits.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ginstall-copy.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ginstall-cp-hash.Po@am__quote@
|
||||||
--- src/getdef.c
|
--- src/getdef.c
|
||||||
+++ src/getdef.c
|
+++ src/getdef.c
|
||||||
@@ -0,0 +1,259 @@
|
@@ -0,0 +1,259 @@
|
||||||
@ -401,25 +669,25 @@ Index: src/Makefile.am
|
|||||||
#define DEFAULT_USER "root"
|
#define DEFAULT_USER "root"
|
||||||
|
|
||||||
+#ifndef USE_PAM
|
+#ifndef USE_PAM
|
||||||
char *crypt ();
|
char *crypt (char const *key, char const *salt);
|
||||||
+#endif
|
+#endif
|
||||||
char *getusershell ();
|
char *getusershell (void);
|
||||||
void endusershell ();
|
void endusershell (void);
|
||||||
void setusershell ();
|
void setusershell (void);
|
||||||
|
|
||||||
extern char **environ;
|
extern char **environ;
|
||||||
|
|
||||||
+#ifdef USE_PAM
|
+#ifdef USE_PAM
|
||||||
+static bool _pam_session_opened;
|
+static bool _pam_session_opened;
|
||||||
+static bool _pam_cred_established;
|
+static bool _pam_cred_established;
|
||||||
+static void export_pamenv(void);
|
+static void export_pamenv (void);
|
||||||
+static void create_watching_parent(void);
|
+static void create_watching_parent (void);
|
||||||
+#endif
|
+#endif
|
||||||
+
|
+
|
||||||
static void run_shell (char const *, char const *, char **, size_t)
|
static void run_shell (char const *, char const *, char **, size_t)
|
||||||
ATTRIBUTE_NORETURN;
|
ATTRIBUTE_NORETURN;
|
||||||
|
|
||||||
@@ -215,7 +238,162 @@ log_su (struct passwd const *pw, bool su
|
@@ -212,7 +235,162 @@ log_su (struct passwd const *pw, bool su
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -582,7 +850,7 @@ Index: src/Makefile.am
|
|||||||
Return true if the user gives the correct password for entry PW,
|
Return true if the user gives the correct password for entry PW,
|
||||||
false if not. Return true without asking for a password if run by UID 0
|
false if not. Return true without asking for a password if run by UID 0
|
||||||
or if PW has an empty password. */
|
or if PW has an empty password. */
|
||||||
@@ -223,10 +402,52 @@ log_su (struct passwd const *pw, bool su
|
@@ -220,10 +398,52 @@ log_su (struct passwd const *pw, bool su
|
||||||
static bool
|
static bool
|
||||||
correct_password (const struct passwd *pw)
|
correct_password (const struct passwd *pw)
|
||||||
{
|
{
|
||||||
@ -636,7 +904,7 @@ Index: src/Makefile.am
|
|||||||
|
|
||||||
endspent ();
|
endspent ();
|
||||||
if (sp)
|
if (sp)
|
||||||
@@ -247,6 +468,7 @@ correct_password (const struct passwd *p
|
@@ -244,6 +464,7 @@ correct_password (const struct passwd *p
|
||||||
encrypted = crypt (unencrypted, correct);
|
encrypted = crypt (unencrypted, correct);
|
||||||
memset (unencrypted, 0, strlen (unencrypted));
|
memset (unencrypted, 0, strlen (unencrypted));
|
||||||
return STREQ (encrypted, correct);
|
return STREQ (encrypted, correct);
|
||||||
@ -644,7 +912,7 @@ Index: src/Makefile.am
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Update `environ' for the new shell based on PW, with SHELL being
|
/* Update `environ' for the new shell based on PW, with SHELL being
|
||||||
@@ -271,8 +493,8 @@ modify_environment (const struct passwd
|
@@ -268,8 +489,8 @@ modify_environment (const struct passwd
|
||||||
xsetenv ("USER", pw->pw_name);
|
xsetenv ("USER", pw->pw_name);
|
||||||
xsetenv ("LOGNAME", pw->pw_name);
|
xsetenv ("LOGNAME", pw->pw_name);
|
||||||
xsetenv ("PATH", (pw->pw_uid
|
xsetenv ("PATH", (pw->pw_uid
|
||||||
@ -655,7 +923,7 @@ Index: src/Makefile.am
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -282,6 +504,12 @@ modify_environment (const struct passwd
|
@@ -279,6 +500,12 @@ modify_environment (const struct passwd
|
||||||
{
|
{
|
||||||
xsetenv ("HOME", pw->pw_dir);
|
xsetenv ("HOME", pw->pw_dir);
|
||||||
xsetenv ("SHELL", shell);
|
xsetenv ("SHELL", shell);
|
||||||
@ -668,7 +936,7 @@ Index: src/Makefile.am
|
|||||||
if (pw->pw_uid)
|
if (pw->pw_uid)
|
||||||
{
|
{
|
||||||
xsetenv ("USER", pw->pw_name);
|
xsetenv ("USER", pw->pw_name);
|
||||||
@@ -289,19 +517,41 @@ modify_environment (const struct passwd
|
@@ -286,19 +513,41 @@ modify_environment (const struct passwd
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -712,7 +980,7 @@ Index: src/Makefile.am
|
|||||||
if (setgid (pw->pw_gid))
|
if (setgid (pw->pw_gid))
|
||||||
error (EXIT_FAILURE, errno, _("cannot set group id"));
|
error (EXIT_FAILURE, errno, _("cannot set group id"));
|
||||||
if (setuid (pw->pw_uid))
|
if (setuid (pw->pw_uid))
|
||||||
@@ -494,6 +744,7 @@ main (int argc, char **argv)
|
@@ -491,6 +740,7 @@ main (int argc, char **argv)
|
||||||
#ifdef SYSLOG_FAILURE
|
#ifdef SYSLOG_FAILURE
|
||||||
log_su (pw, false);
|
log_su (pw, false);
|
||||||
#endif
|
#endif
|
||||||
@ -720,10 +988,11 @@ Index: src/Makefile.am
|
|||||||
error (EXIT_FAILURE, 0, _("incorrect password"));
|
error (EXIT_FAILURE, 0, _("incorrect password"));
|
||||||
}
|
}
|
||||||
#ifdef SYSLOG_SUCCESS
|
#ifdef SYSLOG_SUCCESS
|
||||||
@@ -515,9 +766,21 @@ main (int argc, char **argv)
|
@@ -512,9 +762,21 @@ main (int argc, char **argv)
|
||||||
shell = NULL;
|
shell = NULL;
|
||||||
}
|
}
|
||||||
shell = xstrdup (shell ? shell : pw->pw_shell);
|
shell = xstrdup (shell ? shell : pw->pw_shell);
|
||||||
|
- modify_environment (pw, shell);
|
||||||
+
|
+
|
||||||
+ init_groups (pw);
|
+ init_groups (pw);
|
||||||
+
|
+
|
||||||
@ -731,15 +1000,24 @@ Index: src/Makefile.am
|
|||||||
+ create_watching_parent ();
|
+ create_watching_parent ();
|
||||||
+ /* Now we're in the child. */
|
+ /* Now we're in the child. */
|
||||||
+#endif
|
+#endif
|
||||||
+
|
|
||||||
+ change_identity (pw);
|
change_identity (pw);
|
||||||
+
|
+
|
||||||
+ /* Set environment after pam_open_session, which may put KRB5CCNAME
|
+ /* Set environment after pam_open_session, which may put KRB5CCNAME
|
||||||
+ into the pam_env, etc. */
|
+ into the pam_env, etc. */
|
||||||
+
|
+
|
||||||
modify_environment (pw, shell);
|
+ modify_environment (pw, shell);
|
||||||
|
+
|
||||||
- change_identity (pw);
|
|
||||||
if (simulate_login && chdir (pw->pw_dir) != 0)
|
if (simulate_login && chdir (pw->pw_dir) != 0)
|
||||||
error (0, errno, _("warning: cannot change directory to %s"), pw->pw_dir);
|
error (0, errno, _("warning: cannot change directory to %s"), pw->pw_dir);
|
||||||
|
|
||||||
|
--- tests/Makefile.in
|
||||||
|
+++ tests/Makefile.in
|
||||||
|
@@ -677,6 +677,7 @@ PACKAGE_STRING = @PACKAGE_STRING@
|
||||||
|
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||||
|
PACKAGE_URL = @PACKAGE_URL@
|
||||||
|
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||||
|
+PAM_LIBS = @PAM_LIBS@
|
||||||
|
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||||
|
PERL = @PERL@
|
||||||
|
POSIX_SHELL = @POSIX_SHELL@
|
||||||
|
@ -1,25 +1,183 @@
|
|||||||
Index: lib/Makefile.am
|
--- lib/Makefile.am
|
||||||
===================================================================
|
|
||||||
--- lib/Makefile.am.orig
|
|
||||||
+++ lib/Makefile.am
|
+++ lib/Makefile.am
|
||||||
@@ -20,6 +20,7 @@
|
@@ -18,6 +18,7 @@
|
||||||
include gnulib.mk
|
include gnulib.mk
|
||||||
|
|
||||||
AM_CFLAGS = $(WARNING_CFLAGS) $(WERROR_CFLAGS)
|
AM_CFLAGS = $(WARN_CFLAGS) # $(WERROR_CFLAGS)
|
||||||
+AM_CFLAGS += -fpie
|
+AM_CFLAGS += -fpie
|
||||||
|
|
||||||
noinst_PROGRAMS = t-fpending
|
libcoreutils_a_SOURCES += \
|
||||||
LDADD = $(noinst_LIBRARIES)
|
buffer-lcm.c buffer-lcm.h \
|
||||||
Index: src/Makefile.am
|
--- lib/Makefile.in
|
||||||
===================================================================
|
+++ lib/Makefile.in
|
||||||
--- src/Makefile.am.orig
|
@@ -1169,7 +1169,7 @@ GPERF = gperf
|
||||||
|
LINK_WARNING_H = $(top_srcdir)/build-aux/link-warning.h
|
||||||
|
charset_alias = $(DESTDIR)$(libdir)/charset.alias
|
||||||
|
charset_tmp = $(DESTDIR)$(libdir)/charset.tmp
|
||||||
|
-AM_CFLAGS = $(WARN_CFLAGS) # $(WERROR_CFLAGS)
|
||||||
|
+AM_CFLAGS = $(WARN_CFLAGS) -fpie
|
||||||
|
all: $(BUILT_SOURCES) config.h
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) all-recursive
|
||||||
|
|
||||||
|
--- src/Makefile.am
|
||||||
+++ src/Makefile.am
|
+++ src/Makefile.am
|
||||||
@@ -104,6 +104,8 @@ uptime_LDADD = $(LDADD) $(POW_LIB) $(GET
|
@@ -149,6 +149,10 @@ uptime_LDADD = $(LDADD) $(POW_LIB) $(GET
|
||||||
|
|
||||||
su_SOURCES = su.c getdef.c
|
su_SOURCES = su.c getdef.c
|
||||||
su_LDADD = $(LDADD) $(LIB_CRYPT) $(PAM_LIBS)
|
su_LDADD = $(LDADD) $(LIB_CRYPT) $(PAM_LIBS)
|
||||||
+su_CFLAGS = -fpie
|
+su_CFLAGS = -fpie
|
||||||
+su_LDFLAGS = -pie
|
+su_LDFLAGS = -pie
|
||||||
|
+timeout_CFLAGS = -fpie
|
||||||
|
+timeout_LDFLAGS = -pie
|
||||||
|
|
||||||
dir_LDADD += $(LIB_ACL)
|
dir_LDADD += $(LIB_ACL)
|
||||||
ls_LDADD += $(LIB_ACL)
|
ls_LDADD += $(LIB_ACL)
|
||||||
|
--- src/Makefile.in
|
||||||
|
+++ src/Makefile.in
|
||||||
|
@@ -605,10 +605,12 @@ stty_OBJECTS = stty.$(OBJEXT)
|
||||||
|
stty_LDADD = $(LDADD)
|
||||||
|
stty_DEPENDENCIES = libver.a ../lib/libcoreutils.a \
|
||||||
|
$(am__DEPENDENCIES_1) ../lib/libcoreutils.a
|
||||||
|
-am_su_OBJECTS = su.$(OBJEXT) getdef.$(OBJEXT)
|
||||||
|
+am_su_OBJECTS = su-su.$(OBJEXT) su-getdef.$(OBJEXT)
|
||||||
|
su_OBJECTS = $(am_su_OBJECTS)
|
||||||
|
su_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \
|
||||||
|
$(am__DEPENDENCIES_1)
|
||||||
|
+su_LINK = $(CCLD) $(su_CFLAGS) $(CFLAGS) $(su_LDFLAGS) $(LDFLAGS) -o \
|
||||||
|
+ $@
|
||||||
|
sum_SOURCES = sum.c
|
||||||
|
sum_OBJECTS = sum.$(OBJEXT)
|
||||||
|
sum_LDADD = $(LDADD)
|
||||||
|
@@ -633,9 +635,12 @@ tee_DEPENDENCIES = libver.a ../lib/libco
|
||||||
|
test_SOURCES = test.c
|
||||||
|
test_OBJECTS = test.$(OBJEXT)
|
||||||
|
test_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
|
||||||
|
-am_timeout_OBJECTS = timeout.$(OBJEXT) operand2sig.$(OBJEXT)
|
||||||
|
+am_timeout_OBJECTS = timeout-timeout.$(OBJEXT) \
|
||||||
|
+ timeout-operand2sig.$(OBJEXT)
|
||||||
|
timeout_OBJECTS = $(am_timeout_OBJECTS)
|
||||||
|
timeout_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
|
||||||
|
+timeout_LINK = $(CCLD) $(timeout_CFLAGS) $(CFLAGS) $(timeout_LDFLAGS) \
|
||||||
|
+ $(LDFLAGS) -o $@
|
||||||
|
touch_SOURCES = touch.c
|
||||||
|
touch_OBJECTS = touch.$(OBJEXT)
|
||||||
|
touch_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
|
||||||
|
@@ -1515,6 +1520,10 @@ tail_LDADD = $(nanosec_libs)
|
||||||
|
uptime_LDADD = $(LDADD) $(POW_LIB) $(GETLOADAVG_LIBS)
|
||||||
|
su_SOURCES = su.c getdef.c
|
||||||
|
su_LDADD = $(LDADD) $(LIB_CRYPT) $(PAM_LIBS)
|
||||||
|
+su_CFLAGS = -fpie
|
||||||
|
+su_LDFLAGS = -pie
|
||||||
|
+timeout_CFLAGS = -fpie
|
||||||
|
+timeout_LDFLAGS = -pie
|
||||||
|
stat_LDADD = $(LDADD) $(LIB_SELINUX)
|
||||||
|
|
||||||
|
# programs that use getaddrinfo (e.g., via canon_host)
|
||||||
|
@@ -1933,7 +1942,7 @@ stty$(EXEEXT): $(stty_OBJECTS) $(stty_DE
|
||||||
|
$(LINK) $(stty_OBJECTS) $(stty_LDADD) $(LIBS)
|
||||||
|
su$(EXEEXT): $(su_OBJECTS) $(su_DEPENDENCIES)
|
||||||
|
@rm -f su$(EXEEXT)
|
||||||
|
- $(LINK) $(su_OBJECTS) $(su_LDADD) $(LIBS)
|
||||||
|
+ $(su_LINK) $(su_OBJECTS) $(su_LDADD) $(LIBS)
|
||||||
|
sum$(EXEEXT): $(sum_OBJECTS) $(sum_DEPENDENCIES)
|
||||||
|
@rm -f sum$(EXEEXT)
|
||||||
|
$(LINK) $(sum_OBJECTS) $(sum_LDADD) $(LIBS)
|
||||||
|
@@ -1954,7 +1963,7 @@ test$(EXEEXT): $(test_OBJECTS) $(test_DE
|
||||||
|
$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS)
|
||||||
|
timeout$(EXEEXT): $(timeout_OBJECTS) $(timeout_DEPENDENCIES)
|
||||||
|
@rm -f timeout$(EXEEXT)
|
||||||
|
- $(LINK) $(timeout_OBJECTS) $(timeout_LDADD) $(LIBS)
|
||||||
|
+ $(timeout_LINK) $(timeout_OBJECTS) $(timeout_LDADD) $(LIBS)
|
||||||
|
touch$(EXEEXT): $(touch_OBJECTS) $(touch_DEPENDENCIES)
|
||||||
|
@rm -f touch$(EXEEXT)
|
||||||
|
$(LINK) $(touch_OBJECTS) $(touch_LDADD) $(LIBS)
|
||||||
|
@@ -2043,7 +2052,6 @@ distclean-compile:
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/false.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fmt.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fold.Po@am__quote@
|
||||||
|
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getdef.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getlimits.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ginstall-copy.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ginstall-cp-hash.Po@am__quote@
|
||||||
|
@@ -2104,14 +2112,16 @@ distclean-compile:
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/split.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stat.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stty.Po@am__quote@
|
||||||
|
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/su.Po@am__quote@
|
||||||
|
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/su-getdef.Po@am__quote@
|
||||||
|
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/su-su.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sum.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sync.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tac.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tail.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tee.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@
|
||||||
|
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/timeout.Po@am__quote@
|
||||||
|
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/timeout-operand2sig.Po@am__quote@
|
||||||
|
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/timeout-timeout.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/touch.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tr.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/true.Po@am__quote@
|
||||||
|
@@ -2286,6 +2296,62 @@ sha512sum-md5sum.obj: md5sum.c
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(sha512sum_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sha512sum-md5sum.obj `if test -f 'md5sum.c'; then $(CYGPATH_W) 'md5sum.c'; else $(CYGPATH_W) '$(srcdir)/md5sum.c'; fi`
|
||||||
|
|
||||||
|
+su-su.o: su.c
|
||||||
|
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(su_CFLAGS) $(CFLAGS) -MT su-su.o -MD -MP -MF $(DEPDIR)/su-su.Tpo -c -o su-su.o `test -f 'su.c' || echo '$(srcdir)/'`su.c
|
||||||
|
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/su-su.Tpo $(DEPDIR)/su-su.Po
|
||||||
|
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='su.c' object='su-su.o' libtool=no @AMDEPBACKSLASH@
|
||||||
|
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(su_CFLAGS) $(CFLAGS) -c -o su-su.o `test -f 'su.c' || echo '$(srcdir)/'`su.c
|
||||||
|
+
|
||||||
|
+su-su.obj: su.c
|
||||||
|
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(su_CFLAGS) $(CFLAGS) -MT su-su.obj -MD -MP -MF $(DEPDIR)/su-su.Tpo -c -o su-su.obj `if test -f 'su.c'; then $(CYGPATH_W) 'su.c'; else $(CYGPATH_W) '$(srcdir)/su.c'; fi`
|
||||||
|
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/su-su.Tpo $(DEPDIR)/su-su.Po
|
||||||
|
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='su.c' object='su-su.obj' libtool=no @AMDEPBACKSLASH@
|
||||||
|
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(su_CFLAGS) $(CFLAGS) -c -o su-su.obj `if test -f 'su.c'; then $(CYGPATH_W) 'su.c'; else $(CYGPATH_W) '$(srcdir)/su.c'; fi`
|
||||||
|
+
|
||||||
|
+su-getdef.o: getdef.c
|
||||||
|
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(su_CFLAGS) $(CFLAGS) -MT su-getdef.o -MD -MP -MF $(DEPDIR)/su-getdef.Tpo -c -o su-getdef.o `test -f 'getdef.c' || echo '$(srcdir)/'`getdef.c
|
||||||
|
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/su-getdef.Tpo $(DEPDIR)/su-getdef.Po
|
||||||
|
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='getdef.c' object='su-getdef.o' libtool=no @AMDEPBACKSLASH@
|
||||||
|
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(su_CFLAGS) $(CFLAGS) -c -o su-getdef.o `test -f 'getdef.c' || echo '$(srcdir)/'`getdef.c
|
||||||
|
+
|
||||||
|
+su-getdef.obj: getdef.c
|
||||||
|
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(su_CFLAGS) $(CFLAGS) -MT su-getdef.obj -MD -MP -MF $(DEPDIR)/su-getdef.Tpo -c -o su-getdef.obj `if test -f 'getdef.c'; then $(CYGPATH_W) 'getdef.c'; else $(CYGPATH_W) '$(srcdir)/getdef.c'; fi`
|
||||||
|
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/su-getdef.Tpo $(DEPDIR)/su-getdef.Po
|
||||||
|
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='getdef.c' object='su-getdef.obj' libtool=no @AMDEPBACKSLASH@
|
||||||
|
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(su_CFLAGS) $(CFLAGS) -c -o su-getdef.obj `if test -f 'getdef.c'; then $(CYGPATH_W) 'getdef.c'; else $(CYGPATH_W) '$(srcdir)/getdef.c'; fi`
|
||||||
|
+
|
||||||
|
+timeout-timeout.o: timeout.c
|
||||||
|
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(timeout_CFLAGS) $(CFLAGS) -MT timeout-timeout.o -MD -MP -MF $(DEPDIR)/timeout-timeout.Tpo -c -o timeout-timeout.o `test -f 'timeout.c' || echo '$(srcdir)/'`timeout.c
|
||||||
|
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/timeout-timeout.Tpo $(DEPDIR)/timeout-timeout.Po
|
||||||
|
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='timeout.c' object='timeout-timeout.o' libtool=no @AMDEPBACKSLASH@
|
||||||
|
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(timeout_CFLAGS) $(CFLAGS) -c -o timeout-timeout.o `test -f 'timeout.c' || echo '$(srcdir)/'`timeout.c
|
||||||
|
+
|
||||||
|
+timeout-timeout.obj: timeout.c
|
||||||
|
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(timeout_CFLAGS) $(CFLAGS) -MT timeout-timeout.obj -MD -MP -MF $(DEPDIR)/timeout-timeout.Tpo -c -o timeout-timeout.obj `if test -f 'timeout.c'; then $(CYGPATH_W) 'timeout.c'; else $(CYGPATH_W) '$(srcdir)/timeout.c'; fi`
|
||||||
|
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/timeout-timeout.Tpo $(DEPDIR)/timeout-timeout.Po
|
||||||
|
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='timeout.c' object='timeout-timeout.obj' libtool=no @AMDEPBACKSLASH@
|
||||||
|
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(timeout_CFLAGS) $(CFLAGS) -c -o timeout-timeout.obj `if test -f 'timeout.c'; then $(CYGPATH_W) 'timeout.c'; else $(CYGPATH_W) '$(srcdir)/timeout.c'; fi`
|
||||||
|
+
|
||||||
|
+timeout-operand2sig.o: operand2sig.c
|
||||||
|
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(timeout_CFLAGS) $(CFLAGS) -MT timeout-operand2sig.o -MD -MP -MF $(DEPDIR)/timeout-operand2sig.Tpo -c -o timeout-operand2sig.o `test -f 'operand2sig.c' || echo '$(srcdir)/'`operand2sig.c
|
||||||
|
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/timeout-operand2sig.Tpo $(DEPDIR)/timeout-operand2sig.Po
|
||||||
|
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='operand2sig.c' object='timeout-operand2sig.o' libtool=no @AMDEPBACKSLASH@
|
||||||
|
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(timeout_CFLAGS) $(CFLAGS) -c -o timeout-operand2sig.o `test -f 'operand2sig.c' || echo '$(srcdir)/'`operand2sig.c
|
||||||
|
+
|
||||||
|
+timeout-operand2sig.obj: operand2sig.c
|
||||||
|
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(timeout_CFLAGS) $(CFLAGS) -MT timeout-operand2sig.obj -MD -MP -MF $(DEPDIR)/timeout-operand2sig.Tpo -c -o timeout-operand2sig.obj `if test -f 'operand2sig.c'; then $(CYGPATH_W) 'operand2sig.c'; else $(CYGPATH_W) '$(srcdir)/operand2sig.c'; fi`
|
||||||
|
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/timeout-operand2sig.Tpo $(DEPDIR)/timeout-operand2sig.Po
|
||||||
|
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='operand2sig.c' object='timeout-operand2sig.obj' libtool=no @AMDEPBACKSLASH@
|
||||||
|
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(timeout_CFLAGS) $(CFLAGS) -c -o timeout-operand2sig.obj `if test -f 'operand2sig.c'; then $(CYGPATH_W) 'operand2sig.c'; else $(CYGPATH_W) '$(srcdir)/operand2sig.c'; fi`
|
||||||
|
+
|
||||||
|
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||||
|
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||||
|
unique=`for i in $$list; do \
|
||||||
|
@ -1,6 +1,16 @@
|
|||||||
|
--- configure
|
||||||
|
+++ configure
|
||||||
|
@@ -3029,7 +3029,6 @@ as_fn_append ac_func_list " fchmod"
|
||||||
|
as_fn_append ac_func_list " alarm"
|
||||||
|
as_fn_append ac_header_list " sys/statvfs.h"
|
||||||
|
as_fn_append ac_header_list " sys/select.h"
|
||||||
|
-gl_printf_safe=yes
|
||||||
|
as_fn_append ac_func_list " readlink"
|
||||||
|
as_fn_append ac_header_list " utmp.h"
|
||||||
|
as_fn_append ac_header_list " utmpx.h"
|
||||||
--- doc/coreutils.texi
|
--- doc/coreutils.texi
|
||||||
+++ doc/coreutils.texi
|
+++ doc/coreutils.texi
|
||||||
@@ -67,8 +67,6 @@
|
@@ -66,8 +66,6 @@
|
||||||
* fold: (coreutils)fold invocation. Wrap long input lines.
|
* fold: (coreutils)fold invocation. Wrap long input lines.
|
||||||
* groups: (coreutils)groups invocation. Print group names a user is in.
|
* groups: (coreutils)groups invocation. Print group names a user is in.
|
||||||
* head: (coreutils)head invocation. Output the first part of files.
|
* head: (coreutils)head invocation. Output the first part of files.
|
||||||
@ -9,29 +19,37 @@
|
|||||||
* id: (coreutils)id invocation. Print user identity.
|
* id: (coreutils)id invocation. Print user identity.
|
||||||
* install: (coreutils)install invocation. Copy and change attributes.
|
* install: (coreutils)install invocation. Copy and change attributes.
|
||||||
* join: (coreutils)join invocation. Join lines on a common field.
|
* join: (coreutils)join invocation. Join lines on a common field.
|
||||||
@@ -402,8 +400,6 @@ System context
|
@@ -195,7 +193,7 @@ Free Documentation License''.
|
||||||
|
* File name manipulation:: dirname basename pathchk
|
||||||
|
* Working context:: pwd stty printenv tty
|
||||||
|
* User information:: id logname whoami groups users who
|
||||||
|
-* System context:: date uname hostname hostid uptime
|
||||||
|
+* System context:: date uname uptime
|
||||||
|
* SELinux context:: chcon runcon
|
||||||
|
* Modified command invocation:: chroot env nice nohup su timeout
|
||||||
|
* Process control:: kill
|
||||||
|
@@ -409,8 +407,6 @@ System context
|
||||||
* arch invocation:: Print machine hardware name
|
* arch invocation:: Print machine hardware name
|
||||||
* date invocation:: Print or set system date and time
|
* date invocation:: Print or set system date and time
|
||||||
* uname invocation:: Print system information
|
* uname invocation:: Print system information
|
||||||
-* hostname invocation:: Print or set system name
|
-* hostname invocation:: Print or set system name
|
||||||
-* hostid invocation:: Print numeric host identifier.
|
-* hostid invocation:: Print numeric host identifier
|
||||||
|
* uptime invocation:: Print system uptime and load
|
||||||
|
|
||||||
@command{date}: Print or set system date and time
|
@command{date}: Print or set system date and time
|
||||||
|
@@ -12969,8 +12965,6 @@ information.
|
||||||
@@ -12523,8 +12519,6 @@ information.
|
|
||||||
* arch invocation:: Print machine hardware name.
|
* arch invocation:: Print machine hardware name.
|
||||||
* date invocation:: Print or set system date and time.
|
* date invocation:: Print or set system date and time.
|
||||||
* uname invocation:: Print system information.
|
* uname invocation:: Print system information.
|
||||||
-* hostname invocation:: Print or set system name.
|
-* hostname invocation:: Print or set system name.
|
||||||
-* hostid invocation:: Print numeric host identifier.
|
-* hostid invocation:: Print numeric host identifier.
|
||||||
|
* uptime invocation:: Print system uptime and load
|
||||||
@end menu
|
@end menu
|
||||||
|
|
||||||
|
@@ -13928,54 +13922,6 @@ Print the kernel version.
|
||||||
@@ -13304,55 +13298,6 @@ Print the kernel version.
|
|
||||||
|
|
||||||
@exitstatus
|
@exitstatus
|
||||||
|
|
||||||
-
|
|
||||||
-@node hostname invocation
|
-@node hostname invocation
|
||||||
-@section @command{hostname}: Print or set system name
|
-@section @command{hostname}: Print or set system name
|
||||||
-
|
-
|
||||||
@ -80,12 +98,12 @@
|
|||||||
-
|
-
|
||||||
-@exitstatus
|
-@exitstatus
|
||||||
-
|
-
|
||||||
|
@node uptime invocation
|
||||||
|
@section @command{uptime}: Print system uptime and load
|
||||||
|
|
||||||
@node Modified command invocation
|
|
||||||
@chapter Modified command invocation
|
|
||||||
--- gnulib-tests/test-isnanl.h
|
--- gnulib-tests/test-isnanl.h
|
||||||
+++ gnulib-tests/test-isnanl.h
|
+++ gnulib-tests/test-isnanl.h
|
||||||
@@ -59,7 +59,7 @@ main ()
|
@@ -75,7 +75,7 @@ main ()
|
||||||
/* Quiet NaN. */
|
/* Quiet NaN. */
|
||||||
ASSERT (isnanl (0.0L / 0.0L));
|
ASSERT (isnanl (0.0L / 0.0L));
|
||||||
|
|
||||||
@ -94,7 +112,7 @@
|
|||||||
/* A bit pattern that is different from a Quiet NaN. With a bit of luck,
|
/* A bit pattern that is different from a Quiet NaN. With a bit of luck,
|
||||||
it's a Signalling NaN. */
|
it's a Signalling NaN. */
|
||||||
{
|
{
|
||||||
@@ -101,6 +101,7 @@ main ()
|
@@ -117,6 +117,7 @@ main ()
|
||||||
{ LDBL80_WORDS (0xFFFF, 0x83333333, 0x00000000) };
|
{ LDBL80_WORDS (0xFFFF, 0x83333333, 0x00000000) };
|
||||||
ASSERT (isnanl (x.value));
|
ASSERT (isnanl (x.value));
|
||||||
}
|
}
|
||||||
@ -102,7 +120,7 @@
|
|||||||
/* The isnanl function should recognize Pseudo-NaNs, Pseudo-Infinities,
|
/* The isnanl function should recognize Pseudo-NaNs, Pseudo-Infinities,
|
||||||
Pseudo-Zeroes, Unnormalized Numbers, and Pseudo-Denormals, as defined in
|
Pseudo-Zeroes, Unnormalized Numbers, and Pseudo-Denormals, as defined in
|
||||||
Intel IA-64 Architecture Software Developer's Manual, Volume 1:
|
Intel IA-64 Architecture Software Developer's Manual, Volume 1:
|
||||||
@@ -134,6 +135,7 @@ main ()
|
@@ -150,6 +151,7 @@ main ()
|
||||||
ASSERT (isnanl (x.value));
|
ASSERT (isnanl (x.value));
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -112,7 +130,7 @@
|
|||||||
}
|
}
|
||||||
--- m4/gnulib-comp.m4
|
--- m4/gnulib-comp.m4
|
||||||
+++ m4/gnulib-comp.m4
|
+++ m4/gnulib-comp.m4
|
||||||
@@ -260,7 +260,6 @@ AC_DEFUN([gl_INIT],
|
@@ -287,7 +287,6 @@ AC_DEFUN([gl_INIT],
|
||||||
gl_POSIXVER
|
gl_POSIXVER
|
||||||
gl_FUNC_PRINTF_FREXP
|
gl_FUNC_PRINTF_FREXP
|
||||||
gl_FUNC_PRINTF_FREXPL
|
gl_FUNC_PRINTF_FREXPL
|
||||||
@ -122,7 +140,18 @@
|
|||||||
AM_XGETTEXT_OPTION([--keyword='proper_name_utf8:1,\"This is a proper name. See the gettext manual, section Names.\"'])])
|
AM_XGETTEXT_OPTION([--keyword='proper_name_utf8:1,\"This is a proper name. See the gettext manual, section Names.\"'])])
|
||||||
--- man/Makefile.am
|
--- man/Makefile.am
|
||||||
+++ man/Makefile.am
|
+++ man/Makefile.am
|
||||||
@@ -179,7 +179,7 @@ check-x-vs-1:
|
@@ -184,7 +184,7 @@ check-x-vs-1:
|
||||||
|
PATH=../src$(PATH_SEPARATOR)$$PATH; export PATH; \
|
||||||
|
t=ls-files.$$$$; \
|
||||||
|
(cd $(srcdir) && ls -1 *.x) | sed 's/\.x$$//' | $(ASSORT) > $$t;\
|
||||||
|
- (echo $(dist_man1_MANS) $(NO_INSTALL_PROGS_DEFAULT) \
|
||||||
|
+ (echo $(dist_man1_MANS) $(NO_INSTALL_PROGS_DEFAULT) hostid \
|
||||||
|
| tr -s ' ' '\n' | sed 's/\.1$$//') \
|
||||||
|
| $(ASSORT) -u | diff - $$t || { rm $$t; exit 1; }; \
|
||||||
|
rm $$t
|
||||||
|
--- man/Makefile.in
|
||||||
|
+++ man/Makefile.in
|
||||||
|
@@ -1275,7 +1275,7 @@ check-x-vs-1:
|
||||||
PATH=../src$(PATH_SEPARATOR)$$PATH; export PATH; \
|
PATH=../src$(PATH_SEPARATOR)$$PATH; export PATH; \
|
||||||
t=ls-files.$$$$; \
|
t=ls-files.$$$$; \
|
||||||
(cd $(srcdir) && ls -1 *.x) | sed 's/\.x$$//' | $(ASSORT) > $$t;\
|
(cd $(srcdir) && ls -1 *.x) | sed 's/\.x$$//' | $(ASSORT) > $$t;\
|
||||||
@ -133,7 +162,7 @@
|
|||||||
rm $$t
|
rm $$t
|
||||||
--- src/system.h
|
--- src/system.h
|
||||||
+++ src/system.h
|
+++ src/system.h
|
||||||
@@ -168,7 +168,7 @@ enum
|
@@ -156,7 +156,7 @@ enum
|
||||||
# define DEV_BSIZE BBSIZE
|
# define DEV_BSIZE BBSIZE
|
||||||
#endif
|
#endif
|
||||||
#ifndef DEV_BSIZE
|
#ifndef DEV_BSIZE
|
||||||
@ -144,7 +173,7 @@
|
|||||||
/* Extract or fake data from a `struct stat'.
|
/* Extract or fake data from a `struct stat'.
|
||||||
--- tests/misc/help-version
|
--- tests/misc/help-version
|
||||||
+++ tests/misc/help-version
|
+++ tests/misc/help-version
|
||||||
@@ -178,6 +178,7 @@ lbracket_args=": ]"
|
@@ -182,6 +182,7 @@ lbracket_args=": ]"
|
||||||
for i in $built_programs; do
|
for i in $built_programs; do
|
||||||
# Skip these.
|
# Skip these.
|
||||||
case $i in chroot|stty|tty|false|chcon|runcon) continue;; esac
|
case $i in chroot|stty|tty|false|chcon|runcon) continue;; esac
|
3
coreutils-7.1.tar.xz
Normal file
3
coreutils-7.1.tar.xz
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:a584c6ce92f390c684dac00032e5c790ecc15cb0fa3e61891ac62401832ae108
|
||||||
|
size 3967824
|
@ -1,44 +0,0 @@
|
|||||||
2005-10-20 Andreas Gruenbacher <agruen@suse.de>
|
|
||||||
|
|
||||||
* Add support for access control lists and extended attributes
|
|
||||||
(see below).
|
|
||||||
|
|
||||||
* lib/acl.h: Remove HAVE_ACL symbol; <sys/acl.h> is needed for POSIX
|
|
||||||
ACLs even if there is no acl system call.
|
|
||||||
|
|
||||||
* lib/acl.c (file_has_acl, copy_acl, set_acl): Add Linux/POSIX ACL
|
|
||||||
implementation.
|
|
||||||
|
|
||||||
* src/copy.c (get_dest_mode): Remove, no longer correct with acls.
|
|
||||||
|
|
||||||
* src/copy.c (copy_internal): Check effective permissions after
|
|
||||||
mkdir(). Add S_IRWXU only after saving the default permissions,
|
|
||||||
so that the default permissions can be restored. This is needed
|
|
||||||
with POSIX 1003.1e draft 17 acls. Add dst_mode and dst_mode_valid,
|
|
||||||
which are set when the destination file mode is changed
|
|
||||||
temporarily. Remove obsolete ran_chown.
|
|
||||||
|
|
||||||
* src/copy.c (copy_internal): Use copy_acl and set_acl instead of
|
|
||||||
chmod.
|
|
||||||
|
|
||||||
* src/copy.c: Add --attributes option for controlling which extended
|
|
||||||
attributes to copy.
|
|
||||||
|
|
||||||
* src/cp.c (make_path_private): Remove the mode parameter. Pass in
|
|
||||||
cp_options, instead of cp_options->xstat only. Stat the source dir,
|
|
||||||
and create the destination dir with the source dir's mode as create
|
|
||||||
mode (see analog change to src/copy.c (copy_internal)). Check if the
|
|
||||||
effective permissions include S_IRWXU. Remember the original mode
|
|
||||||
only if needed later.
|
|
||||||
|
|
||||||
* src/cp.c, src/install.c, src/mv.c, src/copy.h: Remove umask_kill,
|
|
||||||
and never change the startup umask. The functions creating files
|
|
||||||
need the original umask to create the correct permissions inside
|
|
||||||
directories with default ACLs.
|
|
||||||
|
|
||||||
* src/cp.c (struct dir_attr, re_protect, make_path_private): Replace
|
|
||||||
is_new_dir by mode and mode_valid variables.
|
|
||||||
|
|
||||||
* src/ls.c: change `HAVE_ACL' to `USE_ACL' for POSIX ACLs: POSIX ACLs
|
|
||||||
have no acl syscall.
|
|
||||||
|
|
@ -1,38 +1,35 @@
|
|||||||
--- src/fs.h
|
--- src/fs.h
|
||||||
+++ src/fs.h 2008-11-19 12:28:00.977049694 +0100
|
+++ src/fs.h
|
||||||
@@ -34,6 +34,7 @@
|
@@ -5,10 +5,12 @@
|
||||||
# define S_MAGIC_MINIX_V2_30 0x2478
|
#if defined __linux__
|
||||||
# define S_MAGIC_MSDOS 0x4D44
|
# define S_MAGIC_ADFS 0xADF5
|
||||||
# define S_MAGIC_NCP 0x564C
|
# define S_MAGIC_AFFS 0xADFF
|
||||||
+# define S_MAGIC_AFS 0x6B414653
|
+# define S_MAGIC_AFS 0x6B414653
|
||||||
# define S_MAGIC_NFS 0x6969
|
# define S_MAGIC_AUTOFS 0x187
|
||||||
# define S_MAGIC_NFSD 0x6E667364
|
# define S_MAGIC_BEFS 0x42465331
|
||||||
# define S_MAGIC_NTFS 0x5346544E
|
# define S_MAGIC_BFS 0x1BADFACE
|
||||||
@@ -44,6 +45,7 @@
|
# define S_MAGIC_BINFMT_MISC 0x42494e4d
|
||||||
# define S_MAGIC_REISERFS 0x52654973
|
|
||||||
# define S_MAGIC_ROMFS 0x7275
|
|
||||||
# define S_MAGIC_SMB 0x517B
|
|
||||||
+# define S_MAGIC_CIFS 0xFF534D42
|
+# define S_MAGIC_CIFS 0xFF534D42
|
||||||
# define S_MAGIC_SQUASHFS 0x73717368
|
# define S_MAGIC_CODA 0x73757245
|
||||||
# define S_MAGIC_SYSFS 0x62656572
|
# define S_MAGIC_COH 0x012FF7B7
|
||||||
# define S_MAGIC_SYSV2 0x012FF7B6
|
# define S_MAGIC_CRAMFS 0x28CD3D45
|
||||||
--- src/stat.c
|
--- src/stat.c
|
||||||
+++ src/stat.c 2008-11-19 12:28:26.235780004 +0100
|
+++ src/stat.c
|
||||||
@@ -283,6 +283,8 @@ human_fstype (STRUCT_STATVFS const *stat
|
@@ -219,6 +219,8 @@ human_fstype (STRUCT_STATVFS const *stat
|
||||||
return "msdos";
|
return "adfs";
|
||||||
case S_MAGIC_NCP: /* 0x564C */
|
case S_MAGIC_AFFS: /* 0xADFF */
|
||||||
return "novell";
|
return "affs";
|
||||||
+ case S_MAGIC_AFS: /* 0x6B414653 */
|
+ case S_MAGIC_AFS: /* 0x6B414653 */
|
||||||
+ return "afs";
|
+ return "afs";
|
||||||
case S_MAGIC_NFS: /* 0x6969 */
|
case S_MAGIC_AUTOFS: /* 0x187 */
|
||||||
return "nfs";
|
return "autofs";
|
||||||
case S_MAGIC_NFSD: /* 0x6E667364 */
|
case S_MAGIC_BEFS: /* 0x42465331 */
|
||||||
@@ -303,6 +305,8 @@ human_fstype (STRUCT_STATVFS const *stat
|
@@ -227,6 +229,8 @@ human_fstype (STRUCT_STATVFS const *stat
|
||||||
return "romfs";
|
return "bfs";
|
||||||
case S_MAGIC_SMB: /* 0x517B */
|
case S_MAGIC_BINFMT_MISC: /* 0x42494e4d */
|
||||||
return "smb";
|
return "binfmt_misc";
|
||||||
+ case S_MAGIC_CIFS: /* 0xFF534D42 */
|
+ case S_MAGIC_CIFS: /* 0xFF534D42 */
|
||||||
+ return "cifs";
|
+ return "cifs";
|
||||||
case S_MAGIC_SQUASHFS: /* 0x73717368 */
|
case S_MAGIC_CODA: /* 0x73757245 */
|
||||||
return "squashfs";
|
return "coda";
|
||||||
case S_MAGIC_SYSFS: /* 0x62656572 */
|
case S_MAGIC_COH: /* 0x012FF7B7 */
|
||||||
|
@ -1,15 +1,16 @@
|
|||||||
Index: coreutils-6.9.90/gnulib-tests/test-getaddrinfo.c
|
Index: coreutils-6.9.90/gnulib-tests/test-getaddrinfo.c
|
||||||
===================================================================
|
================================================================================
|
||||||
--- coreutils-6.9.90.orig/gnulib-tests/test-getaddrinfo.c 2007-11-17 07:59:42.000000000 +0100
|
--- coreutils-7.1/gnulib-tests/test-getaddrinfo.c
|
||||||
+++ coreutils-6.9.90/gnulib-tests/test-getaddrinfo.c 2007-12-12 11:25:49.000000000 +0100
|
+++ coreutils-7.1/gnulib-tests/test-getaddrinfo.c
|
||||||
@@ -61,6 +61,10 @@ int simple (char *host, char *service)
|
@@ -71,10 +71,7 @@ int simple (char *host, char *service)
|
||||||
if (res == EAI_SERVICE)
|
the test merely because someone is down the country on their
|
||||||
return 0;
|
in-law's farm. */
|
||||||
|
if (res == EAI_AGAIN)
|
||||||
+ /* Do not fail this test for temporary name resolution errors. */
|
- {
|
||||||
+ if (res == EAI_AGAIN)
|
- fprintf (stderr, "skipping getaddrinfo test: no network?\n");
|
||||||
|
- return 77;
|
||||||
|
- }
|
||||||
+ return 0;
|
+ return 0;
|
||||||
+
|
/* IRIX reports EAI_NONAME for "https". Don't fail the test
|
||||||
return 1;
|
merely because of this. */
|
||||||
}
|
if (res == EAI_NONAME)
|
||||||
|
|
||||||
|
@ -1,308 +0,0 @@
|
|||||||
Index: coreutils-6.2/configure.ac
|
|
||||||
================================================================================
|
|
||||||
--- coreutils-6.9.89.48-96961/configure.ac
|
|
||||||
+++ coreutils-6.9.89.48-96961/configure.ac
|
|
||||||
@@ -325,6 +325,9 @@ CONFIG_STATUS_DEPENDENCIES='$(top_srcdir
|
|
||||||
AC_SUBST([CONFIG_STATUS_DEPENDENCIES])
|
|
||||||
############################################################################
|
|
||||||
|
|
||||||
+# Extended attribute copying.
|
|
||||||
+AC_FUNC_XATTR
|
|
||||||
+
|
|
||||||
AM_GNU_GETTEXT([external], [need-formatstring-macros])
|
|
||||||
AM_GNU_GETTEXT_VERSION([0.15])
|
|
||||||
|
|
||||||
--- coreutils-6.9.89.48-96961/doc/coreutils.texi
|
|
||||||
+++ coreutils-6.9.89.48-96961/doc/coreutils.texi
|
|
||||||
@@ -7087,6 +7087,8 @@ Preserve in the destination files
|
|
||||||
any links between corresponding source files.
|
|
||||||
@c Give examples illustrating how hard links are preserved.
|
|
||||||
@c Also, show how soft links map to hard links with -L and -H.
|
|
||||||
+@itemx xattrs
|
|
||||||
+Preserve extended attributes. (See /etc/xattr.conf.)
|
|
||||||
@itemx all
|
|
||||||
Preserve all file attributes.
|
|
||||||
Equivalent to specifying all of the above.
|
|
||||||
--- coreutils-6.9.89.48-96961/m4/xattr.m4
|
|
||||||
+++ coreutils-6.9.89.48-96961/m4/xattr.m4
|
|
||||||
@@ -0,0 +1,38 @@
|
|
||||||
+# xattr.m4 - check for Extended Attributes (Linux)
|
|
||||||
+
|
|
||||||
+# Copyright (C) 2003 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 2, 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, write to the Free Software Foundation,
|
|
||||||
+# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
|
||||||
+
|
|
||||||
+# Written by Andreas Gruenbacher.
|
|
||||||
+
|
|
||||||
+AC_DEFUN([AC_FUNC_XATTR],
|
|
||||||
+[
|
|
||||||
+ AC_CHECK_HEADERS(attr/error_context.h attr/libattr.h)
|
|
||||||
+ if test "$ac_cv_header_attr_libattr_h" = yes \
|
|
||||||
+ && test "$ac_cv_header_attr_error_context_h" = yes; then
|
|
||||||
+ use_xattr=1
|
|
||||||
+ else
|
|
||||||
+ use_xattr=0
|
|
||||||
+ fi
|
|
||||||
+ AC_DEFINE_UNQUOTED(USE_XATTR, $use_xattr,
|
|
||||||
+ [Define if you want extended attribute support.])
|
|
||||||
+ xattr_saved_LIBS=$LIBS
|
|
||||||
+ AC_SEARCH_LIBS(attr_copy_file, attr,
|
|
||||||
+ [test "$ac_cv_search_attr_copy_file" = "none required" || LIB_XATTR=$ac_cv_search_attr_copy_file])
|
|
||||||
+ AC_SUBST(LIB_XATTR)
|
|
||||||
+ AC_CHECK_FUNCS(attr_copy_file)
|
|
||||||
+ LIBS=$xattr_saved_LIBS
|
|
||||||
+])
|
|
||||||
--- coreutils-6.9.89.48-96961/src/Makefile.am
|
|
||||||
+++ coreutils-6.9.89.48-96961/src/Makefile.am
|
|
||||||
@@ -135,6 +135,10 @@ ginstall_LDADD += $(LIB_ACL)
|
|
||||||
|
|
||||||
stat_LDADD = $(LDADD) $(LIB_SELINUX)
|
|
||||||
|
|
||||||
+cp_LDADD += $(LIB_XATTR)
|
|
||||||
+mv_LDADD += $(LIB_XATTR)
|
|
||||||
+ginstall_LDADD += $(LIB_XATTR)
|
|
||||||
+
|
|
||||||
$(PROGRAMS): ../lib/libcoreutils.a
|
|
||||||
|
|
||||||
# Get the release year from ../lib/version-etc.c.
|
|
||||||
--- coreutils-6.9.89.48-96961/src/copy.c
|
|
||||||
+++ coreutils-6.9.89.48-96961/src/copy.c
|
|
||||||
@@ -56,6 +56,12 @@
|
|
||||||
#include "areadlink.h"
|
|
||||||
#include "yesno.h"
|
|
||||||
|
|
||||||
+#if USE_XATTR
|
|
||||||
+# include <stdarg.h>
|
|
||||||
+# include <attr/error_context.h>
|
|
||||||
+# include <attr/libattr.h>
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
#ifndef HAVE_FCHOWN
|
|
||||||
# define HAVE_FCHOWN false
|
|
||||||
# define fchown(fd, uid, gid) (-1)
|
|
||||||
@@ -113,6 +119,98 @@ is_ancestor (const struct stat *sb, cons
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
+#if USE_XATTR
|
|
||||||
+static void
|
|
||||||
+copy_xattr_error (struct error_context *ctx, const char *fmt, ...)
|
|
||||||
+{
|
|
||||||
+ int err = errno;
|
|
||||||
+ va_list ap;
|
|
||||||
+ int len;
|
|
||||||
+ char *buffer;
|
|
||||||
+
|
|
||||||
+ /* There is no error function that takes a va_list argument,
|
|
||||||
+ so we print the message in a buffer first. */
|
|
||||||
+
|
|
||||||
+ va_start (ap, fmt);
|
|
||||||
+ len = vsnprintf (NULL, 0, fmt, ap);
|
|
||||||
+ va_end (ap);
|
|
||||||
+ if (len > 0)
|
|
||||||
+ {
|
|
||||||
+ buffer = xmalloc (len + 1);
|
|
||||||
+ va_start (ap, fmt);
|
|
||||||
+ vsnprintf (buffer, len + 1, fmt, ap);
|
|
||||||
+ va_end (ap);
|
|
||||||
+ error (0, err, "%s", buffer);
|
|
||||||
+ free (buffer);
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static const char *
|
|
||||||
+copy_xattr_quote (struct error_context *ctx, const char *str)
|
|
||||||
+{
|
|
||||||
+ return xstrdup (quote (str));
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static void
|
|
||||||
+copy_xattr_free (struct error_context *ctx, const char *str)
|
|
||||||
+{
|
|
||||||
+ free ((void *) str);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+struct copy_xattr_context {
|
|
||||||
+ struct error_context ctx;
|
|
||||||
+ struct cp_options *x;
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+static int
|
|
||||||
+copy_xattr_filter (const char *name, struct error_context *ctx)
|
|
||||||
+{
|
|
||||||
+ struct copy_xattr_context *copy_ctx = (struct copy_xattr_context *) ctx;
|
|
||||||
+ int action;
|
|
||||||
+
|
|
||||||
+ /* We handle POSIX ACLs separately. */
|
|
||||||
+ if (!strcmp(name, "system.posix_acl_access")
|
|
||||||
+ || !strcmp(name, "system.posix_acl_default"))
|
|
||||||
+ return 0;
|
|
||||||
+
|
|
||||||
+ action = attr_copy_action(name, ctx);
|
|
||||||
+ return (action != ATTR_ACTION_SKIP &&
|
|
||||||
+ (!copy_ctx->x->preserve_mode
|
|
||||||
+ || action != ATTR_ACTION_PERMISSIONS));
|
|
||||||
+}
|
|
||||||
+#endif /* USE_XATTR */
|
|
||||||
+
|
|
||||||
+static bool
|
|
||||||
+copy_xattrs (const char *src_path, int source_desc, const char *dst_path,
|
|
||||||
+ int dest_desc, const struct cp_options *x)
|
|
||||||
+{
|
|
||||||
+ struct copy_xattr_context copy_xattr_ctx = {
|
|
||||||
+ { copy_xattr_error,
|
|
||||||
+ copy_xattr_quote,
|
|
||||||
+ copy_xattr_free },
|
|
||||||
+ x
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+#if USE_XATTR
|
|
||||||
+ if (x->preserve_xattrs)
|
|
||||||
+ {
|
|
||||||
+ int ret;
|
|
||||||
+
|
|
||||||
+ if (source_desc != -1 && dest_desc != -1)
|
|
||||||
+ ret = attr_copy_fd(src_path, source_desc, dst_path, dest_desc,
|
|
||||||
+ copy_xattr_filter, ©_xattr_ctx.ctx);
|
|
||||||
+ else
|
|
||||||
+ ret = attr_copy_file (src_path, dst_path,
|
|
||||||
+ copy_xattr_filter, ©_xattr_ctx.ctx);
|
|
||||||
+ return ret == 0 || !x->require_preserve;
|
|
||||||
+ }
|
|
||||||
+ else
|
|
||||||
+ return true;
|
|
||||||
+#else /* USE_XATTR */
|
|
||||||
+ return true;
|
|
||||||
+#endif /* USE_XATTR */
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
/* Read the contents of the directory SRC_NAME_IN, and recursively
|
|
||||||
copy the contents to DST_NAME_IN. NEW_DST is true if
|
|
||||||
DST_NAME_IN is a directory that was created previously in the
|
|
||||||
@@ -640,6 +738,9 @@ copy_reg (char const *src_name, char con
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
+ if (!copy_xattrs (src_name, source_desc, dst_name, dest_desc, x))
|
|
||||||
+ return_val = false;
|
|
||||||
+
|
|
||||||
set_author (dst_name, dest_desc, src_sb);
|
|
||||||
|
|
||||||
if (x->preserve_mode || x->move_mode)
|
|
||||||
@@ -1939,6 +2040,9 @@ copy_internal (char const *src_name, cha
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
+ if (!copy_xattrs (src_name, -1, dst_name, -1, x))
|
|
||||||
+ delayed_ok = false;
|
|
||||||
+
|
|
||||||
set_author (dst_name, -1, &src_sb);
|
|
||||||
|
|
||||||
if (x->preserve_mode || x->move_mode)
|
|
||||||
--- coreutils-6.9.89.48-96961/src/copy.h
|
|
||||||
+++ coreutils-6.9.89.48-96961/src/copy.h
|
|
||||||
@@ -134,6 +134,9 @@ struct cp_options
|
|
||||||
bool preserve_mode;
|
|
||||||
bool preserve_timestamps;
|
|
||||||
|
|
||||||
+ /* If true, attempt to copy extended attributes. */
|
|
||||||
+ bool preserve_xattrs;
|
|
||||||
+
|
|
||||||
/* Enabled for mv, and for cp by the --preserve=links option.
|
|
||||||
If true, attempt to preserve in the destination files any
|
|
||||||
logical hard links between the source files. If used with cp's
|
|
||||||
--- coreutils-6.9.89.48-96961/src/cp.c
|
|
||||||
+++ coreutils-6.9.89.48-96961/src/cp.c
|
|
||||||
@@ -197,7 +197,8 @@ Mandatory arguments to long options are
|
|
||||||
-p same as --preserve=mode,ownership,timestamps\n\
|
|
||||||
--preserve[=ATTR_LIST] preserve the specified attributes (default:\n\
|
|
||||||
mode,ownership,timestamps), if possible\n\
|
|
||||||
- additional attributes: context, links, all\n\
|
|
||||||
+ additional attributes: context, links,\n\
|
|
||||||
+ xattrs, all\n\
|
|
||||||
"), stdout);
|
|
||||||
fputs (_("\
|
|
||||||
--no-preserve=ATTR_LIST don't preserve the specified attributes\n\
|
|
||||||
@@ -751,6 +752,7 @@ cp_option_init (struct cp_options *x)
|
|
||||||
x->preserve_links = false;
|
|
||||||
x->preserve_mode = false;
|
|
||||||
x->preserve_timestamps = false;
|
|
||||||
+ x->preserve_xattrs = false;
|
|
||||||
x->preserve_security_context = false;
|
|
||||||
x->require_preserve_context = false;
|
|
||||||
|
|
||||||
@@ -788,19 +790,21 @@ decode_preserve_arg (char const *arg, st
|
|
||||||
PRESERVE_TIMESTAMPS,
|
|
||||||
PRESERVE_OWNERSHIP,
|
|
||||||
PRESERVE_LINK,
|
|
||||||
+ PRESERVE_XATTRS,
|
|
||||||
PRESERVE_CONTEXT,
|
|
||||||
PRESERVE_ALL
|
|
||||||
};
|
|
||||||
static enum File_attribute const preserve_vals[] =
|
|
||||||
{
|
|
||||||
PRESERVE_MODE, PRESERVE_TIMESTAMPS,
|
|
||||||
- PRESERVE_OWNERSHIP, PRESERVE_LINK, PRESERVE_CONTEXT, PRESERVE_ALL
|
|
||||||
+ PRESERVE_OWNERSHIP, PRESERVE_LINK, PRESERVE_XATTRS, PRESERVE_CONTEXT,
|
|
||||||
+ PRESERVE_ALL
|
|
||||||
};
|
|
||||||
/* Valid arguments to the `--preserve' option. */
|
|
||||||
static char const* const preserve_args[] =
|
|
||||||
{
|
|
||||||
"mode", "timestamps",
|
|
||||||
- "ownership", "links", "context", "all", NULL
|
|
||||||
+ "ownership", "links", "xattrs", "context", "all", NULL
|
|
||||||
};
|
|
||||||
ARGMATCH_VERIFY (preserve_args, preserve_vals);
|
|
||||||
|
|
||||||
@@ -836,6 +840,10 @@ decode_preserve_arg (char const *arg, st
|
|
||||||
x->preserve_links = on_off;
|
|
||||||
break;
|
|
||||||
|
|
||||||
+ case PRESERVE_XATTRS:
|
|
||||||
+ x->preserve_xattrs = on_off;
|
|
||||||
+ break;
|
|
||||||
+
|
|
||||||
case PRESERVE_CONTEXT:
|
|
||||||
x->preserve_security_context = on_off;
|
|
||||||
x->require_preserve_context = on_off;
|
|
||||||
@@ -846,6 +854,7 @@ decode_preserve_arg (char const *arg, st
|
|
||||||
x->preserve_timestamps = on_off;
|
|
||||||
x->preserve_ownership = on_off;
|
|
||||||
x->preserve_links = on_off;
|
|
||||||
+ x->preserve_xattrs = on_off;
|
|
||||||
if (selinux_enabled)
|
|
||||||
x->preserve_security_context = on_off;
|
|
||||||
break;
|
|
||||||
--- coreutils-6.9.89.48-96961/src/install.c
|
|
||||||
+++ coreutils-6.9.89.48-96961/src/install.c
|
|
||||||
@@ -176,6 +176,7 @@ cp_option_init (struct cp_options *x)
|
|
||||||
x->preserve_links = false;
|
|
||||||
x->preserve_mode = false;
|
|
||||||
x->preserve_timestamps = false;
|
|
||||||
+ x->preserve_xattrs = false;
|
|
||||||
x->require_preserve = false;
|
|
||||||
x->require_preserve_context = false;
|
|
||||||
x->recursive = false;
|
|
||||||
--- coreutils-6.9.89.48-96961/src/mv.c
|
|
||||||
+++ coreutils-6.9.89.48-96961/src/mv.c
|
|
||||||
@@ -136,6 +136,7 @@ cp_option_init (struct cp_options *x)
|
|
||||||
x->preserve_links = true;
|
|
||||||
x->preserve_mode = true;
|
|
||||||
x->preserve_timestamps = true;
|
|
||||||
+ x->preserve_xattrs = true;
|
|
||||||
x->preserve_security_context = selinux_enabled;
|
|
||||||
x->require_preserve = false; /* FIXME: maybe make this an option */
|
|
||||||
x->require_preserve_context = false;
|
|
@ -1,3 +1,53 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Sun Feb 22 10:49:52 CET 2009 - schwab@suse.de
|
||||||
|
|
||||||
|
- Update to coreutils 7.1.
|
||||||
|
** New features
|
||||||
|
Add extended attribute support available on certain filesystems like ext2
|
||||||
|
and XFS.
|
||||||
|
cp: Tries to copy xattrs when --preserve=xattr or --preserve=all specified
|
||||||
|
mv: Always tries to copy xattrs
|
||||||
|
install: Never copies xattrs
|
||||||
|
cp and mv accept a new option, --no-clobber (-n): silently refrain
|
||||||
|
from overwriting any existing destination file
|
||||||
|
dd accepts iflag=cio and oflag=cio to open the file in CIO (concurrent I/O)
|
||||||
|
mode where this feature is available.
|
||||||
|
install accepts a new option, --compare (-C): compare each pair of source
|
||||||
|
and destination files, and if the destination has identical content and
|
||||||
|
any specified owner, group, permissions, and possibly SELinux context, then
|
||||||
|
do not modify the destination at all.
|
||||||
|
ls --color now highlights hard linked files, too
|
||||||
|
stat -f recognizes the Lustre file system type
|
||||||
|
** Bug fixes
|
||||||
|
chgrp, chmod, chown --silent (--quiet, -f) no longer print some diagnostics
|
||||||
|
[bug introduced in coreutils-5.1]
|
||||||
|
cp uses much less memory in some situations
|
||||||
|
cp -a now correctly tries to preserve SELinux context (announced in 6.9.90),
|
||||||
|
doesn't inform about failure, unlike with --preserve=all
|
||||||
|
du --files0-from=FILE no longer reads all of FILE into RAM before
|
||||||
|
processing the first file name
|
||||||
|
seq 9223372036854775807 9223372036854775808 now prints only two numbers
|
||||||
|
on systems with extended long double support and good library support.
|
||||||
|
Even with this patch, on some systems, it still produces invalid output,
|
||||||
|
from 3 to at least 1026 lines long. [bug introduced in coreutils-6.11]
|
||||||
|
seq -w now accounts for a decimal point added to the last number
|
||||||
|
to correctly print all numbers to the same width.
|
||||||
|
wc --files0-from=FILE no longer reads all of FILE into RAM, before
|
||||||
|
processing the first file name, unless the list of names is known
|
||||||
|
to be small enough.
|
||||||
|
** Changes in behavior
|
||||||
|
cp and mv: the --reply={yes,no,query} option has been removed.
|
||||||
|
Using it has elicited a warning for the last three years.
|
||||||
|
dd: user specified offsets that are too big are handled better.
|
||||||
|
Previously, erroneous parameters to skip and seek could result
|
||||||
|
in redundant reading of the file with no warnings or errors.
|
||||||
|
du: -H (initially equivalent to --si) is now equivalent to
|
||||||
|
--dereference-args, and thus works as POSIX requires
|
||||||
|
shred: now does 3 overwrite passes by default rather than 25.
|
||||||
|
ls -l now marks SELinux-only files with the less obtrusive '.',
|
||||||
|
rather than '+'. A file with any other combination of MAC and ACL
|
||||||
|
is still marked with a '+'.
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Wed Nov 19 12:42:10 CET 2008 - werner@suse.de
|
Wed Nov 19 12:42:10 CET 2008 - werner@suse.de
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#
|
#
|
||||||
# spec file for package coreutils (Version 6.12)
|
# spec file for package coreutils (Version 7.1)
|
||||||
#
|
#
|
||||||
# Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
||||||
#
|
#
|
||||||
# All modifications and additions to the file contributed by third parties
|
# All modifications and additions to the file contributed by third parties
|
||||||
# remain the property of their copyright owners, unless otherwise agreed
|
# remain the property of their copyright owners, unless otherwise agreed
|
||||||
@ -19,24 +19,22 @@
|
|||||||
|
|
||||||
Name: coreutils
|
Name: coreutils
|
||||||
Summary: GNU Core Utilities
|
Summary: GNU Core Utilities
|
||||||
BuildRequires: help2man libacl-devel libselinux-devel pam-devel
|
BuildRequires: help2man libacl-devel libcap-devel libselinux-devel pam-devel xz
|
||||||
Url: http://www.gnu.org/software/coreutils/
|
Url: http://www.gnu.org/software/coreutils/
|
||||||
License: GNU Free Documentation License, Version 1.2 (GFDL 1.2); GPL v2 or later; GPL v3 or later
|
License: GNU Free Documentation License, Version 1.2 (GFDL 1.2); GPL v2 or later; GPL v3 or later
|
||||||
Group: System/Base
|
Group: System/Base
|
||||||
Version: 6.12
|
Version: 7.1
|
||||||
Release: 32
|
Release: 1
|
||||||
Provides: fileutils sh-utils stat textutils mktemp
|
Provides: fileutils sh-utils stat textutils mktemp
|
||||||
Obsoletes: fileutils sh-utils stat textutils mktemp
|
Obsoletes: fileutils sh-utils stat textutils mktemp
|
||||||
Obsoletes: libselinux <= 1.23.11-3 libselinux-32bit = 9 libselinux-64bit = 9 libselinux-x86 = 9
|
Obsoletes: libselinux <= 1.23.11-3 libselinux-32bit = 9 libselinux-64bit = 9 libselinux-x86 = 9
|
||||||
AutoReqProv: on
|
AutoReqProv: on
|
||||||
PreReq: %{install_info_prereq}
|
PreReq: %{install_info_prereq}
|
||||||
Requires: %{name}-lang = %version
|
Requires: %{name}-lang = %version
|
||||||
Source: coreutils-%{version}.tar.gz
|
Source: coreutils-%{version}.tar.xz
|
||||||
Source1: su.pamd
|
Source1: su.pamd
|
||||||
Source2: su.default
|
Source2: su.default
|
||||||
Patch: coreutils-%{version}.diff
|
Patch: coreutils-%{version}.diff
|
||||||
Patch1: coreutils-xattr.diff
|
|
||||||
Patch30: coreutils-changelog.diff
|
|
||||||
Patch4: coreutils-5.3.0-i18n-0.1.patch
|
Patch4: coreutils-5.3.0-i18n-0.1.patch
|
||||||
Patch5: i18n-uninit.diff
|
Patch5: i18n-uninit.diff
|
||||||
Patch6: i18n-infloop.diff
|
Patch6: i18n-infloop.diff
|
||||||
@ -49,7 +47,6 @@ Patch20: coreutils-6.8-su.diff
|
|||||||
Patch21: coreutils-6.8.0-pie.diff
|
Patch21: coreutils-6.8.0-pie.diff
|
||||||
Patch22: coreutils-5.3.0-sbin4su.diff
|
Patch22: coreutils-5.3.0-sbin4su.diff
|
||||||
Patch23: coreutils-getaddrinfo.diff
|
Patch23: coreutils-getaddrinfo.diff
|
||||||
Patch24: utimens.diff
|
|
||||||
Patch25: coreutils-cifs-afs.diff
|
Patch25: coreutils-cifs-afs.diff
|
||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||||
|
|
||||||
@ -63,8 +60,8 @@ factor false fmt fold groups head id install join kill link ln logname
|
|||||||
ls md5sum mkdir mkfifo mknod mktemp mv nice nl nohup od paste pathchk
|
ls md5sum mkdir mkfifo mknod mktemp mv nice nl nohup od paste pathchk
|
||||||
pinky pr printenv printf ptx pwd readlink rm rmdir runcon seq sha1sum
|
pinky pr printenv printf ptx pwd readlink rm rmdir runcon seq sha1sum
|
||||||
sha224sum sha256sum sha384sum sha512sum shred shuf sleep sort split
|
sha224sum sha256sum sha384sum sha512sum shred shuf sleep sort split
|
||||||
stat stty su sum sync tac tail tee test touch tr true tsort tty uname
|
stat stty su sum sync tac tail tee test timeout touch tr true tsort tty
|
||||||
unexpand uniq unlink uptime users vdir wc who whoami yes
|
uname unexpand uniq unlink uptime users vdir wc who whoami yes
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -107,7 +104,6 @@ Authors:
|
|||||||
%lang_package
|
%lang_package
|
||||||
%prep
|
%prep
|
||||||
%setup -q
|
%setup -q
|
||||||
%patch1 -p1
|
|
||||||
%patch4 -p1
|
%patch4 -p1
|
||||||
%patch5
|
%patch5
|
||||||
%patch6
|
%patch6
|
||||||
@ -121,11 +117,10 @@ Authors:
|
|||||||
%patch21
|
%patch21
|
||||||
%patch22
|
%patch22
|
||||||
%patch23 -p1
|
%patch23 -p1
|
||||||
%patch24 -p1
|
|
||||||
%patch25
|
%patch25
|
||||||
|
|
||||||
%build
|
%build
|
||||||
AUTOPOINT=true autoreconf -fi
|
#AUTOPOINT=true autoreconf -fi
|
||||||
./configure CFLAGS="$RPM_OPT_FLAGS -Wall" \
|
./configure CFLAGS="$RPM_OPT_FLAGS -Wall" \
|
||||||
--prefix=%{_prefix} --mandir=%{_mandir} \
|
--prefix=%{_prefix} --mandir=%{_mandir} \
|
||||||
--infodir=%{_infodir} --without-included-regex \
|
--infodir=%{_infodir} --without-included-regex \
|
||||||
@ -138,13 +133,13 @@ make %{?jobs:-j%jobs} PAMLIBS="-lpam -ldl"
|
|||||||
|
|
||||||
%check
|
%check
|
||||||
if test $EUID -eq 0; then
|
if test $EUID -eq 0; then
|
||||||
su nobody -c make check VERBOSE=yes
|
su nobody -c make %{?jobs:-j%jobs} check VERBOSE=yes
|
||||||
make check-root VERBOSE=yes
|
make %{?jobs:-j%jobs} check-root VERBOSE=yes
|
||||||
else
|
else
|
||||||
%ifarch %arm
|
%ifarch %arm
|
||||||
make -k check VERBOSE=yes || echo make check failed
|
make -k %{?jobs:-j%jobs} check VERBOSE=yes || echo make check failed
|
||||||
%else
|
%else
|
||||||
make check VERBOSE=yes
|
make %{?jobs:-j%jobs} check VERBOSE=yes
|
||||||
%endif
|
%endif
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -191,6 +186,53 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
%defattr(-,root,root)
|
%defattr(-,root,root)
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Sun Feb 22 2009 schwab@suse.de
|
||||||
|
- Update to coreutils 7.1.
|
||||||
|
** New features
|
||||||
|
Add extended attribute support available on certain filesystems like ext2
|
||||||
|
and XFS.
|
||||||
|
cp: Tries to copy xattrs when --preserve=xattr or --preserve=all specified
|
||||||
|
mv: Always tries to copy xattrs
|
||||||
|
install: Never copies xattrs
|
||||||
|
cp and mv accept a new option, --no-clobber (-n): silently refrain
|
||||||
|
from overwriting any existing destination file
|
||||||
|
dd accepts iflag=cio and oflag=cio to open the file in CIO (concurrent I/O)
|
||||||
|
mode where this feature is available.
|
||||||
|
install accepts a new option, --compare (-C): compare each pair of source
|
||||||
|
and destination files, and if the destination has identical content and
|
||||||
|
any specified owner, group, permissions, and possibly SELinux context, then
|
||||||
|
do not modify the destination at all.
|
||||||
|
ls --color now highlights hard linked files, too
|
||||||
|
stat -f recognizes the Lustre file system type
|
||||||
|
** Bug fixes
|
||||||
|
chgrp, chmod, chown --silent (--quiet, -f) no longer print some diagnostics
|
||||||
|
[bug introduced in coreutils-5.1]
|
||||||
|
cp uses much less memory in some situations
|
||||||
|
cp -a now correctly tries to preserve SELinux context (announced in 6.9.90),
|
||||||
|
doesn't inform about failure, unlike with --preserve=all
|
||||||
|
du --files0-from=FILE no longer reads all of FILE into RAM before
|
||||||
|
processing the first file name
|
||||||
|
seq 9223372036854775807 9223372036854775808 now prints only two numbers
|
||||||
|
on systems with extended long double support and good library support.
|
||||||
|
Even with this patch, on some systems, it still produces invalid output,
|
||||||
|
from 3 to at least 1026 lines long. [bug introduced in coreutils-6.11]
|
||||||
|
seq -w now accounts for a decimal point added to the last number
|
||||||
|
to correctly print all numbers to the same width.
|
||||||
|
wc --files0-from=FILE no longer reads all of FILE into RAM, before
|
||||||
|
processing the first file name, unless the list of names is known
|
||||||
|
to be small enough.
|
||||||
|
** Changes in behavior
|
||||||
|
cp and mv: the --reply={yes,no,query} option has been removed.
|
||||||
|
Using it has elicited a warning for the last three years.
|
||||||
|
dd: user specified offsets that are too big are handled better.
|
||||||
|
Previously, erroneous parameters to skip and seek could result
|
||||||
|
in redundant reading of the file with no warnings or errors.
|
||||||
|
du: -H (initially equivalent to --si) is now equivalent to
|
||||||
|
--dereference-args, and thus works as POSIX requires
|
||||||
|
shred: now does 3 overwrite passes by default rather than 25.
|
||||||
|
ls -l now marks SELinux-only files with the less obtrusive '.',
|
||||||
|
rather than '+'. A file with any other combination of MAC and ACL
|
||||||
|
is still marked with a '+'.
|
||||||
* Wed Nov 19 2008 werner@suse.de
|
* Wed Nov 19 2008 werner@suse.de
|
||||||
- Enable stat(1) to detect (k)AFS and CIFS network file systems
|
- Enable stat(1) to detect (k)AFS and CIFS network file systems
|
||||||
* Tue Nov 18 2008 schwab@suse.de
|
* Tue Nov 18 2008 schwab@suse.de
|
||||||
|
112
utimens.diff
112
utimens.diff
@ -1,112 +0,0 @@
|
|||||||
2008-06-02 Eric Blake <ebb9@byu.net>
|
|
||||||
|
|
||||||
Provide fallback for older kernels.
|
|
||||||
* lib/utimens.c (gl_futimens) [HAVE_UTIMENSAT, HAVE_FUTIMENS]:
|
|
||||||
Provide runtime fallback if kernel lacks support.
|
|
||||||
Reported by Mike Frysinger.
|
|
||||||
|
|
||||||
diff --git a/lib/utimens.c b/lib/utimens.c
|
|
||||||
index 25bc965..134310b 100644
|
|
||||||
--- a/lib/utimens.c
|
|
||||||
+++ b/lib/utimens.c
|
|
||||||
@@ -96,20 +96,30 @@ gl_futimens (int fd ATTRIBUTE_UNUSED,
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* POSIX 200x added two interfaces to set file timestamps with
|
|
||||||
- nanosecond resolution. */
|
|
||||||
+ nanosecond resolution. We provide a fallback for ENOSYS (for
|
|
||||||
+ example, compiling against Linux 2.6.25 kernel headers and glibc
|
|
||||||
+ 2.7, but running on Linux 2.6.18 kernel). */
|
|
||||||
#if HAVE_UTIMENSAT
|
|
||||||
if (fd < 0)
|
|
||||||
- return utimensat (AT_FDCWD, file, timespec, 0);
|
|
||||||
+ {
|
|
||||||
+ int result = utimensat (AT_FDCWD, file, timespec, 0);
|
|
||||||
+ if (result == 0 || errno != ENOSYS)
|
|
||||||
+ return result;
|
|
||||||
+ }
|
|
||||||
#endif
|
|
||||||
#if HAVE_FUTIMENS
|
|
||||||
- return futimens (fd, timespec);
|
|
||||||
-#else
|
|
||||||
+ {
|
|
||||||
+ int result = futimens (fd, timespec);
|
|
||||||
+ if (result == 0 || errno != ENOSYS)
|
|
||||||
+ return result;
|
|
||||||
+ }
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
/* The platform lacks an interface to set file timestamps with
|
|
||||||
nanosecond resolution, so do the best we can, discarding any
|
|
||||||
fractional part of the timestamp. */
|
|
||||||
{
|
|
||||||
-# if HAVE_FUTIMESAT || HAVE_WORKING_UTIMES
|
|
||||||
+#if HAVE_FUTIMESAT || HAVE_WORKING_UTIMES
|
|
||||||
struct timeval timeval[2];
|
|
||||||
struct timeval const *t;
|
|
||||||
if (timespec)
|
|
||||||
@@ -125,9 +135,9 @@ gl_futimens (int fd ATTRIBUTE_UNUSED,
|
|
||||||
|
|
||||||
if (fd < 0)
|
|
||||||
{
|
|
||||||
-# if HAVE_FUTIMESAT
|
|
||||||
+# if HAVE_FUTIMESAT
|
|
||||||
return futimesat (AT_FDCWD, file, t);
|
|
||||||
-# endif
|
|
||||||
+# endif
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
@@ -141,21 +151,21 @@ gl_futimens (int fd ATTRIBUTE_UNUSED,
|
|
||||||
worth optimizing, and who knows what other messed-up systems
|
|
||||||
are out there? So play it safe and fall back on the code
|
|
||||||
below. */
|
|
||||||
-# if HAVE_FUTIMESAT
|
|
||||||
+# if HAVE_FUTIMESAT
|
|
||||||
if (futimesat (fd, NULL, t) == 0)
|
|
||||||
return 0;
|
|
||||||
-# elif HAVE_FUTIMES
|
|
||||||
+# elif HAVE_FUTIMES
|
|
||||||
if (futimes (fd, t) == 0)
|
|
||||||
return 0;
|
|
||||||
-# endif
|
|
||||||
+# endif
|
|
||||||
}
|
|
||||||
-# endif /* HAVE_FUTIMESAT || HAVE_WORKING_UTIMES */
|
|
||||||
+#endif /* HAVE_FUTIMESAT || HAVE_WORKING_UTIMES */
|
|
||||||
|
|
||||||
if (!file)
|
|
||||||
{
|
|
||||||
-# if ! (HAVE_FUTIMESAT || (HAVE_WORKING_UTIMES && HAVE_FUTIMES))
|
|
||||||
+#if ! (HAVE_FUTIMESAT || (HAVE_WORKING_UTIMES && HAVE_FUTIMES))
|
|
||||||
errno = ENOSYS;
|
|
||||||
-# endif
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
/* Prefer EBADF to ENOSYS if both error numbers apply. */
|
|
||||||
if (errno == ENOSYS)
|
|
||||||
@@ -170,9 +180,9 @@ gl_futimens (int fd ATTRIBUTE_UNUSED,
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
-# if HAVE_WORKING_UTIMES
|
|
||||||
+#if HAVE_WORKING_UTIMES
|
|
||||||
return utimes (file, t);
|
|
||||||
-# else
|
|
||||||
+#else
|
|
||||||
{
|
|
||||||
struct utimbuf utimbuf;
|
|
||||||
struct utimbuf const *ut;
|
|
||||||
@@ -187,9 +197,8 @@ gl_futimens (int fd ATTRIBUTE_UNUSED,
|
|
||||||
|
|
||||||
return utime (file, ut);
|
|
||||||
}
|
|
||||||
-# endif /* !HAVE_WORKING_UTIMES */
|
|
||||||
+#endif /* !HAVE_WORKING_UTIMES */
|
|
||||||
}
|
|
||||||
-#endif /* !HAVE_FUTIMENS */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Set the access and modification time stamps of FILE to be
|
|
||||||
--
|
|
||||||
1.5.5.1
|
|
Loading…
Reference in New Issue
Block a user