diff options
author | "Vladimir N. Oleynik" <dzo@simtreas.ru> | 2005-10-11 18:38:01 +0400 |
---|---|---|
committer | "Vladimir N. Oleynik" <dzo@simtreas.ru> | 2005-10-11 18:38:01 +0400 |
commit | 064f04e7e2b1316f7c3de1ac7dd1fc4d4e108dd5 (patch) | |
tree | dcf88d0a287b1f154984bfc0acb292631df2f1f3 /coreutils | |
parent | ff567f7943f50b88dea14cd27636168ba2d319b5 (diff) |
- use complementally '!' to '?' - 'ask' is best 'free' char for this.
- more long opt compatibility, can set flag for long opt struct now
- more logic: check opt-depend requires and global requires, special for 'id' and 'start-stop-daemon' applets.
Diffstat (limited to 'coreutils')
-rw-r--r-- | coreutils/date.c | 2 | ||||
-rw-r--r-- | coreutils/id.c | 21 | ||||
-rw-r--r-- | coreutils/install.c | 2 |
3 files changed, 12 insertions, 13 deletions
diff --git a/coreutils/date.c b/coreutils/date.c index 9583a0036..5ee2c74e8 100644 --- a/coreutils/date.c +++ b/coreutils/date.c @@ -151,7 +151,7 @@ int date_main(int argc, char **argv) #else # define GETOPT_ISOFMT #endif - bb_opt_complementally = "!d~ds:s~ds"; + bb_opt_complementally = "?d~ds:s~ds"; opt = bb_getopt_ulflags(argc, argv, "Rs:ud:r:" GETOPT_ISOFMT, &date_str, &date_str, &filename #ifdef CONFIG_FEATURE_DATE_ISOFMT diff --git a/coreutils/id.c b/coreutils/id.c index 28050ddf2..14497b416 100644 --- a/coreutils/id.c +++ b/coreutils/id.c @@ -22,7 +22,7 @@ /* BB_AUDIT SUSv3 _NOT_ compliant -- option -G is not currently supported. */ /* Hacked by Tito Ragusa (C) 2004 to handle usernames of whatever length and to - * be more similar to GNU id. + * be more similar to GNU id. */ #include "busybox.h" @@ -41,10 +41,10 @@ #define JUST_GROUP 8 static short printf_full(unsigned int id, const char *arg, const char prefix) -{ +{ const char *fmt = "%cid=%u"; short status=EXIT_FAILURE; - + if(arg) { fmt = "%cid=%u(%s)"; status=EXIT_SUCCESS; @@ -61,15 +61,14 @@ extern int id_main(int argc, char **argv) unsigned long flags; short status; - bb_opt_complementally = "!u~g:g~u"; + /* Don't allow -n -r -nr -ug -rug -nug -rnug */ + bb_opt_complementally = "?u~g:g~u:r?ug:n?ug"; flags = bb_getopt_ulflags(argc, argv, "rnug"); - /* Don't allow -n -r -nr */ - if ((flags <= 3 && flags > 0) /* Don't allow more than one username */ - || (argc > optind + 1)) + if (argc > (optind + 1)) bb_show_usage(); - + /* This values could be overwritten later */ uid = geteuid(); gid = getegid(); @@ -77,13 +76,13 @@ extern int id_main(int argc, char **argv) uid = getuid(); gid = getgid(); } - + if(argv[optind]) { p=getpwnam(argv[optind]); /* bb_xgetpwnam is needed because it exits on failure */ uid = bb_xgetpwnam(argv[optind]); gid = p->pw_gid; - /* in this case PRINT_REAL is the same */ + /* in this case PRINT_REAL is the same */ } if(flags & (JUST_GROUP | JUST_USER)) { @@ -94,7 +93,7 @@ extern int id_main(int argc, char **argv) } else { bb_printf("%u\n",(flags & JUST_USER) ? uid : gid); } - /* exit */ + /* exit */ bb_fflush_stdout_and_exit(EXIT_SUCCESS); } diff --git a/coreutils/install.c b/coreutils/install.c index 9fcb75405..9e5eb6037 100644 --- a/coreutils/install.c +++ b/coreutils/install.c @@ -61,7 +61,7 @@ extern int install_main(int argc, char **argv) int ret = EXIT_SUCCESS, flags, i, isdir; bb_applet_long_options = install_long_options; - bb_opt_complementally = "!s~d:d~s"; + bb_opt_complementally = "?s~d:d~s"; /* -c exists for backwards compatability, its needed */ flags = bb_getopt_ulflags(argc, argv, "cdpsg:m:o:", &gid_str, &mode_str, &uid_str); /* 'a' must be 2nd */ |