const char * util_interp_setenv( const char * variable , const char * value) { char * interp_value = util_alloc_envvar( value ); if (interp_value != NULL) { util_setenv( variable , interp_value); free( interp_value ); } else util_unsetenv( variable ); return getenv( variable ); }
void site_config_clear_pathvar( site_config_type * site_config ) { stringlist_clear( site_config->path_variables_user ); stringlist_clear( site_config->path_values_user ); { /* Recover the original values. */ hash_iter_type * hash_iter = hash_iter_alloc( site_config->path_variables_site ); while (!hash_iter_is_complete( hash_iter )) { const char * var = hash_iter_get_next_key( hash_iter ); const char * site_value = hash_get( site_config->path_variables_site , var ); if (site_value == NULL) util_unsetenv( var ); else util_setenv( var , site_value ); } } }
void site_config_clear_env( site_config_type * site_config ) { /* 1: Clearing the user_set variables. */ { hash_iter_type * hash_iter = hash_iter_alloc( site_config->env_variables_user ); while (!hash_iter_is_complete( hash_iter )) { const char * var = hash_iter_get_next_key( hash_iter ); util_unsetenv( var ); } hash_iter_free( hash_iter ); hash_clear( site_config->env_variables_user ); } /* 2: Recovering the site_set variables. */ { hash_iter_type * hash_iter = hash_iter_alloc( site_config->env_variables_site ); while (!hash_iter_is_complete( hash_iter )) { const char * var = hash_iter_get_next_key( hash_iter ); const char * value = hash_get( site_config->env_variables_site , var ); util_interp_setenv( var , value ); /* Will call unsetenv if value == NULL */ } hash_iter_free( hash_iter ); } }