cache env strings on startup

This commit is contained in:
Nikita Smith
2025-11-19 11:24:11 -08:00
parent 08f794527c
commit a82cba0c87
2 changed files with 18 additions and 2 deletions
+16 -2
View File
@@ -811,7 +811,7 @@ os_process_launch(OS_ProcessLaunchParams *params)
char **envp = 0;
if(params->inherit_env)
{
envp = __environ;
envp = os_lnx_state.default_env;
}
else
{
@@ -1443,7 +1443,7 @@ lnx_signal_handler(int sig, siginfo_t *info, void *arg)
}
fprintf(stderr, "\nVersion: %s%s\n\n", BUILD_VERSION_STRING_LITERAL, BUILD_GIT_HASH_STRING_LITERAL_APPEND);
_exit(0);
_exit(1);
}
int
@@ -1485,6 +1485,20 @@ main(int argc, char **argv)
os_lnx_state.arena = arena_alloc();
os_lnx_state.entity_arena = arena_alloc();
pthread_mutex_init(&os_lnx_state.entity_mutex, 0);
// cache default environment
{
U64 env_count = 0;
for(; __environ[env_count] != 0; env_count += 1) {}
char **default_env = push_array(os_lnx_state.arena, char *, env_count+1);
for EachIndex(i, env_count)
{
default_env[i] = (char *)str8_copy(os_lnx_state.arena, str8_cstring(__environ[i])).str;
}
default_env[env_count] = 0;
os_lnx_state.default_env_count = env_count;
os_lnx_state.default_env = default_env;
}
//- rjf: grab dynamically allocated system info
{
+2
View File
@@ -110,6 +110,8 @@ struct OS_LNX_State
pthread_mutex_t entity_mutex;
Arena *entity_arena;
OS_LNX_Entity *entity_free;
U64 default_env_count;
char **default_env;
};
////////////////////////////////