summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2007-03-29* tests/cp/cp-a-selinux: New file. Test for the bug reported inJim Meyering
* tests/cp/Makefile.am (TESTS): Add cp-a-selinux. * tests/selinux: New file. * tests/Makefile.am (EXTRA_DIST): Add selinux. * tests/misc/selinux: Source the new script, rather than open coding it. Change how "cp -a" and "cp --preserve=context" work with SELinux. Now, cp -a attempts to preserve context, but failure to do so does not change cp's exit status. However "cp --preserve=context" is similar, but failure *does* cause cp to exit with nonzero status. * src/copy.h (struct cp_options) [require_preserve_context]: New member. * src/copy.c (copy_reg, copy_internal): Implement the above. * src/mv.c (cp_option_init): Initialize the new member. * src/install.c (cp_option_init): Likewise. * src/cp.c (cp_option_init): Likewise. (decode_preserve_arg): Set it or reset it. FIXME: add an on-writable-NFS-only test
2007-03-29* src/system.h (GETOPT_SELINUX_CONTEXT_OPTION_DECL): Define.Jim Meyering
2007-03-29cp, mv, install: add SELinux support, but unlike with the Red HatJim Meyering
patch, mv and cp do not provide the "-Z context" option. * src/copy.c: Include <selinux/selinux.h>. (restore_default_fscreatecon): New function. (copy_reg): Make cp --preserve=context work for existing destination. (copy_internal): Likewise for new destinations. * src/copy.h (cp_options) [preserve_security_context]: New member. * src/cp.c: Include <selinux/selinux.h>. (selinux_enabled): New global. (usage): Mention new --preserve=context option. (PRESERVE_CONTEXT): Define/use. (decode_preserve_arg): Handle PRESERVE_CONTEXT. (main): Remove an obsolete comment. If --preserve=context is specified on a system without SELinux enabled, give a diagnostic and fail. * src/mv.c: Include <selinux/selinux.h>. Set x->preserve_security_context if SELinux is enabled. * src/install.c: Accept new "-Z, --context=C" option. Accept --preserve-context option (but not -P option). Accept alternate spelling: --preserve_context, for now. Include <selinux/selinux.h> and "quotearg.h". (selinux_enabled, use_default_selinux_context): New globals. (PRESERVE_CONTEXT_OPTION): Define. (cp_option_init): Default: do not preserve security context. (setdefaultfilecon): New function. (main): Honor new options. * src/Makefile.am (mv_LDADD, cp_LDADD, ginstall_LDADD): Add $(LIB_SELINUX).
2007-03-29* src/c99-to-c89.diff: Remove the ls.c patch, now that I'veJim Meyering
temporarily removed the offending c99'ism.
2007-03-29* src/chcon.c (usage): Split a string literal that was longer than 509.Jim Meyering
2007-03-29* src/ls.c (gobble_file): Don't call getfilecon unless print_scontext.Jim Meyering
Upon failed getfilecon, accept not just ENOTSUP, but also ENODATA.
2007-03-29* src/c99-to-c89.diff: Adjust offsets.Jim Meyering
2007-03-29* src/c99-to-c89.diff: Remove trailing blanks.Jim Meyering
2007-03-29* src/chcon.c: Don't include "dirname.h". system.h already includes it.Jim Meyering
2007-03-29* src/c99-to-c89.diff: Handle a new c99'ism in ls.c.Jim Meyering
2007-03-29* src/id.c (main): Tweak id -Z diagnostic.Jim Meyering
2007-03-29id: Add SELinux support: -Z option.Jim Meyering
* src/id.c (main): Apply patches from Fedora, with these changes: Remove #ifdef WITH_SELINUX. Use error (EXIT_FAILURE, not fprintf+exit(1). * src/Makefile.am (id_LDADD): Define, so as to add $(LIB_SELINUX).
2007-03-29stat: Add support for SELinux in the form of a %C format directive.Jim Meyering
* src/stat.c (follow_links): Make this variable file-global. (out_file_context): New function. (print_statfs): Honor %C. (print_stat): Honor %C. (do_stat): Remove follow_links parameter. (usage): Document the two %C directives. (main): Accept -Z (though it's a no-op). * src/Makefile.am (stat_LDADD): Define.
2007-03-29ls: Add support for SELinux and a slightly modified -Z option.Jim Meyering
I started with the patches from Red Hat. The entries below tell how the code evolved. * src/ls.c (print_long_format, print_file_name_and_frills): When there is no security context (due to getfilecon/lgetfilecon failing with e.g. ENOTSUP), print it as "?", not "". * src/ls.c (print_file_name_and_frills): Make -Z work without -l. (length_of_file_name_and_frills): Likewise. * src/ls.c: Remove the --lcontext and --scontext options. Change the way -Z, --context work so that it no longer implies -l. Thus, -Z -l will work like -lcontext and -Z without -l will work like --scontext. Adjust tests to reflect new 'ls -l' syntax -- affects only systems with SELinux when operating on a file with no ACL. These tests assumed that everything before the first space on each line is the 10-byte mode string. But there may also be a "+" in the 11th column, just before the space. However, note that this is not new. The same thing would have happened even without the change below, when listing a file with an ACL. * tests/chmod/equals, tests/cp/cp-parents, tests/cp/fail-perm: * tests/cp/link-preserve, tests/install/basic-1, tests/misc/mknod: * tests/mkdir/parents, tests/mkdir/special-1, tests/mv/partition-perm: Don't make compilation depend on USE_ACL. An SELinux security context counts as an "alternate access control method", so ls must output a "+" for each file with a security context. * src/ls.c [struct fileinfo] (have_acl): Declare unconditionally. (FILE_HAS_ACL): Remove macro definition. Use f->have_acl directly. (gobble_file): Record whether a file has a security context, and update the condition used to determine whether to print the "+". (gobble_file): Call getfilecon/lgetfilecon also when format == long_format, so that we get the "+". * src/ls.c (gobble_file): Add a comment explaining why (with a security context option) ls doesn't exit nonzero due to e.g., getfilecon failing with errno == ENOTSUP. * src/ls.c (gobble_file): Ignore failure of getfilecon if it's due to ENOTSUP. * src/ls.c (gobble_file): Factor out three small blocks using getfilecon and lgetfilecon. Don't ignore return value from getfilecon and lgetfilecon. * src/ls.c (print_long_format): Don't use ?: (empty 2nd arg with C ternary operator). (print_scontext_format): Likewise. (print_scontext): Declare to be "bool", not int. Adjust uses. * src/Makefile.am (dir_LDADD, ls_LDADD, vdir_LDADD): Add $(LIB_SELINUX). * tests/misc/chcon: New file. * tests/misc/chcon-fail: New file. * tests/Makefile.am (check-root): Run new, root-only misc/chcon test. * tests/misc/Makefile.am (TESTS): Add chcon and chcon-fail. * tests/misc/Makefile.am (TESTS): Add selinux. * tests/misc/selinux: New file. * tests/help-version: Skip chcon.
2007-03-29New program: chconJim Meyering
* gl/modules/selinux-at: New module. Check for libselinux and set LIB_SELINUX here, unconditionally, rather than depending on the configure-time --enable-selinux option. * gl/modules/selinux-h: New module. * bootstrap.conf (gnulib_modules): Add selinux-at. * gl/lib/selinux-at.c, gl/lib/selinux-at.h: New files. * gl/lib/se-selinux_.h: New file. * gl/lib/se-context_.h: New file. * gl/m4/selinux-selinux-h.m4: New file. * gl/m4/selinux-context-h.m4: New file. * src/Makefile.am (bin_PROGRAMS): Add chcon. (chcon_LDADD): Define. * README: Add chcon to the list of programs. * src/chcon.c: Rewrite the original (Red Hat) chcon to use fts.
2007-03-28Help translators include translation team's web or email address.Jim Meyering
* src/system.h (emit_bug_reporting_address): New function. * src/base64.c: Use it rather than a literal printf. * src/basename.c, src/cat.c, src/chgrp.c, src/chmod.c: * src/chown.c, src/chroot.c, src/cksum.c, src/comm.c, src/cp.c: * src/csplit.c, src/cut.c, src/date.c, src/dd.c, src/df.c: * src/dircolors.c, src/dirname.c, src/du.c, src/echo.c, src/env.c: * src/expand.c, src/expr.c, src/factor.c, src/fmt.c, src/fold.c: * src/head.c, src/hostid.c, src/hostname.c, src/id.c, src/install.c: * src/join.c, src/kill.c, src/link.c, src/ln.c, src/logname.c: * src/ls.c, src/md5sum.c, src/mkdir.c, src/mkfifo.c, src/mknod.c: * src/mv.c, src/nice.c, src/nl.c, src/nohup.c, src/od.c: * src/paste.c, src/pathchk.c, src/pinky.c, src/pr.c, src/printenv.c: * src/printf.c, src/ptx.c, src/pwd.c, src/readlink.c, src/rm.c: * src/rmdir.c, src/seq.c, src/setuidgid.c, src/shred.c, src/shuf.c: * src/sleep.c, src/sort.c, src/split.c, src/stat.c, src/stty.c: * src/su.c, src/sum.c, src/sync.c, src/system.h, src/tac.c: * src/tail.c, src/tee.c, src/test.c, src/touch.c, src/tr.c: * src/true.c, src/tsort.c, src/tty.c, src/uname.c, src/unexpand.c: * src/uniq.c, src/unlink.c, src/uptime.c, src/users.c, src/wc.c: * src/who.c, src/whoami.c, src/yes.c: Likewise.
2007-03-28* src/stty.c: Don't include "vasprintf.h", now that itsJim Meyering
declarations are guaranteed to be in gnulib's stdio.h. * src/who.c: Likewise.
2007-03-27* README: Use "install", not "ginstall" in the list of program names.Jim Meyering
* src/Makefile.am (check-README): Substitute s/ginstall/install/.
2007-03-25* src/c99-to-c89.diff: Regenerate.Jim Meyering
2007-03-25Avoid the need for euidaccess and/or lstat on every directory entryPaul Eggert
with 'rm -r dir' (without -f), if we are root, or if we are removing a directory tree that is full of symbolic links. * bootstrap.conf (gnulib_modules): Add write-any-file. * src/copy.c: Include write-any-file.h. (UNWRITABLE): Remove macro, replacing with.... (writable_destination): New function, which uses can_write_any_file to avoid the need for euidaccess when we are privileged. (overwrite_prompt, abandon_move): Use it. * src/remove.c: Include write-any-file.h. (D_TYPE): New macro. (DT_UNKNOWN, DT_DIR, DT_LNK) [!HAVE_STRUCT_DIRENT_D_TYPE]: New macros. (write_protected_non_symlink): Don't bother to stat if we can write any file. (prompt): New arg PDIRENT_TYPE. All callers changed. Use readdir dirent type to avoid the need for 'lstat' on each directory entry in cases like 'rm -r dir', if we are root, or if the tree is full of symbolic links. (DT_IS_KNOWN, DT_MUST_BE): Remove. (remove_entry): New arg DIRENT_TYPE_ARG. All callers changed.
2007-03-23* src/pathchk.c: Don't include euidaccess.h, as we don't callJim Meyering
euidaccess.
2007-03-20* src/Makefile.am (dir_LDADD, ls_LDADD, vdir_LDADD):Paul Eggert
Add $(LIB_ACL_TRIVIAL).
2007-03-18Fix a bug in how pr -m -s works.Jim Meyering
* NEWS: Describe how the fix affects pr. * src/pr.c (init_parameters): The --merge (-m) option does not imply --expand-tabs (-e), so don't set "untabify_input". Reported by Wis Macomson. * tests/misc/pr: New file. Test for the above fix. * tests/misc/Makefile.am (TESTS): Add pr. * THANKS: Update.
2007-03-17Avoid an obscure build failure, prefer waitpid over wait.Jim Meyering
* src/install.c (strip): Use waitpid, not wait. It's equivalent, but feels less obsolescent.
2007-03-16* src/copy.c: Include filemode.h.Paul Eggert
(overwrite_prompt): Say "try to overwrite", not "overwrite", to make it clearer that the attempt may fail. Problem reported by Dan Jacobson in: http://lists.gnu.org/archive/html/bug-coreutils/2007-03/msg00130.html Output symbolic mode as well as numeric. * tests/mv/i-2 (fail): Adjust to new prompt format.
2007-03-10remove trailing blanksJim Meyering
2007-03-09src/fs.h: git-rm a generated but already-ignored fileJim Meyering
2007-03-08* src/c99-to-c89.diff: Reflect the new c99'ism, update offsets.Jim Meyering
2007-03-08rm without -f: give a better diagnostic when euidaccess fails.Jim Meyering
* src/remove.c (write_protected_non_symlink): Return int, not bool, so that we can indicate failure too (as a postive error number). (prompt): If write_protected_non_symlink fails, report that error number and fail rather than charging ahead and removing the dubious entry. Redo the logic of printing a diagnostic so that we need to invoke quote (full_filename (...)) only once. More details at: <http://thread.gmane.org/gmane.comp.gnu.coreutils.bugs/9952/focus=9996>
2007-03-03Fix a bug: cp -x would fail to set mount point permissions.Andrew Church
* NEWS: mention cp -x bug fix * src/copy.c (copy_internal): Don't return immediately after copying a mount point that we do not intend to recurse under. Based on a patch by Andrew Church.
2007-03-01* bootstrap.conf (gnulib_modules): Replace xreadlink withBruno Haible
xreadlink-with-size. Add xreadlink. * src/copy.c (copy_internal): Update. * src/ls.c (is_directory): Update. * src/stat.c (print_stat): Update. * src/readlink.c (main): Use the one-argument xreadlink function.
2007-02-27Make df -P immune to effects of e.g., the BLOCK_SIZE envvar.Paul Eggert
* NEWS: With -P, the default block size and output format is not affected by DF_BLOCK_SIZE, BLOCK_SIZE, or BLOCKSIZE. * src/df.c (main): Implement this. * doc/coreutils.texi (df invocation): With -P, the default block size and output format is not affected by DF_BLOCK_SIZE, BLOCK_SIZE, or BLOCKSIZE.
2007-02-24* NEWS: sort no longer compresses temporaries by default.Paul Eggert
* bootstrap.conf: Remove findprog. * doc/coreutils.texi (sort invocation): The default is to not compress. Don't treat "" specially. * src/sort.c: Don't include findprog.h. (create_temp): Compress only if the user specified --compress-program. * tests/misc/sort-compress: Adjusts tests to match new behavior.
2007-02-23* src/date.c (usage): Split a diagnostic that had grown to beJim Meyering
longer than the C89 maximum of 509 bytes.
2007-02-23* src/date.c (usage): Mention that --rfc-3339 uses space, not 'T',Ed Santiago
for a separator. Include sample RFC 2822 and 3339 output.
2007-02-23With -Dlint, make shuf free all heap-allocated storage.Jim Meyering
* src/shuf.c (main): Move declaration of input_lines to function scope, and initialize to NULL, so we can free it. [lint]: Free all malloc'd memory. * tests/misc/shuf: Also test shuf's -e and -i options.
2007-02-22Honor dd's noatime flag if possible, even if not supported on build fsPaul Eggert
* doc/coreutils.texi (dd invocation): Warn that noatime might not be reliable. * src/dd.c (flags, usage): Look at O_NOATIME, not HAVE_WORKING_O_NOATIME, to decide whether to support the noatime flag, so that dd attempts O_NOATIME even if the build file system does not support it. Problem reported by Jim Meyering today in bug-coreutils. * tests/dd/misc: Generate a warning, not a failure, if noatime exists but fails.
2007-02-22Adjust preceding change not to perform an unaligned access.Jim Meyering
* src/copy.c (copy_reg): Undo previous change. Instead, make it clearer that we're using a single-byte sentinel, and [lint]: Initialize uintptr_t-1 bytes after the sentinel. Reported by Andreas Schwab.
2007-02-22Placate valgrind, wrt ./cp --sparse=alwaysJim Meyering
* src/copy.c (copy_reg): Place the sentinel by setting a full word's worth of bits, not just a single byte's worth. This avoids a harmless (but distracting) case of memory being used-uninitialized.
2007-02-21* src/copy.c (cached_umask): Cast -1 to mode_t to avoid a warningPaul Eggert
about out-of-range initializer with Sun C 5.8.
2007-02-20* src/env.c (main): When invoked with no arguments (i.e. when printingJim Meyering
the environment), use a local variable to iterate through the global "environ" array, rather than "environ" itself. This is solely to avoid changing the environment for an LD_PRELOAD-substituted "puts" or "exit" function. Tiny patch by Harvey Eneman. See <http://thread.gmane.org/gmane.comp.gnu.coreutils.bugs/9735>. * THANKS: Update.
2007-02-19* NEWS: sort now uses a --compress-program option rather thanPaul Eggert
an environment variable. * doc/coreutils.texi (sort invocation): Document this. * src/sort.c (usage): Likewise. (COMPRESS_PROGRAM_OPTION): New const. (long_options, create_temp, main): Support new option. * tests/misc/sort-compress: Test it.
2007-02-18Rely on gnulib-generated stdlib.h, not exit.h.Jim Meyering
* src/system.h: Don't include exit.h, now that it's subsumed by the gnulib-generated stdlib.h. * lib/xfts.c: Include <stdlib.h> rather than exit.h, now that stdlib.h
2007-02-15* bootstrap.conf (gnulib_modules): Add c-strcase. Remove strcase.Paul Eggert
* src/dircolors.c: Include c-strcase.h. (dc_parse_stream): Use c_strcasecmp rather than strcasecmp to avoid unreliable results in locales like Turkish where strcasecmp is incompatible with the C locale.
2007-02-10Remove excess leading spaces that would make help2man misbehave.Jim Meyering
* src/printf.c (usage): Remove excess spaces on 2nd line of %b desc. * src/nl.c (usage): Remove excess spaces on 2nd line of pBRE desc. * src/dd.c (usage): Remove excess spaces on 2nd line of sync desc. * src/date.c (usage): Use two spaces after each optional flag, not one. Reported by Thomas Huriaux in <http://bugs.debian.org/410407>.
2007-02-10* src/csplit.c (usage): Use two spaces (not one) to separateJim Meyering
each option string from its description, so help2man formats the derived man page properly. Reported by Thomas Huriaux in <http://bugs.debian.org/410407>. * src/df.c (usage): Likewise. * src/du.c (usage): Likewise. * src/install.c (usage): Likewise. * src/ls.c (usage): Likewise.
2007-02-03* NEWS: Document fix for cp --preserve=mode.Paul Eggert
* src/copy.c (copy_internal): Omit the group- or other-writeable permissions when creating a directory, to avoid a race condition if the special mode bits aren't right just after the directory is created. * src/cp.c (make_dir_parents_private): Likewise. * tests/cp/parent-perm-race: Test for the "cp --preserve=mode" race fix in copy.c.
2007-02-03* NEWS: Document fix for cp --parents.Paul Eggert
* src/cp.c (make_dir_parents_private): Report the error sooner with "cp --parents DIR/FILE DEST" when DIR is a non-directory, thus not creating the directory, DEST/DIR. * tests/cp/cp-parents: Test for the non-race-condition bug fixed by the above change.
2007-02-02* src/nl.c (proc_text): Use "NULL", not "(struct re_registers *) 0".Jim Meyering
2007-02-02* src/c99-to-c89.diff: Make shred.c Index: and a/b prefixesJim Meyering
consistent, so this can be applied with patch -p0. Reported by Matthew Woehlke. * Makefile.maint (patch-check): Use patch with its -p2 option, since that makes this check slightly more strict.