commit 761fd153e340a14abccc0af89f2f6617faf2077f Author: Laszlo Papp <lp...@kde.org> Date: Thu Jul 3 11:06:58 2014 +0100
Add optional home directory removal support to deluser diff --git a/loginutils/deluser.c b/loginutils/deluser.c index e39ac55..67b744b 100644 --- a/loginutils/deluser.c +++ b/loginutils/deluser.c @@ -11,9 +11,10 @@ */ //usage:#define deluser_trivial_usage -//usage: "USER" +//usage: "[-h] USER" //usage:#define deluser_full_usage "\n\n" //usage: "Delete USER from the system" +//usage: "\n -h Remove the home directory" //usage:#define delgroup_trivial_usage //usage: IF_FEATURE_DEL_USER_FROM_GROUP("[USER] ")"GROUP" @@ -35,11 +36,15 @@ int deluser_main(int argc, char **argv) /* Name of shadow or gshadow file */ const char *sfile; /* Are we deluser or delgroup? */ + struct passwd *pw = 0; int do_deluser = (ENABLE_DELUSER && (!ENABLE_DELGROUP || applet_name[3] == 'u')); if (geteuid() != 0) bb_error_msg_and_die(bb_msg_perm_denied_are_you_root); + int do_delhome = 0; + if (getopt32(argv, "h") & 1) { ++argv; --argc; do_delhome = 1; } + name = argv[1]; member = NULL; @@ -55,7 +60,7 @@ int deluser_main(int argc, char **argv) case 2: if (do_deluser) { /* "deluser USER" */ - xgetpwnam(name); /* bail out if USER is wrong */ + pw = xgetpwnam(name); /* bail out if USER is wrong */ pfile = bb_path_passwd_file; if (ENABLE_FEATURE_SHADOWPASSWDS) sfile = bb_path_shadow_file; @@ -108,6 +113,8 @@ int deluser_main(int argc, char **argv) do_deluser = -1; goto do_delgroup; } + if (do_delhome && pw && remove_file(pw->pw_dir, FILEUTILS_RECUR) < 0) + bb_error_msg("can't remove home: %s", pw->pw_dir); return EXIT_SUCCESS; } /* Reached only if number of command line args is wrong */
_______________________________________________ busybox mailing list busybox@busybox.net http://lists.busybox.net/mailman/listinfo/busybox