mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2025-02-24 14:51:11 +01:00
Add set_environment_variable_in_smartlist
This commit is contained in:
parent
0ba93e184a
commit
d37a1ec8c6
2 changed files with 29 additions and 0 deletions
|
@ -3853,6 +3853,30 @@ get_current_process_environment_variables(void)
|
|||
return sl;
|
||||
}
|
||||
|
||||
/** For each string s in <b>env_vars</b> such that
|
||||
* environment_variable_names_equal(s, <b>new_var</b>), remove it; if
|
||||
* <b>free_p</b> is non-zero, call <b>free_old</b>(s). If
|
||||
* <b>new_var</b> contains '=', insert it into <b>env_vars</b>. */
|
||||
void
|
||||
set_environment_variable_in_smartlist(struct smartlist_t *env_vars,
|
||||
const char *new_var,
|
||||
void (*free_old)(void*),
|
||||
int free_p)
|
||||
{
|
||||
SMARTLIST_FOREACH_BEGIN(env_vars, const char *, s) {
|
||||
if (environment_variable_names_equal(s, new_var)) {
|
||||
SMARTLIST_DEL_CURRENT(env_vars, s);
|
||||
if (free_p) {
|
||||
free_old((void *)s);
|
||||
}
|
||||
}
|
||||
} SMARTLIST_FOREACH_END(s);
|
||||
|
||||
if (strchr(new_var, '=') != NULL) {
|
||||
smartlist_add(env_vars, (void *)new_var);
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef _WIN32
|
||||
/** Read from a handle <b>h</b> into <b>buf</b>, up to <b>count</b> bytes. If
|
||||
* <b>hProcess</b> is NULL, the function will return immediately if there is
|
||||
|
|
|
@ -396,6 +396,11 @@ void process_environment_free(process_environment_t *env);
|
|||
|
||||
struct smartlist_t *get_current_process_environment_variables(void);
|
||||
|
||||
void set_environment_variable_in_smartlist(struct smartlist_t *env_vars,
|
||||
const char *new_var,
|
||||
void (*free_old)(void*),
|
||||
int free_p);
|
||||
|
||||
/* Values of process_handle_t.status. PROCESS_STATUS_NOTRUNNING must be
|
||||
* 0 because tor_check_port_forwarding depends on this being the initial
|
||||
* statue of the static instance of process_handle_t */
|
||||
|
|
Loading…
Add table
Reference in a new issue