[BusyBox-cvs] busybox/loginutils addgroup.c,1.10,1.11 adduser.c,1.5,1.6
Erik Andersen
andersen at busybox.net
Fri Jun 20 09:02:01 UTC 2003
Update of /var/cvs/busybox/loginutils
In directory winder:/tmp/cvs-serv14650/loginutils
Modified Files:
addgroup.c adduser.c
Log Message:
last_patch89 from vodz:
Manuel,
I rewrite bb_getopt_ulflags() function for more universal usage.
My version support now:
- options with arguments (optional arg as GNU extension also)
- complementaly and/or incomplementaly and/or incongruously and/or list
options
- long_opt (all applets may have long option, add supporting is trivial)
This realisation full compatibile from your version.
Code size grow 480 bytes, but only coreutils/* over compensate this size
after using new function. Last patch reduced over 800 bytes and not full
applied to all. "mkdir" and "mv" applets have long_opt now for demonstrate
trivial addition support long_opt with usage new bb_getopt_ulflags().
Complementaly and/or incomplementaly and/or incongruously and/or list options
logic is not trivial, but new "cut" and "grep" applets using this logic
for examples with full demostrating. New "grep" applet reduced over 300
bytes.
Mark,
Also. I removed bug from "grep" applet.
$ echo a b | busybox grep -e a b
a b
a b
But right is printing one only.
--w
vodz
Index: addgroup.c
===================================================================
RCS file: /var/cvs/busybox/loginutils/addgroup.c,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -d -r1.10 -r1.11
--- addgroup.c 19 Mar 2003 09:12:20 -0000 1.10
+++ addgroup.c 20 Jun 2003 09:01:57 -0000 1.11
@@ -122,6 +122,17 @@
return 0;
}
+#ifndef CONFIG_ADDUSER
+static inline void if_i_am_not_root(void)
+{
+ if (geteuid()) {
+ bb_error_msg_and_die( "Only root may add a user or group to the system.");
+ }
+}
+#else
+extern void if_i_am_not_root(void);
+#endif
+
/*
* addgroup will take a login_name as its first parameter.
*
@@ -131,21 +142,13 @@
* ________________________________________________________________________ */
int addgroup_main(int argc, char **argv)
{
- int opt;
char *group;
char *user;
gid_t gid = 0;
/* get remaining args */
- while ((opt = getopt (argc, argv, "g:")) != -1) {
- switch (opt) {
- case 'g':
- gid = strtol(optarg, NULL, 10);
- break;
- default:
- bb_show_usage();
- break;
- }
+ if(bb_getopt_ulflags(argc, argv, "g:", &group)) {
+ gid = strtol(group, NULL, 10);
}
if (optind < argc) {
@@ -161,14 +164,8 @@
} else {
user = "";
}
-
- if (geteuid() != 0) {
- bb_error_msg_and_die
- ("Only root may add a group to the system.");
- }
+ if_i_am_not_root();
/* werk */
return addgroup(bb_path_group_file, group, gid, user);
}
-
-/* $Id$ */
Index: adduser.c
===================================================================
RCS file: /var/cvs/busybox/loginutils/adduser.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- adduser.c 19 Mar 2003 09:12:20 -0000 1.5
+++ adduser.c 20 Jun 2003 09:01:57 -0000 1.6
@@ -208,9 +208,15 @@
/* return current uid (root is always uid == 0, right?) */
-static inline uid_t i_am_not_root(void)
+#ifndef CONFIG_ADDGROUP
+static inline void if_i_am_not_root(void)
+#else
+void if_i_am_not_root(void)
+#endif
{
- return geteuid();
+ if (geteuid()) {
+ bb_error_msg_and_die( "Only root may add a user or group to the system.");
+ }
}
/*
@@ -224,11 +230,10 @@
* ________________________________________________________________________ */
int adduser_main(int argc, char **argv)
{
- int opt;
const char *login;
- const char *gecos;
+ const char *gecos = default_gecos;
const char *home = NULL;
- const char *shell;
+ const char *shell = default_shell;
struct passwd pw;
@@ -236,30 +241,11 @@
if (argc < 2) {
bb_show_usage();
}
- gecos = default_gecos;
- shell = default_shell;
-
/* get args */
- while ((opt = getopt (argc, argv, "h:g:s:")) != -1)
- switch (opt) {
- case 'h':
- home = optarg;
- break;
- case 'g':
- gecos = optarg;
- break;
- case 's':
- shell = optarg;
- break;
- default:
- bb_show_usage();
- break;
- }
+ bb_getopt_ulflags(argc, argv, "h:g:s:", &home, &gecos, &shell);
/* got root? */
- if (i_am_not_root()) {
- bb_error_msg_and_die( "Only root may add a user or group to the system.");
- }
+ if_i_am_not_root();
/* get login */
if (optind >= argc) {
@@ -288,5 +274,3 @@
/* grand finale */
return adduser(bb_path_passwd_file, &pw);
}
-
-/* $Id$ */
More information about the busybox-cvs
mailing list