chiark / gitweb /
prefork: Have process_opts update argv and not take argc
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 17 Jul 2022 11:51:47 +0000 (12:51 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 21 Aug 2022 20:21:10 +0000 (21:21 +0100)
This will let us do further option processing after process_opts.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
cprogs/cgi-fcgi-interp.c
cprogs/prefork.c
cprogs/prefork.h

index 6714134b3e8b31ec7850ba8add1e33f84e240055..da1c2fa943240a8f7d03392a4b161f4292e65234 100644 (file)
@@ -174,7 +174,7 @@ static void queue_alarm(void);
 static void start_logging(void);
 static void await_something(void);
 
-int main(int argc, const char *const *argv) {
+int main(int unused_argc, const char *const *argv) {
   int r;
 
   stage2 = getenv(STAGE2_VAR);
@@ -194,7 +194,7 @@ int main(int argc, const char *const *argv) {
     if (r) diee("close saved stderr fd");
   }
 
-  script = process_opts(argc, argv);
+  script = process_opts(&argv);
 
   if (!stage2) {
     
index f306ffc9a2653196fd068787436367cab09cb06b..607cdb72afcb14b3d1b6d0ddb50c7950a03b49e7 100644 (file)
@@ -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 <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;
@@ -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;
index ed8e60954b0507189f52b2222b538a11c1a15614..adeb8b4ab9e6841baa7336bc171dc3768b1315d4 100644 (file)
@@ -60,7 +60,7 @@ void tidy_garbage(void);
 extern const struct cmdinfo cmdinfos[];
 
 // returns script pathname
-const char *process_opts(int argc, const char *const *argv);
+const char *process_opts(const char *const **argv_io);
 
 void vmsgcore(int estatus, int errnoval, const char *fmt, va_list al);