diff options
-rw-r--r-- | events.c | 2 | ||||
-rw-r--r-- | uzbl-core.c | 15 | ||||
-rw-r--r-- | uzbl-core.h | 5 |
3 files changed, 10 insertions, 12 deletions
@@ -120,7 +120,7 @@ send_event(int type, const gchar *details, const gchar *custom_event) { /* expand shell vars */ if(details) { buf = g_strdup(details); - p_val = parseenv(g_strdup(buf ? g_strchug(buf) : " ")); + p_val = parseenv(buf ? g_strchug(buf) : " "); g_free(buf); } diff --git a/uzbl-core.c b/uzbl-core.c index 9e3d4ce..2cf5bd8 100644 --- a/uzbl-core.c +++ b/uzbl-core.c @@ -442,21 +442,22 @@ find_existing_file(gchar* path_list) { } +/* Returns a new string with environment $variables expanded */ gchar* -parseenv (char* string) { +parseenv (gchar* string) { extern char** environ; - gchar* tmpstr = NULL; + gchar* tmpstr = NULL, * out; int i = 0; + out = g_strdup(string); while (environ[i] != NULL) { gchar** env = g_strsplit (environ[i], "=", 2); gchar* envname = g_strconcat ("$", env[0], NULL); if (g_strrstr (string, envname) != NULL) { - tmpstr = g_strdup(string); - g_free (string); - string = str_replace(envname, env[1], tmpstr); + tmpstr = out; + out = str_replace(envname, env[1], out); g_free (tmpstr); } @@ -465,7 +466,7 @@ parseenv (char* string) { i++; } - return string; + return out; } sigfunc* @@ -666,7 +667,7 @@ set_var(WebKitWebView *page, GArray *argv, GString *result) { (void) page; (void) result; gchar **split = g_strsplit(argv_idx(argv, 0), "=", 2); if (split[0] != NULL) { - gchar *value = parseenv(g_strdup(split[1] ? g_strchug(split[1]) : " ")); + gchar *value = parseenv(split[1] ? g_strchug(split[1]) : " "); set_var_value(g_strstrip(split[0]), value); g_free(value); } diff --git a/uzbl-core.h b/uzbl-core.h index a7a8126..c261074 100644 --- a/uzbl-core.h +++ b/uzbl-core.h @@ -231,7 +231,7 @@ GArray* read_file_by_line (const gchar *path); gchar* -parseenv (char* string); +parseenv (gchar* string); void clean_up(void); @@ -242,9 +242,6 @@ catch_sigterm(int s); sigfunc * setup_signal(int signe, sigfunc *shandler); -gchar* -parseenv (char* string); - gboolean set_var_value(const gchar *name, gchar *val); |