[Pkg-shadow-commits] r2007 - in upstream/trunk: . libmisc src
nekral-guest at alioth.debian.org
nekral-guest at alioth.debian.org
Sat May 24 15:35:16 UTC 2008
Author: nekral-guest
Date: 2008-05-24 15:35:15 +0000 (Sat, 24 May 2008)
New Revision: 2007
Modified:
upstream/trunk/ChangeLog
upstream/trunk/libmisc/copydir.c
upstream/trunk/src/userdel.c
upstream/trunk/src/usermod.c
Log:
* libmisc/copydir.c (remove_tree): As we always use remove_tree
followed by rmdir to remove the directory itself, delete also the
root directory in remove_tree.
* src/userdel.c, src/usermod.c: Do not call rmdir after
remove_tree.
Modified: upstream/trunk/ChangeLog
===================================================================
--- upstream/trunk/ChangeLog 2008-05-24 15:19:02 UTC (rev 2006)
+++ upstream/trunk/ChangeLog 2008-05-24 15:35:15 UTC (rev 2007)
@@ -1,5 +1,13 @@
2008-05-24 Nicolas François <nicolas.francois at centraliens.net>
+ * libmisc/copydir.c (remove_tree): As we always use remove_tree
+ followed by rmdir to remove the directory itself, delete also the
+ root directory in remove_tree.
+ * src/userdel.c, src/usermod.c: Do not call rmdir after
+ remove_tree.
+
+2008-05-24 Nicolas François <nicolas.francois at centraliens.net>
+
* libmisc/copydir.c (remove_tree): Make sure unlink is successful
when removing files.
Modified: upstream/trunk/libmisc/copydir.c
===================================================================
--- upstream/trunk/libmisc/copydir.c 2008-05-24 15:19:02 UTC (rev 2006)
+++ upstream/trunk/libmisc/copydir.c 2008-05-24 15:35:15 UTC (rev 2007)
@@ -557,10 +557,11 @@
}
/*
- * remove_tree - remove files in a directory tree
+ * remove_tree - delete a directory tree
*
* remove_tree() walks a directory tree and deletes all the files
* and directories.
+ * At the end, it deletes the root directory itself.
*/
int remove_tree (const char *root)
@@ -617,20 +618,17 @@
}
if (S_ISDIR (sb.st_mode)) {
-
/*
* Recursively delete this directory.
*/
-
if (remove_tree (new_name) != 0) {
err = -1;
break;
}
- if (rmdir (new_name) != 0) {
- err = -1;
- break;
- }
} else {
+ /*
+ * Delete the file.
+ */
if (unlink (new_name) != 0) {
err = -1;
break;
@@ -639,6 +637,12 @@
}
(void) closedir (dir);
+ if (0 == err) {
+ if (rmdir (root) != 0) {
+ err = -1;
+ }
+ }
+
return err;
}
Modified: upstream/trunk/src/userdel.c
===================================================================
--- upstream/trunk/src/userdel.c 2008-05-24 15:19:02 UTC (rev 2006)
+++ upstream/trunk/src/userdel.c 2008-05-24 15:35:15 UTC (rev 2007)
@@ -794,8 +794,7 @@
#endif
if (rflg) {
- if (remove_tree (user_home)
- || rmdir (user_home)) {
+ if (remove_tree (user_home) != 0) {
fprintf (stderr,
_("%s: error removing directory %s\n"),
Prog, user_home);
Modified: upstream/trunk/src/usermod.c
===================================================================
--- upstream/trunk/src/usermod.c 2008-05-24 15:19:02 UTC (rev 2006)
+++ upstream/trunk/src/usermod.c 2008-05-24 15:35:15 UTC (rev 2007)
@@ -1288,12 +1288,12 @@
if (copy_tree (user_home, user_newhome,
uflg ? (long int)user_newid : -1,
gflg ? (long int)user_newgid : -1) == 0) {
- if (remove_tree (user_home) != 0 ||
- rmdir (user_home) != 0)
+ if (remove_tree (user_home) != 0) {
fprintf (stderr,
_
("%s: warning: failed to completely remove old home directory %s"),
Prog, user_home);
+ }
#ifdef WITH_AUDIT
audit_logger (AUDIT_USER_CHAUTHTOK,
Prog,
@@ -1304,8 +1304,9 @@
return;
}
+ /* TODO: do some cleanup if the copy
+ * was started */
(void) remove_tree (user_newhome);
- (void) rmdir (user_newhome);
}
fprintf (stderr,
_
More information about the Pkg-shadow-commits
mailing list