summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--coreutils/date.c70
-rw-r--r--coreutils/echo.c25
-rw-r--r--date.c70
-rw-r--r--dmesg.c56
-rw-r--r--echo.c25
-rw-r--r--util-linux/dmesg.c56
6 files changed, 128 insertions, 174 deletions
diff --git a/coreutils/date.c b/coreutils/date.c
index bc6d13137..3ede1237c 100644
--- a/coreutils/date.c
+++ b/coreutils/date.c
@@ -159,7 +159,7 @@ int date_main(int argc, char **argv)
char *date_str = NULL;
char *date_fmt = NULL;
char *t_buff;
- int i;
+ char c;
int set_time = 0;
int rfc822 = 0;
int utc = 0;
@@ -168,49 +168,39 @@ int date_main(int argc, char **argv)
struct tm tm_time;
/* Interpret command line args */
- i = --argc;
- argv++;
- while (i > 0 && **argv) {
- if (**argv == '-') {
- while (i > 0 && *++(*argv))
- switch (**argv) {
- case 'R':
- rfc822 = 1;
- break;
- case 's':
- set_time = 1;
- if (date_str != NULL)
- usage(date_usage);
- date_str = *argv;
- break;
- case 'u':
- utc = 1;
- if (putenv("TZ=UTC0") != 0)
- fatalError(memory_exhausted);
- break;
- case 'd':
- use_arg = 1;
- if (date_str != NULL)
- usage(date_usage);
- date_str = *argv;
- break;
- case '-':
- usage(date_usage);
- }
- } else {
- if ((date_fmt == NULL) && (**argv == '+'))
- date_fmt = *argv + 1; /* Skip over the '+' */
- else if (date_str == NULL) {
- set_time = 1;
- date_str = *argv;
- } else {
+ while ((c = getopt(argc, argv, "Rs:ud:")) != EOF) {
+ switch (c) {
+ case 'R':
+ rfc822 = 1;
+ break;
+ case 's':
+ set_time = 1;
+ if ((date_str != NULL) || ((date_str = optarg) == NULL))
usage(date_usage);
- }
+ break;
+ case 'u':
+ utc = 1;
+ if (putenv("TZ=UTC0") != 0)
+ fatalError(memory_exhausted);
+ break;
+ case 'd':
+ use_arg = 1;
+ if ((date_str != NULL) || ((date_str = optarg) == NULL))
+ usage(date_usage);
+ break;
+ default:
+ usage(date_usage);
}
- i--;
- argv++;
}
+ if ((date_fmt == NULL) && (optind < argc) && (argv[optind][0] == '+'))
+ date_fmt = &argv[optind][1]; /* Skip over the '+' */
+ else if (date_str == NULL) {
+ set_time = 1;
+ date_str = argv[optind];
+ } else {
+ usage(date_usage);
+ }
/* Now we have parsed all the information except the date format
which depends on whether the clock is being set or read */
diff --git a/coreutils/echo.c b/coreutils/echo.c
index 6e279d1c6..387ea3fef 100644
--- a/coreutils/echo.c
+++ b/coreutils/echo.c
@@ -45,23 +45,24 @@ echo_main(int argc, char** argv)
int nflag = 0;
int eflag = 0;
- ap = argv;
- if (argc)
- ap++;
- while ((p = *ap) != NULL && *p == '-') {
- if (strcmp(p, "-n")==0) {
+
+ while ((c = getopt(argc, argv, "neE")) != EOF) {
+ switch (c) {
+ case 'n':
nflag = 1;
- } else if (strcmp(p, "-e")==0) {
+ break;
+ case 'e':
eflag = 1;
- } else if (strcmp(p, "-E")==0) {
+ break;
+ case 'E':
eflag = 0;
+ break;
+ default:
+ usage(uname_usage);
}
- else if (strncmp(p, "--", 2)==0) {
- usage( uname_usage);
- }
- else break;
- ap++;
}
+
+ ap = &argv[optind];
while ((p = *ap++) != NULL) {
while ((c = *p++) != '\0') {
if (c == '\\' && eflag) {
diff --git a/date.c b/date.c
index bc6d13137..3ede1237c 100644
--- a/date.c
+++ b/date.c
@@ -159,7 +159,7 @@ int date_main(int argc, char **argv)
char *date_str = NULL;
char *date_fmt = NULL;
char *t_buff;
- int i;
+ char c;
int set_time = 0;
int rfc822 = 0;
int utc = 0;
@@ -168,49 +168,39 @@ int date_main(int argc, char **argv)
struct tm tm_time;
/* Interpret command line args */
- i = --argc;
- argv++;
- while (i > 0 && **argv) {
- if (**argv == '-') {
- while (i > 0 && *++(*argv))
- switch (**argv) {
- case 'R':
- rfc822 = 1;
- break;
- case 's':
- set_time = 1;
- if (date_str != NULL)
- usage(date_usage);
- date_str = *argv;
- break;
- case 'u':
- utc = 1;
- if (putenv("TZ=UTC0") != 0)
- fatalError(memory_exhausted);
- break;
- case 'd':
- use_arg = 1;
- if (date_str != NULL)
- usage(date_usage);
- date_str = *argv;
- break;
- case '-':
- usage(date_usage);
- }
- } else {
- if ((date_fmt == NULL) && (**argv == '+'))
- date_fmt = *argv + 1; /* Skip over the '+' */
- else if (date_str == NULL) {
- set_time = 1;
- date_str = *argv;
- } else {
+ while ((c = getopt(argc, argv, "Rs:ud:")) != EOF) {
+ switch (c) {
+ case 'R':
+ rfc822 = 1;
+ break;
+ case 's':
+ set_time = 1;
+ if ((date_str != NULL) || ((date_str = optarg) == NULL))
usage(date_usage);
- }
+ break;
+ case 'u':
+ utc = 1;
+ if (putenv("TZ=UTC0") != 0)
+ fatalError(memory_exhausted);
+ break;
+ case 'd':
+ use_arg = 1;
+ if ((date_str != NULL) || ((date_str = optarg) == NULL))
+ usage(date_usage);
+ break;
+ default:
+ usage(date_usage);
}
- i--;
- argv++;
}
+ if ((date_fmt == NULL) && (optind < argc) && (argv[optind][0] == '+'))
+ date_fmt = &argv[optind][1]; /* Skip over the '+' */
+ else if (date_str == NULL) {
+ set_time = 1;
+ date_str = argv[optind];
+ } else {
+ usage(date_usage);
+ }
/* Now we have parsed all the information except the date format
which depends on whether the clock is being set or read */
diff --git a/dmesg.c b/dmesg.c
index df2bce713..961e532b0 100644
--- a/dmesg.c
+++ b/dmesg.c
@@ -44,50 +44,36 @@ static const char dmesg_usage[] = "dmesg [-c] [-n LEVEL] [-s SIZE]\n"
int dmesg_main(int argc, char **argv)
{
- char *buf;
+ char *buf, c;
int bufsize = 8196;
int i;
int n;
int level = 0;
int lastc;
int cmd = 3;
- int stopDoingThat;
- argc--;
- argv++;
-
- /* Parse any options */
- while (argc && **argv == '-') {
- stopDoingThat = FALSE;
- while (stopDoingThat == FALSE && *++(*argv)) {
- switch (**argv) {
- case 'c':
- cmd = 4;
- break;
- case 'n':
- cmd = 8;
- if (--argc == 0)
- goto end;
- level = atoi(*(++argv));
- if (--argc > 0)
- ++argv;
- stopDoingThat = TRUE;
- break;
- case 's':
- if (--argc == 0)
- goto end;
- bufsize = atoi(*(++argv));
- if (--argc > 0)
- ++argv;
- stopDoingThat = TRUE;
- break;
- default:
- goto end;
- }
+ while ((c = getopt(argc, argv, "cn:s:")) != EOF) {
+ switch (c) {
+ case 'c':
+ cmd = 4;
+ break;
+ case 'n':
+ cmd = 8;
+ if (optarg == NULL)
+ usage(dmesg_usage);
+ level = atoi(optarg);
+ break;
+ case 's':
+ if (optarg == NULL)
+ usage(dmesg_usage);
+ bufsize = atoi(optarg);
+ break;
+ default:
+ usage(dmesg_usage);
}
- }
+ }
- if (argc > 1) {
+ if (optind < argc) {
goto end;
}
diff --git a/echo.c b/echo.c
index 6e279d1c6..387ea3fef 100644
--- a/echo.c
+++ b/echo.c
@@ -45,23 +45,24 @@ echo_main(int argc, char** argv)
int nflag = 0;
int eflag = 0;
- ap = argv;
- if (argc)
- ap++;
- while ((p = *ap) != NULL && *p == '-') {
- if (strcmp(p, "-n")==0) {
+
+ while ((c = getopt(argc, argv, "neE")) != EOF) {
+ switch (c) {
+ case 'n':
nflag = 1;
- } else if (strcmp(p, "-e")==0) {
+ break;
+ case 'e':
eflag = 1;
- } else if (strcmp(p, "-E")==0) {
+ break;
+ case 'E':
eflag = 0;
+ break;
+ default:
+ usage(uname_usage);
}
- else if (strncmp(p, "--", 2)==0) {
- usage( uname_usage);
- }
- else break;
- ap++;
}
+
+ ap = &argv[optind];
while ((p = *ap++) != NULL) {
while ((c = *p++) != '\0') {
if (c == '\\' && eflag) {
diff --git a/util-linux/dmesg.c b/util-linux/dmesg.c
index df2bce713..961e532b0 100644
--- a/util-linux/dmesg.c
+++ b/util-linux/dmesg.c
@@ -44,50 +44,36 @@ static const char dmesg_usage[] = "dmesg [-c] [-n LEVEL] [-s SIZE]\n"
int dmesg_main(int argc, char **argv)
{
- char *buf;
+ char *buf, c;
int bufsize = 8196;
int i;
int n;
int level = 0;
int lastc;
int cmd = 3;
- int stopDoingThat;
- argc--;
- argv++;
-
- /* Parse any options */
- while (argc && **argv == '-') {
- stopDoingThat = FALSE;
- while (stopDoingThat == FALSE && *++(*argv)) {
- switch (**argv) {
- case 'c':
- cmd = 4;
- break;
- case 'n':
- cmd = 8;
- if (--argc == 0)
- goto end;
- level = atoi(*(++argv));
- if (--argc > 0)
- ++argv;
- stopDoingThat = TRUE;
- break;
- case 's':
- if (--argc == 0)
- goto end;
- bufsize = atoi(*(++argv));
- if (--argc > 0)
- ++argv;
- stopDoingThat = TRUE;
- break;
- default:
- goto end;
- }
+ while ((c = getopt(argc, argv, "cn:s:")) != EOF) {
+ switch (c) {
+ case 'c':
+ cmd = 4;
+ break;
+ case 'n':
+ cmd = 8;
+ if (optarg == NULL)
+ usage(dmesg_usage);
+ level = atoi(optarg);
+ break;
+ case 's':
+ if (optarg == NULL)
+ usage(dmesg_usage);
+ bufsize = atoi(optarg);
+ break;
+ default:
+ usage(dmesg_usage);
}
- }
+ }
- if (argc > 1) {
+ if (optind < argc) {
goto end;
}