From eff68b69dfa234f757b370b46596f7c8d604e05d Mon Sep 17 00:00:00 2001 From: Ricardo Branco Date: Sat, 16 Mar 2024 18:13:10 +0100 Subject: [PATCH] mv: Set file flags after setting file times Some file flags prevent modification of file times, so they should be set later. This matches NetBSD's behaviour. Reviewed by: markj MFC after: 1 week Pull Request: https://github.com/freebsd/freebsd-src/pull/1138 (cherry picked from commit 428f86fd2ff1fd2b073d556fac273c8c7f457376) --- bin/mv/mv.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/bin/mv/mv.c b/bin/mv/mv.c index 1320f603b3c..dba71f55e5d 100644 --- a/bin/mv/mv.c +++ b/bin/mv/mv.c @@ -331,6 +331,12 @@ err: if (unlink(to)) */ preserve_fd_acls(from_fd, to_fd, from, to); (void)close(from_fd); + + ts[0] = sbp->st_atim; + ts[1] = sbp->st_mtim; + if (futimens(to_fd, ts)) + warn("%s: set times", to); + /* * XXX * NFS doesn't support chflags; ignore errors unless there's reason @@ -351,11 +357,6 @@ err: if (unlink(to)) } else warn("%s: cannot stat", to); - ts[0] = sbp->st_atim; - ts[1] = sbp->st_mtim; - if (futimens(to_fd, ts)) - warn("%s: set times", to); - if (close(to_fd)) { warn("%s", to); return (1);