--- libutil/cp.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/libutil/cp.c b/libutil/cp.c index 8cd0a7d..339c892 100644 --- a/libutil/cp.c +++ b/libutil/cp.c _AT_@ -134,15 +134,11 @@ cp(const char *s1, const char *s2, int depth) return 0; } - /* preserve permissions by default */ - fchmod(f2, st.st_mode); - close(f1); close(f2); } if (cp_aflag || cp_pflag) { - /* timestamp and owner */ if (!S_ISLNK(st.st_mode)) { times[0] = st.st_atim; times[1] = st.st_mtim; _AT_@ -151,7 +147,11 @@ cp(const char *s1, const char *s2, int depth) if (chown(s2, st.st_uid, st.st_gid) < 0) { weprintf("chown %s:", s2); cp_status = 1; - return 0; + st.st_mode &= ~(S_ISUID | S_ISGID); + } + if (chmod(s2, st.st_mode) < 0) { + weprintf("chmod %s:", s2); + cp_status = 1; } } else { if (lchown(s2, st.st_uid, st.st_gid) < 0) { -- 2.11.0Received on Mon Dec 05 2016 - 06:55:10 CET
This archive was generated by hypermail 2.3.0 : Mon Dec 05 2016 - 07:00:48 CET