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)
This commit is contained in:
Ricardo Branco 2024-03-16 18:13:10 +01:00 committed by Mark Johnston
parent 068465dddc
commit eff68b69df

View file

@ -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);