summaryrefslogtreecommitdiff
path: root/src/install.c
diff options
context:
space:
mode:
authorOndrej Oprala <ooprala@redhat.com>2012-08-07 16:56:52 +0200
committerJim Meyering <meyering@redhat.com>2012-09-28 12:21:02 +0200
commit24ebca61a3a0f10d6cd2800b188b3c034d1c4755 (patch)
treedfb6ffe8a3e1447432b9310a93f2785d787bcfb8 /src/install.c
parent64be8b40f457f6480f9e79777d98afce40469786 (diff)
downloadcoreutils-24ebca61a3a0f10d6cd2800b188b3c034d1c4755.tar.xz
cp: fix the --no-preserve=mode option
The --no-preserve=mode option did not do what its name implies: it would mistakenly preserve permission mode bits. * NEWS: Mention the fix. * TODO: Remove an entry. * src/copy.c (copy_reg): Add a condition to properly handle the --no-preserve=mode option for files (copy_internal): Add a condition to properly handle the --no-preserve=mode option for directories. * src/copy.h (struct cp_options): Add a new boolean. * src/cp.c (cp_option_init,decode_preserve_arg): Set the new boolean value according to specified options. * src/install.c (struct cp_options): Initialize the new boolean. * src/mv.c (struct cp_options): Initialize the new boolean. * tests/cp/preserve-mode.sh: Add a new test. * tests/cp/link-preserve.sh (-a --no-preserve=mode): Adjust the expected perms: now, --no-preserve=mode overrides the --preserve=mode that is inherent in -a, as it should. * tests/local.mk: Add the new test to the list.
Diffstat (limited to 'src/install.c')
-rw-r--r--src/install.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/install.c b/src/install.c
index 854436aa3..8ea549135 100644
--- a/src/install.c
+++ b/src/install.c
@@ -275,6 +275,7 @@ cp_option_init (struct cp_options *x)
x->preserve_links = false;
x->preserve_mode = false;
x->preserve_timestamps = false;
+ x->explicit_no_preserve_mode = false;
x->reduce_diagnostics=false;
x->data_copy_required = true;
x->require_preserve = false;