accept option arguments without spaces (e.g. "-eprint(a)")

This commit is contained in:
Roberto Ierusalimschy
2002-06-18 14:43:49 -03:00
parent eec0905173
commit 5893fcb71a

18
lua.c
View File

@@ -1,5 +1,5 @@
/* /*
** $Id: lua.c,v 1.90 2002/06/06 12:40:22 roberto Exp roberto $ ** $Id: lua.c,v 1.91 2002/06/18 17:12:05 roberto Exp roberto $
** Lua stand-alone interpreter ** Lua stand-alone interpreter
** See Copyright Notice in lua.h ** See Copyright Notice in lua.h
*/ */
@@ -301,27 +301,29 @@ static int handle_argv (char *argv[], int *toclose) {
break; break;
} }
case 'e': { case 'e': {
i++; const char *chunk = argv[i] + 2;
if (argv[i] == NULL) { if (*chunk == '\0') chunk = argv[++i];
if (chunk == NULL) {
print_usage(); print_usage();
return EXIT_FAILURE; return EXIT_FAILURE;
} }
if (dostring(argv[i], "=prog. argument") != 0) { if (dostring(chunk, "=prog. argument") != 0) {
fprintf(stderr, "%s: error running argument `%.99s'\n", fprintf(stderr, "%s: error running argument `%.99s'\n",
progname, argv[i]); progname, chunk);
return EXIT_FAILURE; return EXIT_FAILURE;
} }
break; break;
} }
case 'f': { case 'f': {
i++; const char *filename = argv[i] + 2;
if (argv[i] == NULL) { if (*filename == '\0') filename = argv[++i];
if (filename == NULL) {
print_usage(); print_usage();
return EXIT_FAILURE; return EXIT_FAILURE;
} }
getargs(argv+i); /* collect remaining arguments */ getargs(argv+i); /* collect remaining arguments */
lua_setglobal(L, "arg"); lua_setglobal(L, "arg");
return file_input(argv[i]); /* stop scanning arguments */ return file_input(filename); /* stop scanning arguments */
} }
case 's': { case 's': {
fprintf(stderr, fprintf(stderr,