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