[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