]> xenbits.xensource.com Git - unikraft/unikraft.git/commitdiff
lib/posix-environ: Compiled-in environment variables
authorSimon Kuenzer <simon@unikraft.io>
Tue, 14 Feb 2023 23:32:29 +0000 (00:32 +0100)
committerUnikraft <monkey@unikraft.io>
Sun, 7 May 2023 16:44:41 +0000 (16:44 +0000)
We introduce the ability to compile-in up to 16 environment variables.
The values can be set via `menuconfig`. The initial `environ` array is
automatically sized to match the number of compiled-in values.

Signed-off-by: Simon Kuenzer <simon@unikraft.io>
Reviewed-by: Delia Pavel <delia_maria.pavel@stud.acs.upb.ro>
Approved-by: Razvan Deaconescu <razvand@unikraft.io>
Tested-by: Unikraft CI <monkey@unikraft.io>
GitHub-Closes: #868

lib/posix-environ/Config.uk
lib/posix-environ/environ.c

index b8ecb7e72e430f07e003c5998546289793c866a8..9073afdd339e2bb98690e6ac1bd0b70b3d3c41d0 100644 (file)
@@ -1,4 +1,107 @@
-config LIBPOSIX_ENVIRON
+menuconfig LIBPOSIX_ENVIRON
        bool "posix-environ: Environment variables"
        default n
        select LIBNOLIBC if !HAVE_LIBC
+
+if LIBPOSIX_ENVIRON
+       menu "Compiled-in environment variables"
+               config LIBPOSIX_ENVIRON_ENVP0
+               string ""
+               default "PATH=/bin"
+
+               # invisible boolean that marks not empty entries
+               config LIBPOSIX_ENVIRON_ENVP0_NOTEMPTY
+               bool
+               default y if LIBPOSIX_ENVIRON_ENVP0 != ""
+
+               config LIBPOSIX_ENVIRON_ENVP1
+               string ""
+               config LIBPOSIX_ENVIRON_ENVP1_NOTEMPTY
+               bool
+               default y if LIBPOSIX_ENVIRON_ENVP1 != ""
+
+               config LIBPOSIX_ENVIRON_ENVP2
+               string ""
+               config LIBPOSIX_ENVIRON_ENVP2_NOTEMPTY
+               bool
+               default y if LIBPOSIX_ENVIRON_ENVP2 != ""
+
+               config LIBPOSIX_ENVIRON_ENVP3
+               string ""
+               config LIBPOSIX_ENVIRON_ENVP3_NOTEMPTY
+               bool
+               default y if LIBPOSIX_ENVIRON_ENVP3 != ""
+
+               config LIBPOSIX_ENVIRON_ENVP4
+               string ""
+               config LIBPOSIX_ENVIRON_ENVP4_NOTEMPTY
+               bool
+               default y if LIBPOSIX_ENVIRON_ENVP4 != ""
+
+               config LIBPOSIX_ENVIRON_ENVP5
+               string ""
+               config LIBPOSIX_ENVIRON_ENVP5_NOTEMPTY
+               bool
+               default y if LIBPOSIX_ENVIRON_ENVP5 != ""
+
+               config LIBPOSIX_ENVIRON_ENVP6
+               string ""
+               config LIBPOSIX_ENVIRON_ENVP6_NOTEMPTY
+               bool
+               default y if LIBPOSIX_ENVIRON_ENVP6 != ""
+
+               config LIBPOSIX_ENVIRON_ENVP7
+               string ""
+               config LIBPOSIX_ENVIRON_ENVP7_NOTEMPTY
+               bool
+               default y if LIBPOSIX_ENVIRON_ENVP7 != ""
+
+               config LIBPOSIX_ENVIRON_ENVP8
+               string ""
+               config LIBPOSIX_ENVIRON_ENVP8_NOTEMPTY
+               bool
+               default y if LIBPOSIX_ENVIRON_ENVP8 != ""
+
+               config LIBPOSIX_ENVIRON_ENVP9
+               string ""
+               config LIBPOSIX_ENVIRON_ENVP9_NOTEMPTY
+               bool
+               default y if LIBPOSIX_ENVIRON_ENVP9 != ""
+
+               config LIBPOSIX_ENVIRON_ENVP10
+               string ""
+               config LIBPOSIX_ENVIRON_ENVP10_NOTEMPTY
+               bool
+               default y if LIBPOSIX_ENVIRON_ENVP10 != ""
+
+               config LIBPOSIX_ENVIRON_ENVP11
+               string ""
+               config LIBPOSIX_ENVIRON_ENVP11_NOTEMPTY
+               bool
+               default y if LIBPOSIX_ENVIRON_ENVP11 != ""
+
+               config LIBPOSIX_ENVIRON_ENVP12
+               string ""
+               config LIBPOSIX_ENVIRON_ENVP12_NOTEMPTY
+               bool
+               default y if LIBPOSIX_ENVIRON_ENVP12 != ""
+
+               config LIBPOSIX_ENVIRON_ENVP13
+               string ""
+               config LIBPOSIX_ENVIRON_ENVP13_NOTEMPTY
+               bool
+               default y if LIBPOSIX_ENVIRON_ENVP13 != ""
+
+               config LIBPOSIX_ENVIRON_ENVP14
+               string ""
+               config LIBPOSIX_ENVIRON_ENVP14_NOTEMPTY
+               bool
+               default y if LIBPOSIX_ENVIRON_ENVP14 != ""
+
+               config LIBPOSIX_ENVIRON_ENVP15
+               string ""
+               config LIBPOSIX_ENVIRON_ENVP15_NOTEMPTY
+               bool
+               default y if LIBPOSIX_ENVIRON_ENVP15 != ""
+       endmenu
+endif
index 0ff3a69f66b33e939db78d2571945f47e2c9eef7..d555683bba742968d64d5d802e8c16aa0398707e 100644 (file)
@@ -6,4 +6,56 @@
 #include <uk/essentials.h>
 #include "environ.h"
 
