[hackers] [sbase] [PATCH 10/10] cp: Check result of utimensat

From: Michael Forney <mforney_AT_mforney.org>
Date: Sun, 4 Dec 2016 21:55:12 -0800

POSIX says that if duplicating the modification/access times fails, then
an error should be written to stderr.
---
 libutil/cp.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/libutil/cp.c b/libutil/cp.c
index 339c892..15e4ce5 100644
--- a/libutil/cp.c
+++ b/libutil/cp.c
_AT_@ -142,8 +142,10 @@ cp(const char *s1, const char *s2, int depth)
 		if (!S_ISLNK(st.st_mode)) {
 			times[0] = st.st_atim;
 			times[1] = st.st_mtim;
-			utimensat(AT_FDCWD, s2, times, 0);
-
+			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;
-- 
2.11.0
Received on Mon Dec 05 2016 - 06:55:12 CET

This archive was generated by hypermail 2.3.0 : Mon Dec 05 2016 - 07:00:59 CET