summaryrefslogtreecommitdiff
path: root/src/install.c
AgeCommit message (Collapse)Author
2007-08-20Avoid consuming too much seekable input when yesno is used.Eric Blake
* bootstrap.conf (gnulib_modules): Grab closein. * src/system.h (includes): Also include closein.h. * src/mv.c (main): Use close_stdin, not close_stdout. * src/cp.c (main): Likewise. * src/ln.c (main): Likewise. * src/rm.c (main): Likewise. * src/install.c (main): Likewise. * NEWS: Document the fix.
2007-07-23Update all copyright notices to use the newer form.Jim Meyering
2007-07-10Change "version 2" to "version 3" in all copyright notices.Jim Meyering
2007-06-23Prefer "STREQ (a, b)" over "strcmp (a, b) == 0"; similar for != 0.Jim Meyering
* src/base64.c (main): Likewise. * src/install.c (setdefaultfilecon): Likewise. * src/sort.c (main): Likewise. * Makefile.maint (sc_prohibit_strcmp): New rule. * .x-sc_prohibit_strcmp: New file, to list the few exceptions. * Makefile.am (EXTRA_DIST): Add .x-sc_prohibit_strcmp.
2007-06-18A few more symlink-related fixes. Fix a bug triggered by cpPaul Eggert
--parents and symlinks. Close some race conditions possible when the destination replaces a newly-created file with a symlink. * NEWS: Document that 'cp --parents' no longer mishandles symlinks in file name components of source. * src/copy.c (HAVE_LCHOWN): Default to false. (lchown) [!defined HAVE_LCHOWN]: Define to chown, for convenience. * src/cp.c (lchown) [!HAVE_LCHOWN]: Likewise. * src/install.c (lchown [!HAVE_LCHOWN]: Likewise. * src/copy.c (set_owner): Use lchown instead of chown, for safety in case the file got replaced by a symlink in the meantime. * src/cp.c (re_protect): Likewise. * src/install.c (change_attributes): Likewise. * src/copy.c (copy_internal): Use ordinary C rather than an #if. * src/cp.c (lchown) [!HAVE_LCHOWN]: Define to chown, for convenience. (struct dir_attr): Cache the entire struct stat of the directory, rather than just its mode, so that we needn't stat the directory twice (which can lead to races). (re_protect): Don't use XSTAT as that's not appropriate in this context (symlinks should be followed here). Instead, use the cached stat value. (make_dir_parents_private): Save dir's entire struct stat, not just its mode. * tests/cp/cp-parents: Add test to check against bug with cp --parents and symlinks.
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-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-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-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-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.
2006-12-04install.c: Preserve time stamps before changing owner or file mode bits,Paul Eggert
for consistency with other coreutils programs.
2006-10-07* src/install.c (make_ancestor): New arg COMPONENT.Paul Eggert
* src/mkdir.c (make_ancestor): Likewise. * tests/install/basic-1: Check for install -Dv bug.
2006-10-06Fix bug reported today by Mike Frysinger: mkdir -pv is logging thePaul Eggert
wrong file name in some cases. * src/install.c (struct install_options): New type. (install_file_in_file_parents, main): Use it instead of struct cp_options. (process_dir): Remember the full name. (announce_mkdir, make_ancestor): Use the full name in announcements. * src/mkdir.c (struct mkdir_options): Add full_name member. (make_ancestor): Use the full name in announcements. (process_dir): Remember the full name. * tests/mkdir/Makefile.am (TESTS): Add p-v. * tests/mkdir/p-v: New file, to test this bug.
2006-09-16* NEWS: Document that mkdir -p and install -d now fork on occasion.Paul Eggert
* bootstrap.conf (gnulib_modules): Add savewd. * src/install.c: Include savewd.h. (process_dir): New function. (main, install_file_in_file_parents): Use it, along with the new savewd module, to avoid some race conditions. * src/mkdir.c: Include savewd.h. (struct mkdir_options): New members make_ancestor_function, mode, mode_bits. (make_ancestor): Return 1 if the resulting directory is not readable. (process_dir): New function. (main): Use it, along with new savewd module, to avoid some race conditions. Fill in new slots of struct mkdir_options, so that callees get the values. * tests/install/basic-1: Test for coreutils 5.97 bug that was fixed in coreutils 6.0, and which should still be fixed with this change. * tests/mkdir/p-3: Likewise.
2006-09-03Don't include dirname.h, since system.h does it now.Paul Eggert
2006-07-17Include mkancesdirs.h.Paul Eggert
(announce_mkdir, make_ancestor): New functions. (DEFAULT_MODE): New macro, specifying initial value of 'mode'. (mode): Use it. (dir_mode, dir_mode_bits): New vars. (main): Set dir modes separately from nondir, so that the X op of -m works correctly. (main): Remove cwd_errno cruft, since make_dir_parents no longer affects cwd. Adjust to new make_dir_parents API. (install_file_in_file_parents): 2nd arg is now char *, not char const *. Use mkancesdirs instead of rolling our own code. (change_attributes): Don't worry about AFS, since that kludge should not be needed any more.
2006-03-26(target_directory_operand, install_file_in_dir): Use new last_component, in ↵Jim Meyering
place of base_name.
2006-02-18(usage): Use two spaces (not one) to separate theJim Meyering
--first-only option string from its description, so help2man formats the derived man page properly.
2005-12-17(cp_option_init): Don't set umask_kill member.Jim Meyering
2005-09-23(install_file_in_file): Be more conservative about the previous patch:Paul Eggert
set time stamps on all non-regular files.
2005-09-23(change_timestamps): First arg is sourcePaul Eggert
struct stat, not file name. All uses changed. (install_file_in_file): Stat the source file if necessary. Don't try to change time stamps if copy_file did it.
2005-09-16Include stat-time.h, and use its functions instead of the obsoletePaul Eggert
TIMESPEC_NS macro.
2005-06-16Finally remove support for --version-control=S (-V).Jim Meyering
It was deprecated nearly 6 years ago and has been warning users to switch to --backup=S since fileutils-4.0j.
2005-06-15(main): Fix my typo: s/argv[optind]/file[i]/.Jim Meyering
2005-06-14(main): Standardize on a diagnostic forPaul Eggert
restore_cwd failure, and report errno. (install_file_in_file_parents): Fail if restore_cwd fails and one of the files is relative. This fixes a bug (albeit unlikely).
2005-06-14(main): Adjust to new make_dir_parents convention.Paul Eggert
2005-06-14tweak diagnostic wording: Use `... return to working directory', ratherJim Meyering
than `... restore working directory'.
2005-06-14remove obsolete FIXMEJim Meyering
2005-06-13(main): When make_dir_parents changes the current workingJim Meyering
directory, give a diagnostic about each subsequent failure to create a dot-relative directory. (install_file_in_file_parents): Update make_dir_parents caller.
2005-06-02Don't use "path" or "filename".Paul Eggert
(install_file_in_file_parents): Renamed from install_file_to_path. All uses changed.
2005-05-31(cp_options_init): Use chown_privileges rather than geteuid.Paul Eggert
2005-05-30(getpwnam, getgrnam): Remove decl.Paul Eggert
(getuid, getgid) [!defined _POSIX_VERSION]: Remove decls.
2005-05-14Update FSF postal mail address.Jim Meyering
2005-05-14Update FSF postal mail address.Jim Meyering
2005-05-01mode_free -> freePaul Eggert
2005-04-28(main): Adjust to new modechange API.Paul Eggert
Also, free the mode_change object when done.
2004-11-26(stat): Remove decl.Paul Eggert
2004-11-21(usage): Avoid usage that runs afoul of DocbookPaul Eggert
translation. Problem reported by Eric S. Raymond.
2004-09-21Remove unused "case 0".Paul Eggert
2004-09-13Adjust to backup file rename.Paul Eggert
2004-08-11Further fix for -d regression.Paul Eggert
2004-08-11(main): Fix -d regression introduced withPaul Eggert
--target-directory support at 2004-06-25.
2004-08-10(change_timestamps): Fix int->bool conversionPaul Eggert
bugs introduced on 2004-07-29.
2004-08-02(isdir): Remove decl.Paul Eggert
(install_file_to_path): Rely on make_path to fail if the destination is not a directory, by passing preserve_existing==true to it. Hence we no longer need to call isdir. Free dest_dir immediately when it's no longer needed, rather than waiting until the end of the function. (copy_file): Don't bother calling isdir, as copy will do the right thing if the destination is a directory.
2004-07-30(isdir, change_timestamps, change_attributes,Paul Eggert
copy_file, install_file_to_path, install_file_in_dir, install_file_in_file, strip_files, dir_arg, cp_option_init, main, change_attributes, change_timestamps): Likewise.
2004-07-02Add short names -t and -T for --target-directoryJim Meyering
and --no-target-directory options, respectively. (NO_TARGET_DIRECTORY_OPTION, TARGET_DIRECTORY_OPTION): Remove. All uses changed to 'T' and 't', respectively. (long_options, main, usage): Add -t and -T as aliases for --target-directory and --no-target-directory, respectively.
2004-06-30Add support for --no-target-directory option.Jim Meyering
(NO_TARGET_DIRECTORY_OPTION): New constant. (long_options, usage, main): Add support for
2004-06-29Add support for 'install --target-directory', an optionJim Meyering
that has been documented for years but not implemented (!). (TARGET_DIRECTORY_OPTION): New var. (long_options, main, usage): Add --target-directory. (target_directory_operand): New function, stolen from mv.c. (main): Use it. Check for -d and --target-directory. Alter wording of diagnostics to match other programs.
2004-06-21(main): Standardize on the diagnostics given when someone givesJim Meyering
too few operands ("missing operand after `xxx'") or too many operands ("extra operand `xxx'"). Include "quote.h" and/or "error.h" if it wasn't already being included.
2004-04-21install -s failed on System V if SIGCHLD was ignored.Jim Meyering
Include <signal.h>. (main) [defined SIGCHLD]: Set SIGCHLD handler to the default, if -s is given, since System V fork+wait does not work if SIGCHLD is ignored.