-char **__environ = __NULL;
+static char *__ct_env[] = {
+#if CONFIG_LIBPOSIX_ENVIRON_ENVP0_NOTEMPTY
+       CONFIG_LIBPOSIX_ENVIRON_ENVP0,
+#endif /* CONFIG_LIBPOSIX_ENVIRON_ENVP0_NOTEMPTY */
+#if CONFIG_LIBPOSIX_ENVIRON_ENVP1_NOTEMPTY
+       CONFIG_LIBPOSIX_ENVIRON_ENVP1,
+#endif /* CONFIG_LIBPOSIX_ENVIRON_ENVP1_NOTEMPTY */
+#if CONFIG_LIBPOSIX_ENVIRON_ENVP2_NOTEMPTY
+       CONFIG_LIBPOSIX_ENVIRON_ENVP2,
+#endif /* CONFIG_LIBPOSIX_ENVIRON_ENVP2_NOTEMPTY */
+#if CONFIG_LIBPOSIX_ENVIRON_ENVP3_NOTEMPTY
+       CONFIG_LIBPOSIX_ENVIRON_ENVP3,
+#endif /* CONFIG_LIBPOSIX_ENVIRON_ENVP3_NOTEMPTY */
+#if CONFIG_LIBPOSIX_ENVIRON_ENVP4_NOTEMPTY
+       CONFIG_LIBPOSIX_ENVIRON_ENVP4,
+#endif /* CONFIG_LIBPOSIX_ENVIRON_ENVP4_NOTEMPTY */
+#if CONFIG_LIBPOSIX_ENVIRON_ENVP5_NOTEMPTY
+       CONFIG_LIBPOSIX_ENVIRON_ENVP5,
+#endif /* CONFIG_LIBPOSIX_ENVIRON_ENVP5_NOTEMPTY */
+#if CONFIG_LIBPOSIX_ENVIRON_ENVP6_NOTEMPTY
+       CONFIG_LIBPOSIX_ENVIRON_ENVP6,
+#endif /* CONFIG_LIBPOSIX_ENVIRON_ENVP6_NOTEMPTY */
+#if CONFIG_LIBPOSIX_ENVIRON_ENVP7_NOTEMPTY
+       CONFIG_LIBPOSIX_ENVIRON_ENVP7,
+#endif /* CONFIG_LIBPOSIX_ENVIRON_ENVP7_NOTEMPTY */
+#if CONFIG_LIBPOSIX_ENVIRON_ENVP8_NOTEMPTY
+       CONFIG_LIBPOSIX_ENVIRON_ENVP8,
+#endif /* CONFIG_LIBPOSIX_ENVIRON_ENVP8_NOTEMPTY */
+#if CONFIG_LIBPOSIX_ENVIRON_ENVP9_NOTEMPTY
+       CONFIG_LIBPOSIX_ENVIRON_ENVP9,
+#endif /* CONFIG_LIBPOSIX_ENVIRON_ENVP9_NOTEMPTY */
+#if CONFIG_LIBPOSIX_ENVIRON_ENVP10_NOTEMPTY
+       CONFIG_LIBPOSIX_ENVIRON_ENVP10,
+#endif /* CONFIG_LIBPOSIX_ENVIRON_ENVP10_NOTEMPTY */
+#if CONFIG_LIBPOSIX_ENVIRON_ENVP11_NOTEMPTY
+       CONFIG_LIBPOSIX_ENVIRON_ENVP11,
+#endif /* CONFIG_LIBPOSIX_ENVIRON_ENVP11_NOTEMPTY */
+#if CONFIG_LIBPOSIX_ENVIRON_ENVP12_NOTEMPTY
+       CONFIG_LIBPOSIX_ENVIRON_ENVP12,
+#endif /* CONFIG_LIBPOSIX_ENVIRON_ENVP12_NOTEMPTY */
+#if CONFIG_LIBPOSIX_ENVIRON_ENVP13_NOTEMPTY
+       CONFIG_LIBPOSIX_ENVIRON_ENVP13,
+#endif /* CONFIG_LIBPOSIX_ENVIRON_ENVP13_NOTEMPTY */
+#if CONFIG_LIBPOSIX_ENVIRON_ENVP14_NOTEMPTY
+       CONFIG_LIBPOSIX_ENVIRON_ENVP14,
+#endif /* CONFIG_LIBPOSIX_ENVIRON_ENVP14_NOTEMPTY */
+#if CONFIG_LIBPOSIX_ENVIRON_ENVP15_NOTEMPTY
+       CONFIG_LIBPOSIX_ENVIRON_ENVP15,
+#endif /* CONFIG_LIBPOSIX_ENVIRON_ENVP15_NOTEMPTY */
+       NULL /* termination */
+};
+
+char **__environ = __ct_env;