Stop option processing immediately after "-c command",
leaving additional options for the command to handle.
This commit is contained in:
parent
bdfcfccbe5
commit
46b1638044
@ -65,8 +65,21 @@ main(argc, argv)
|
|||||||
initargs(&argc, &argv); /* Defined in config*.c */
|
initargs(&argc, &argv); /* Defined in config*.c */
|
||||||
|
|
||||||
while ((c = getopt(argc, argv, "c:")) != EOF) {
|
while ((c = getopt(argc, argv, "c:")) != EOF) {
|
||||||
|
if (c == 'c') {
|
||||||
|
/* -c is the last option; following arguments
|
||||||
|
that look like options are left for the
|
||||||
|
the command to interpret. */
|
||||||
|
command = malloc(strlen(optarg) + 2);
|
||||||
|
/* Ignore malloc errors this early... */
|
||||||
|
strcpy(command, optarg);
|
||||||
|
strcat(command, "\n");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
switch (c) {
|
switch (c) {
|
||||||
|
|
||||||
|
/* This space reserved for other options */
|
||||||
|
|
||||||
default:
|
default:
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"usage: %s [-c cmd | file | -] [arg] ...\n",
|
"usage: %s [-c cmd | file | -] [arg] ...\n",
|
||||||
@ -74,18 +87,6 @@ main(argc, argv)
|
|||||||
exit(2);
|
exit(2);
|
||||||
/*NOTREACHED*/
|
/*NOTREACHED*/
|
||||||
|
|
||||||
case 'c':
|
|
||||||
if (command != NULL) {
|
|
||||||
fprintf(stderr, "%s: duplicate -c option\n",
|
|
||||||
argv[0]);
|
|
||||||
exit(2);
|
|
||||||
}
|
|
||||||
command = malloc(strlen(optarg) + 2);
|
|
||||||
/* Ignore malloc errors this early... */
|
|
||||||
strcpy(command, optarg);
|
|
||||||
strcat(command, "\n");
|
|
||||||
break;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user