main: save argc and argv for later use
authorFerry Huberts <ferry.huberts@pelagic.nl>
Sun, 25 Dec 2016 13:30:49 +0000 (14:30 +0100)
committerFerry Huberts <ferry.huberts@pelagic.nl>
Wed, 4 Jan 2017 08:47:11 +0000 (09:47 +0100)
Signed-off-by: Ferry Huberts <ferry.huberts@pelagic.nl>
src/main.c
src/olsr.h

index 8ee2568..bbd0a28 100644 (file)
@@ -404,9 +404,32 @@ static int set_default_ifcnfs(struct olsr_if *ifs, struct if_config_options *cnf
  * Main entrypoint
  */
 
+static int argc_saved = 0;
+char ** argv_saved = NULL;
+
+void get_argc_argv(int *argc, char ***argv) {
+  if (argc) {
+    *argc = argc_saved;
+  }
+  if (argv) {
+    *argv = argv_saved;
+  }
+}
+
 int main(int argc, char *argv[]) {
   int argcLocal = argc;
 
+  /* save argc and argv */
+  {
+    size_t i;
+
+    argc_saved = argc;
+    argv_saved = malloc(sizeof(char*) * (argc + 1));
+    for (i = 0; i <= (size_t) argc; i++) {
+      argv_saved[i] = argv[i];
+    }
+  }
+
   /* Open syslog */
   olsr_openlog("olsrd");
 
index dacb144..5052316 100644 (file)
@@ -56,6 +56,8 @@ extern bool changes_force;
 
 extern union olsr_ip_addr all_zero;
 
+void get_argc_argv(int *argc, char **argv[]);
+
 void olsr_startup_sleep(int);
 void olsr_do_startup_sleep(void);