Commit e1b3ac9659ae78d0fb491d9c71d87125b7a0a653

Thomas de Grivel 2024-12-31T05:57:49

fix env_init_args

diff --git a/libkc3/env.c b/libkc3/env.c
index 20844bb..d5ae54e 100644
--- a/libkc3/env.c
+++ b/libkc3/env.c
@@ -11,13 +11,17 @@
  * THIS SOFTWARE.
  */
 #include <string.h>
+#include <sys/types.h>
 
-#if (! (defined(__APPLE__) || defined(__OpenBSD__)))
-#include <sys/sysinfo.h>
+#if (defined(__APPLE__) ||      \
+     defined(__FreeBSD__) ||    \
+     defined(__NetBSD__) ||     \
+     defined(__OpenBSD__))
+# include <sys/sysctl.h>
+#else
+# include <sys/sysinfo.h>
 #endif
 
-#include <sys/types.h>
-#include <sys/sysctl.h>
 #include <unistd.h>
 #include "alloc.h"
 #include "array.h"
@@ -2730,8 +2734,8 @@ s_env * env_init_args (s_env *env, int *argc, char ***argv)
   s_str argv0;
   assert(env);
   if (argc && argv && *argc && *argv) {
-    (*argc)--;
-    (*argv)++;
+    env->argc = (*argc)--;
+    env->argv = (*argv)++;
     str_init_1(&argv0, NULL, env->argv[0]);
     if (! (env->argv0_dir = alloc(sizeof(s_str))))
       return NULL;
@@ -2744,8 +2748,6 @@ s_env * env_init_args (s_env *env, int *argc, char ***argv)
         (*argv)++;
       }
     }
-    env->argc = *argc;
-    env->argv = *argv;
     return env;
   }
   env->argc = 0;