[tor-commits] [tor/master] Add get_current_process_environment_variables
nickm at torproject.org
nickm at torproject.org
Fri Feb 17 16:46:48 UTC 2012
commit 0ba93e184ad6216f886d7347dd81fe08edbb99c7
Author: Robert Ransom <rransom.8774 at gmail.com>
Date: Sun Feb 12 20:34:52 2012 -0800
Add get_current_process_environment_variables
---
src/common/util.c | 21 +++++++++++++++++++++
src/common/util.h | 2 ++
2 files changed, 23 insertions(+), 0 deletions(-)
diff --git a/src/common/util.c b/src/common/util.c
index 5c3a85e..02a638e 100644
--- a/src/common/util.c
+++ b/src/common/util.c
@@ -3832,6 +3832,27 @@ process_environment_make(struct smartlist_t *env_vars)
return env;
}
+/** Return a newly allocated smartlist containing every variable in
+ * this process's environment, as a NUL-terminated string of the form
+ * "NAME=VALUE". Note that on some/many/most/all OSes, the parent
+ * process can put strings not of that form in our environment;
+ * callers should try to not get crashed by that.
+ *
+ * The returned strings are statically allocated, and must be treated
+ * as read-only. */
+struct smartlist_t *
+get_current_process_environment_variables(void)
+{
+ smartlist_t *sl = smartlist_new();
+
+ char **environ_tmp; /* Not const char ** ? Really? */
+ for (environ_tmp = environ; *environ_tmp; ++environ_tmp) {
+ smartlist_add(sl, (void *)(*environ_tmp));
+ }
+
+ return sl;
+}
+
#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
diff --git a/src/common/util.h b/src/common/util.h
index 3989cb4..f485446 100644
--- a/src/common/util.h
+++ b/src/common/util.h
@@ -394,6 +394,8 @@ typedef struct process_environment_t process_environment_t;
process_environment_t *process_environment_make(struct smartlist_t *env_vars);
void process_environment_free(process_environment_t *env);
+struct smartlist_t *get_current_process_environment_variables(void);
+
/* 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 */
More information about the tor-commits
mailing list