X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;f=cprogs%2Fprefork.c;h=607cdb72afcb14b3d1b6d0ddb50c7950a03b49e7;hb=f1a89f120f3f72684544906bb4852414ac0171bb;hp=f306ffc9a2653196fd068787436367cab09cb06b;hpb=bed8c01a107d494e35578bcaeb6c4d374405d00c;p=chiark-utils.git diff --git a/cprogs/prefork.c b/cprogs/prefork.c index f306ffc..607cdb7 100644 --- a/cprogs/prefork.c +++ b/cprogs/prefork.c @@ -302,20 +302,20 @@ static void shbang_opts(const char *const **argv_io, 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 */ - 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; @@ -335,10 +335,10 @@ const char *process_opts(int argc, const char *const *argv) { 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;