[Pkg-shadow-commits] r1493 - in upstream/trunk: . libmisc
nekral-guest at alioth.debian.org
nekral-guest at alioth.debian.org
Wed Dec 26 13:54:23 UTC 2007
Author: nekral-guest
Date: 2007-12-26 13:54:23 +0000 (Wed, 26 Dec 2007)
New Revision: 1493
Modified:
upstream/trunk/ChangeLog
upstream/trunk/NEWS
upstream/trunk/libmisc/copydir.c
Log:
Merge RedHat's patch shadow-4.0.18.1-mtime.patch:
* NEWS: Document that usermod will now preserve user's file modification
and access time.
* libmisc/copydir.c: Preserve the access and modification time of copied
files. This is important for usermod. This will also impact useradd, for
the skeleton files, but this is not important.
* libmisc/copydir.c: Stop and return an error if a file could not be
closed after during a copy.
Modified: upstream/trunk/ChangeLog
===================================================================
--- upstream/trunk/ChangeLog 2007-12-26 13:18:27 UTC (rev 1492)
+++ upstream/trunk/ChangeLog 2007-12-26 13:54:23 UTC (rev 1493)
@@ -1,5 +1,16 @@
2007-12-26 Nicolas François <nicolas.francois at centraliens.net>
+ Merge RedHat's patch shadow-4.0.18.1-mtime.patch:
+ * NEWS: Document that usermod will now preserve user's file modification
+ and access time.
+ * libmisc/copydir.c: Preserve the access and modification time of copied
+ files. This is important for usermod. This will also impact useradd, for
+ the skeleton files, but this is not important.
+ * libmisc/copydir.c: Stop and return an error if a file could not be
+ closed after during a copy.
+
+2007-12-26 Nicolas François <nicolas.francois at centraliens.net>
+
Cleanups:
* src/useradd.c (find_new_gid): Check that gflg is not set (assert).
* src/useradd.c (find_new_gid): Do not check the group name uniqueness
Modified: upstream/trunk/NEWS
===================================================================
--- upstream/trunk/NEWS 2007-12-26 13:18:27 UTC (rev 1492)
+++ upstream/trunk/NEWS 2007-12-26 13:54:23 UTC (rev 1493)
@@ -7,6 +7,9 @@
* Do not install the shadow library per default.
- useradd
* New option -l to avoid adding the user to the lastlog and faillog databases.
+- usermod
+ * Keep the access and modification time of files when moving an user's home
+ directory.
shadow-4.0.18.2 -> shadow-4.1.0 09-12-2008
Modified: upstream/trunk/libmisc/copydir.c
===================================================================
--- upstream/trunk/libmisc/copydir.c 2007-12-26 13:18:27 UTC (rev 1492)
+++ upstream/trunk/libmisc/copydir.c 2007-12-26 13:54:23 UTC (rev 1493)
@@ -33,6 +33,7 @@
#include <sys/stat.h>
#include <sys/types.h>
+#include <sys/time.h>
#include <fcntl.h>
#include <stdio.h>
#include "prototypes.h"
@@ -154,6 +155,7 @@
struct DIRECT *ent;
struct stat sb;
struct link_name *lp;
+ struct timeval mt[2];
DIR *dir;
/*
@@ -215,6 +217,18 @@
if (LSTAT (src_name, &sb) == -1)
continue;
+#if defined(_BSD_SOURCE) || defined(_SVID_SOURCE)
+ mt[0].tv_sec = sb.st_atim.tv_sec;
+ mt[0].tv_usec = sb.st_atim.tv_nsec / 1000;
+ mt[1].tv_sec = sb.st_mtim.tv_sec;
+ mt[1].tv_usec = sb.st_mtim.tv_nsec / 1000;
+#else
+ mt[0].tv_sec = sb.st_atime;
+ mt[0].tv_usec = sb.st_atimensec / 1000;
+ mt[1].tv_sec = sb.st_mtime;
+ mt[1].tv_usec = sb.st_mtimensec / 1000;
+#endif
+
if (S_ISDIR (sb.st_mode)) {
/*
@@ -230,10 +244,12 @@
uid == (uid_t) - 1 ? sb.st_uid : uid,
gid == (gid_t) - 1 ? sb.st_gid : gid)
|| chmod (dst_name, sb.st_mode)
- || copy_tree (src_name, dst_name, uid, gid)) {
+ || copy_tree (src_name, dst_name, uid, gid)
+ || utimes (dst_name, mt)) {
err++;
break;
}
+
continue;
}
#ifdef S_IFLNK
@@ -270,13 +286,21 @@
#ifdef WITH_SELINUX
selinux_file_context (dst_name);
#endif
- if (symlink (oldlink, dst_name) ||
- lchown (dst_name,
+ if (symlink (oldlink, dst_name)
+ || lchown (dst_name,
uid == (uid_t) - 1 ? sb.st_uid : uid,
gid == (gid_t) - 1 ? sb.st_gid : gid)) {
err++;
break;
}
+
+ /* 2007-10-18: We don't care about
+ * exit status of lutimes because
+ * it returns ENOSYS on many system
+ * - not implemented
+ */
+ lutimes (dst_name, mt);
+
continue;
}
#endif
@@ -314,10 +338,12 @@
|| chown (dst_name,
uid == (uid_t) - 1 ? sb.st_uid : uid,
gid == (gid_t) - 1 ? sb.st_gid : gid)
- || chmod (dst_name, sb.st_mode & 07777)) {
+ || chmod (dst_name, sb.st_mode & 07777)
+ || utimes (dst_name, mt)) {
err++;
break;
}
+
continue;
}
@@ -343,15 +369,26 @@
err++;
break;
}
+
while ((cnt = read (ifd, buf, sizeof buf)) > 0) {
if (write (ofd, buf, cnt) != cnt) {
cnt = -1;
break;
}
}
+
close (ifd);
- close (ofd);
+ if (futimes (ofd, mt) != 0) {
+ err++;
+ break;
+ }
+
+ if (close (ofd) != 0) {
+ err++;
+ break;
+ }
+
if (cnt == -1) {
err++;
break;
More information about the Pkg-shadow-commits
mailing list