Getopt'ed by Marc Nijdam <marc_nijdam@hp.com>

-Erik
This commit is contained in:
Eric Andersen 2000-07-14 18:39:08 +00:00
parent 17ad45aace
commit add09fd558
6 changed files with 128 additions and 174 deletions

View File

@ -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,20 +168,15 @@ 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) {
while ((c = getopt(argc, argv, "Rs:ud:")) != EOF) {
switch (c) {
case 'R':
rfc822 = 1;
break;
case 's':
set_time = 1;
if (date_str != NULL)
if ((date_str != NULL) || ((date_str = optarg) == NULL))
usage(date_usage);
date_str = *argv;
break;
case 'u':
utc = 1;
@ -190,27 +185,22 @@ int date_main(int argc, char **argv)
break;
case 'd':
use_arg = 1;
if (date_str != NULL)
if ((date_str != NULL) || ((date_str = optarg) == NULL))
usage(date_usage);
date_str = *argv;
break;
case '-':
default:
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 {
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 */

View File

@ -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;
}
else if (strncmp(p, "--", 2)==0) {
break;
default:
usage(uname_usage);
}
else break;
ap++;
}
ap = &argv[optind];
while ((p = *ap++) != NULL) {
while ((c = *p++) != '\0') {
if (c == '\\' && eflag) {

38
date.c
View File

@ -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,20 +168,15 @@ 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) {
while ((c = getopt(argc, argv, "Rs:ud:")) != EOF) {
switch (c) {
case 'R':
rfc822 = 1;
break;
case 's':
set_time = 1;
if (date_str != NULL)
if ((date_str != NULL) || ((date_str = optarg) == NULL))
usage(date_usage);
date_str = *argv;
break;
case 'u':
utc = 1;
@ -190,27 +185,22 @@ int date_main(int argc, char **argv)
break;
case 'd':
use_arg = 1;
if (date_str != NULL)
if ((date_str != NULL) || ((date_str = optarg) == NULL))
usage(date_usage);
date_str = *argv;
break;
case '-':
default:
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 {
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 */

36
dmesg.c
View File

@ -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) {
while ((c = getopt(argc, argv, "cn:s:")) != EOF) {
switch (c) {
case 'c':
cmd = 4;
break;
case 'n':
cmd = 8;
if (--argc == 0)
goto end;
level = atoi(*(++argv));
if (--argc > 0)
++argv;
stopDoingThat = TRUE;
if (optarg == NULL)
usage(dmesg_usage);
level = atoi(optarg);
break;
case 's':
if (--argc == 0)
goto end;
bufsize = atoi(*(++argv));
if (--argc > 0)
++argv;
stopDoingThat = TRUE;
if (optarg == NULL)
usage(dmesg_usage);
bufsize = atoi(optarg);
break;
default:
goto end;
}
usage(dmesg_usage);
}
}
if (argc > 1) {
if (optind < argc) {
goto end;
}

23
echo.c
View File

@ -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;
}
else if (strncmp(p, "--", 2)==0) {
break;
default:
usage(uname_usage);
}
else break;
ap++;
}
ap = &argv[optind];
while ((p = *ap++) != NULL) {
while ((c = *p++) != '\0') {
if (c == '\\' && eflag) {

View File

@ -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) {
while ((c = getopt(argc, argv, "cn:s:")) != EOF) {
switch (c) {
case 'c':
cmd = 4;
break;
case 'n':
cmd = 8;
if (--argc == 0)
goto end;
level = atoi(*(++argv));
if (--argc > 0)
++argv;
stopDoingThat = TRUE;
if (optarg == NULL)
usage(dmesg_usage);
level = atoi(optarg);
break;
case 's':
if (--argc == 0)
goto end;
bufsize = atoi(*(++argv));
if (--argc > 0)
++argv;
stopDoingThat = TRUE;
if (optarg == NULL)
usage(dmesg_usage);
bufsize = atoi(optarg);
break;
default:
goto end;
}
usage(dmesg_usage);
}
}
if (argc > 1) {
if (optind < argc) {
goto end;
}