aboutsummaryrefslogtreecommitdiff
path: root/coreutils
diff options
context:
space:
mode:
author"Vladimir N. Oleynik" <dzo@simtreas.ru>2005-10-14 09:56:52 +0000
committer"Vladimir N. Oleynik" <dzo@simtreas.ru>2005-10-14 09:56:52 +0000
commitf704b27b5bb8bd5acaed9464714db34ccef06cc8 (patch)
tree06f15d778a64ba361219d8227f87422173bf0da8 /coreutils
parent8c7a7e6e63c01d2d575bbaa43e1768ad2b97179b (diff)
downloadbusybox-w32-f704b27b5bb8bd5acaed9464714db34ccef06cc8.tar.gz
busybox-w32-f704b27b5bb8bd5acaed9464714db34ccef06cc8.tar.bz2
busybox-w32-f704b27b5bb8bd5acaed9464714db34ccef06cc8.zip
- new bb_opt_complementally syntax, use [-:?] only - 'free' chars
- new bb_getopt_ulflags features: check max and min args, convert first argv to options special for ar and tar applets - use bb_default_error_retval for env applet
Diffstat (limited to 'coreutils')
-rw-r--r--coreutils/cut.c2
-rw-r--r--coreutils/date.c2
-rw-r--r--coreutils/env.c12
-rw-r--r--coreutils/id.c7
-rw-r--r--coreutils/install.c2
5 files changed, 10 insertions, 15 deletions
diff --git a/coreutils/cut.c b/coreutils/cut.c
index f9c72ca81..839bab68e 100644
--- a/coreutils/cut.c
+++ b/coreutils/cut.c
@@ -294,7 +294,7 @@ extern int cut_main(int argc, char **argv)
294 unsigned long opt; 294 unsigned long opt;
295 char *sopt, *sdopt; 295 char *sopt, *sdopt;
296 296
297 bb_opt_complementally = "b~bcf:c~bcf:f~bcf"; 297 bb_opt_complementally = "b--bcf:c--bcf:f--bcf";
298 opt = bb_getopt_ulflags(argc, argv, optstring, &sopt, &sopt, &sopt, &sdopt); 298 opt = bb_getopt_ulflags(argc, argv, optstring, &sopt, &sopt, &sopt, &sdopt);
299 part = opt & (OPT_BYTE_FLGS|OPT_CHAR_FLGS|OPT_FIELDS_FLGS); 299 part = opt & (OPT_BYTE_FLGS|OPT_CHAR_FLGS|OPT_FIELDS_FLGS);
300 if(part == 0) 300 if(part == 0)
diff --git a/coreutils/date.c b/coreutils/date.c
index 43130f914..6593df970 100644
--- a/coreutils/date.c
+++ b/coreutils/date.c
@@ -149,7 +149,7 @@ int date_main(int argc, char **argv)
149#else 149#else
150# define GETOPT_ISOFMT 150# define GETOPT_ISOFMT
151#endif 151#endif
152 bb_opt_complementally = "?d~s:s~d"; 152 bb_opt_complementally = "?:d--s:s--d";
153 opt = bb_getopt_ulflags(argc, argv, "Rs:ud:r:" GETOPT_ISOFMT, 153 opt = bb_getopt_ulflags(argc, argv, "Rs:ud:r:" GETOPT_ISOFMT,
154 &date_str, &date_str, &filename 154 &date_str, &date_str, &filename
155#ifdef CONFIG_FEATURE_DATE_ISOFMT 155#ifdef CONFIG_FEATURE_DATE_ISOFMT
diff --git a/coreutils/env.c b/coreutils/env.c
index 1a8ad7c78..d59e738f1 100644
--- a/coreutils/env.c
+++ b/coreutils/env.c
@@ -38,7 +38,7 @@
38 * - correct "-" option usage 38 * - correct "-" option usage
39 * - multiple "-u unsetenv" support 39 * - multiple "-u unsetenv" support
40 * - GNU long option support 40 * - GNU long option support
41 * - save errno after exec failed before bb_perror_msg() 41 * - use bb_default_error_retval
42 */ 42 */
43 43
44 44
@@ -65,7 +65,7 @@ extern int env_main(int argc, char** argv)
65 llist_t *unset_env = NULL; 65 llist_t *unset_env = NULL;
66 extern char **environ; 66 extern char **environ;
67 67
68 bb_opt_complementally = "u*"; 68 bb_opt_complementally = "u::";
69 bb_applet_long_options = env_long_options; 69 bb_applet_long_options = env_long_options;
70 70
71 opt = bb_getopt_ulflags(argc, argv, "+iu:", &unset_env); 71 opt = bb_getopt_ulflags(argc, argv, "+iu:", &unset_env);
@@ -93,12 +93,10 @@ extern int env_main(int argc, char** argv)
93 } 93 }
94 94
95 if (*argv) { 95 if (*argv) {
96 int er;
97
98 execvp(*argv, argv); 96 execvp(*argv, argv);
99 er = errno; 97 /* SUSv3-mandated exit codes. */
100 bb_perror_msg("%s", *argv); /* Avoid multibyte problems. */ 98 bb_default_error_retval = (errno == ENOENT) ? 127 : 126;
101 return (er == ENOENT) ? 127 : 126; /* SUSv3-mandated exit codes. */ 99 bb_perror_msg_and_die("%s", *argv);
102 } 100 }
103 101
104 for (ep = environ; *ep; ep++) { 102 for (ep = environ; *ep; ep++) {
diff --git a/coreutils/id.c b/coreutils/id.c
index 14497b416..39a57c196 100644
--- a/coreutils/id.c
+++ b/coreutils/id.c
@@ -62,12 +62,9 @@ extern int id_main(int argc, char **argv)
62 short status; 62 short status;
63 63
64 /* Don't allow -n -r -nr -ug -rug -nug -rnug */ 64 /* Don't allow -n -r -nr -ug -rug -nug -rnug */
65 bb_opt_complementally = "?u~g:g~u:r?ug:n?ug";
66 flags = bb_getopt_ulflags(argc, argv, "rnug");
67
68 /* Don't allow more than one username */ 65 /* Don't allow more than one username */
69 if (argc > (optind + 1)) 66 bb_opt_complementally = "?1:?:u--g:g--u:r?ug:n?ug";
70 bb_show_usage(); 67 flags = bb_getopt_ulflags(argc, argv, "rnug");
71 68
72 /* This values could be overwritten later */ 69 /* This values could be overwritten later */
73 uid = geteuid(); 70 uid = geteuid();
diff --git a/coreutils/install.c b/coreutils/install.c
index 9e5eb6037..a4a96151d 100644
--- a/coreutils/install.c
+++ b/coreutils/install.c
@@ -61,7 +61,7 @@ extern int install_main(int argc, char **argv)
61 int ret = EXIT_SUCCESS, flags, i, isdir; 61 int ret = EXIT_SUCCESS, flags, i, isdir;
62 62
63 bb_applet_long_options = install_long_options; 63 bb_applet_long_options = install_long_options;
64 bb_opt_complementally = "?s~d:d~s"; 64 bb_opt_complementally = "?:s--d:d--s";
65 /* -c exists for backwards compatability, its needed */ 65 /* -c exists for backwards compatability, its needed */
66 flags = bb_getopt_ulflags(argc, argv, "cdpsg:m:o:", &gid_str, &mode_str, &uid_str); /* 'a' must be 2nd */ 66 flags = bb_getopt_ulflags(argc, argv, "cdpsg:m:o:", &gid_str, &mode_str, &uid_str); /* 'a' must be 2nd */
67 67