if (!interp) badusage("need interpreter argument");
}
-const char *process_opts(int argc, const char *const *argv) {
+const char *process_opts(const char *const **argv_io) {
const char *smashedopt;
sha256_init(&identsc);
- if (argc>=2 &&
- (smashedopt = argv[1]) &&
+ if ((*argv_io)[0] &&
+ (smashedopt = (*argv_io)[1]) &&
smashedopt[0]=='-' &&
(strchr(smashedopt,' ') || strchr(smashedopt,','))) {
/* single argument containg all the options and <interp> */
- argv += 2; /* eat argv[0] and smashedopt */
+ *argv_io += 2; /* eat argv[0] and smashedopt */
const char *split_args[MAX_OPTS+1];
int split_argc = 0;
- split_args[split_argc++] = argv[0];
+ split_args[split_argc++] = (*argv_io)[0];
for (;;) {
if (split_argc >= MAX_OPTS) die("too many options in combined arg");
split_args[split_argc++] = smashedopt;
shbang_opts(&split_argv, cmdinfos);
/* sets interp */
} else {
- shbang_opts(&argv, cmdinfos);
+ shbang_opts(argv_io, cmdinfos);
}
- script = *argv++;
+ script = *(*argv_io)++;
if (!script) badusage("need script argument");
return script;