From: Jim Meyering Date: Sun, 23 May 1999 23:23:55 +0000 (+0000) Subject: (copy_internal): Don't apply the umask in move_mode. X-Git-Tag: TEXTUTILS-1_22n~86 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=0e39b529b6039e95beea3db4fd2897303a59b781;p=thirdparty%2Fcoreutils.git (copy_internal): Don't apply the umask in move_mode. Otherwise, `mv' would not preserve the permissions when copying between partitions. Reported by David Godfrey --- diff --git a/src/copy.c b/src/copy.c index 1a6694ebb8..f1242efeae 100644 --- a/src/copy.c +++ b/src/copy.c @@ -896,7 +896,13 @@ copy_internal (const char *src_path, const char *dst_path, else if ((x->preserve_chmod_bits || new_dst) && (x->copy_as_regular || S_ISREG (src_type) || S_ISDIR (src_type))) { - if (chmod (dst_path, src_mode & x->umask_kill)) + mode_t dst_mode = src_mode; + + /* Honor the umask for `cp', but not for `mv'. */ + if (!x->move_mode) + dst_mode &= x->umask_kill; + + if (chmod (dst_path, dst_mode)) { error (0, errno, _("preserving permissions for %s"), dst_path); if (x->require_preserve)