summaryrefslogtreecommitdiff
path: root/lib/modechange.c
diff options
context:
space:
mode:
authorJim Meyering <jim@meyering.net>1997-07-29 03:03:49 +0000
committerJim Meyering <jim@meyering.net>1997-07-29 03:03:49 +0000
commitf6e8b41a5f4b9a413d26a7831827d18fd119e607 (patch)
tree12e4046c5dcb09f063ca466d357dba1d10799fe6 /lib/modechange.c
parent42e5deb36c5409e8a3b4eb954da8ba52d7f24395 (diff)
downloadcoreutils-f6e8b41a5f4b9a413d26a7831827d18fd119e607.tar.xz
(mode_create_from_ref): Don't use umask.
Don't use MODE_X_IF_ANY_X.
Diffstat (limited to 'lib/modechange.c')
-rw-r--r--lib/modechange.c15
1 files changed, 4 insertions, 11 deletions
diff --git a/lib/modechange.c b/lib/modechange.c
index 97f2e63ba..5c2cc41ca 100644
--- a/lib/modechange.c
+++ b/lib/modechange.c
@@ -236,11 +236,8 @@ invalid:
return MODE_INVALID;
}
-/* Return a file mode change operation created from the reference REF_FILE
- Don't affect special permissions, use umask, affect 'x' if any 'x', for
- maximum security
-
- Return MODE_BAD_REFERENCE if REF_FILE can't be accessed */
+/* Return a file mode change operation that sets permissions to match those
+ of REF_FILE. Return MODE_BAD_REFERENCE if REF_FILE can't be accessed. */
struct mode_change *
mode_create_from_ref (ref_file)
@@ -249,7 +246,6 @@ mode_create_from_ref (ref_file)
struct mode_change *change; /* the only change element */
struct stat ref_stats;
int i;
- int umask_value;
if (stat (ref_file, &ref_stats))
return MODE_BAD_REFERENCE;
@@ -259,12 +255,9 @@ mode_create_from_ref (ref_file)
if (change == NULL)
return MODE_MEMORY_EXHAUSTED;
- umask_value = umask (0);
- umask (umask_value);
-
change->op = '=';
- change->flags = MODE_X_IF_ANY_X;
- change->affected = 0777 & ~umask_value;
+ change->flags = 0;
+ change->affected = 07777;
change->value = ref_stats.st_mode;
change->next = NULL;