sbase

suckless unix tools
git clone git://git.suckless.org/sbase
Log | Files | Refs | README | LICENSE

commit 24810426519a002749016cbb04e6c21cd2d890cb
parent e03a57df92f92a4388f7b78bcf3ce4bb46f39e66
Author: Michael Forney <mforney@mforney.org>
Date:   Tue, 27 Dec 2016 14:49:57 +0100

cp: Also preserve atime/mtime for symlinks

Laslo: Fixed style a bit and added comment

Diffstat:
Mlibutil/cp.c | 16+++++++++-------
1 file changed, 9 insertions(+), 7 deletions(-)

diff --git a/libutil/cp.c b/libutil/cp.c @@ -152,14 +152,16 @@ cp(const char *s1, const char *s2, int depth) } if (cp_aflag || cp_pflag) { - /* timestamp and owner */ + /* atime and mtime */ + times[0] = st.st_atim; + times[1] = st.st_mtim; + if (utimensat(AT_FDCWD, s2, times, AT_SYMLINK_NOFOLLOW) < 0) { + weprintf("utimensat %s:", s2); + cp_status = 1; + } + + /* owner */ if (!S_ISLNK(st.st_mode)) { - times[0] = st.st_atim; - times[1] = st.st_mtim; - if (utimensat(AT_FDCWD, s2, times, 0) < 0) { - weprintf("utimensat %s:", s2); - cp_status = 1; - } if (chown(s2, st.st_uid, st.st_gid) < 0) { weprintf("chown %s:", s2); cp_status = 1;