1 /* vi: set sw=4 ts=4: */
3 * deluser/delgroup implementation for busybox
5 * Copyright (C) 1999 by Lineo, inc. and John Beppu
6 * Copyright (C) 1999,2000,2001 by John Beppu <beppu@codepoet.org>
7 * Copyright (C) 2007 by Tito Ragusa <farmatito@tiscali.it>
9 * Licensed under GPL version 2, see file LICENSE in this tarball for details.
14 static int del_line_matching(char **args
, const char *filename
)
16 if (ENABLE_FEATURE_DEL_USER_FROM_GROUP
&& args
[2]) {
17 return update_passwd(filename
, args
[2], NULL
, args
[1]);
19 return update_passwd(filename
, args
[1], NULL
, NULL
);
22 int deluser_main(int argc
, char **argv
) MAIN_EXTERNALLY_VISIBLE
;
23 int deluser_main(int argc
, char **argv
)
26 && (!ENABLE_FEATURE_DEL_USER_FROM_GROUP
27 || (applet_name
[3] != 'g' || argc
!= 3))
33 bb_error_msg_and_die(bb_msg_perm_denied_are_you_root
);
35 if ((ENABLE_FEATURE_DEL_USER_FROM_GROUP
&& argc
!= 3)
37 || (ENABLE_DELGROUP
&& ENABLE_DESKTOP
)
40 && (!ENABLE_DELGROUP
|| applet_name
[3] == 'u')
42 if (del_line_matching(argv
, bb_path_passwd_file
) < 0)
44 if (ENABLE_FEATURE_SHADOWPASSWDS
) {
45 del_line_matching(argv
, bb_path_shadow_file
);
47 } else if (ENABLE_DESKTOP
&& ENABLE_DELGROUP
&& getpwnam(argv
[1]))
48 bb_error_msg_and_die("can't remove primary group of user %s", argv
[1]);
50 if (del_line_matching(argv
, bb_path_group_file
) < 0)
52 if (ENABLE_FEATURE_SHADOWPASSWDS
) {
53 del_line_matching(argv
, bb_path_gshadow_file
);