Переглянути джерело

Run the first non-option command line argument as the program. Set _argv__ to program name plus any following command-line arguments.

master
Ian Piumarta 11 місяці тому
джерело
коміт
46c7ef6f32
1 змінених файлів з 21 додано та 16 видалено
  1. +21
    -16
      minproto.leg

+ 21
- 16
minproto.leg Переглянути файл

@ -1,6 +1,6 @@
# minproto.leg -- minimal prototype langauge for semantic experiments
#
# last edited: 2024-05-23 15:37:35 by piumarta on zora-1034.local
# last edited: 2024-05-26 10:21:16 by piumarta on xubuntu
%{
;
@ -3791,29 +3791,34 @@ int main(int argc, char **argv)
trace = new(pObject);
oop args = new(pObject);
_set(intern("__argv__"), Symbol,value, args);
signal(SIGINT, sigint);
int repled = 0;
int argn = 1;
for (int argn = 1; argn < argc; ++argn) {
while (argn < argc) {
char *arg = argv[argn];
if ('-' == *arg) {
while (*++arg) {
switch (*arg) {
case 'O': ++opt_O; break;
case 'd': ++opt_d, ++opt_v; break;
case 'v': ++opt_v; break;
default: fatal("unknown command-line option '%c'", *arg);
}
if ('-' != *arg) break;
while (*++arg) {
switch (*arg) {
case 'O': ++opt_O; continue;
case 'd': ++opt_d, ++opt_v; continue;
case 'v': ++opt_v; continue;
default: fatal("unknown command-line option '%c'", *arg);
}
}
else {
replPath(arg);
++repled;
}
++argn;
}
if (!repled) replFile(stdin);
for (int i = argn; i < argc; ++i)
Object_push(args, newString(argv[i]));
if (argn == argc)
replFile(stdin);
else
replPath(argv[argn]);
return 0;
}

Завантаження…
Відмінити
Зберегти