diff options
author | Christian Persch <chpe@src.gnome.org> | 2023-02-03 21:39:12 +0100 |
---|---|---|
committer | Christian Persch <chpe@src.gnome.org> | 2023-02-03 21:39:12 +0100 |
commit | 720927a8cb7f6801b1e1d77cca144c60d868c8d8 (patch) | |
tree | 12211936f0caa83bebdd7789463e91fda6552ff3 | |
parent | ee3e72324e391bdec49b2b5cd637ae0e9d5d496f (diff) | |
download | gnome-terminal-720927a8cb7f6801b1e1d77cca144c60d868c8d8.tar.gz |
all: Make env filtering uniform
Factor out the method for exclusion from the blocklist, and
update the filtering in TerminalScreen to apply the same filtering
as the one in the remoting code.
-rw-r--r-- | src/terminal-client-utils.cc | 24 | ||||
-rw-r--r-- | src/terminal-client-utils.hh | 2 | ||||
-rw-r--r-- | src/terminal-screen.cc | 3 |
3 files changed, 18 insertions, 11 deletions
diff --git a/src/terminal-client-utils.cc b/src/terminal-client-utils.cc index 9e799611..cea473e4 100644 --- a/src/terminal-client-utils.cc +++ b/src/terminal-client-utils.cc @@ -293,6 +293,18 @@ terminal_client_get_environment_prefix_filters_excludes(void) return filters; } +bool +terminal_client_get_environment_prefix_filters_is_excluded(char const* env) +{ + auto const excludes = terminal_client_get_environment_prefix_filters_excludes(); + for (auto j = 0; excludes[j]; ++j) { + if (g_str_equal(excludes[j], env)) + return true; + } + + return false; +} + static char** terminal_environ_unsetenv_prefix (char** envv, char const* prefix) @@ -308,17 +320,7 @@ terminal_environ_unsetenv_prefix (char** envv, g_assert(equal != nullptr); gs_free char* env = g_strndup(envv[i], equal - envv[i]); - auto excluded = false; - auto const excludes = terminal_client_get_environment_prefix_filters_excludes(); - for (auto j = 0; excludes[j]; ++j) { - if (!g_str_equal(excludes[j], env)) - continue; - - excluded = true; - break; - } - - if (excluded) + if (terminal_client_get_environment_prefix_filters_is_excluded(env)) continue; envv = g_environ_unsetenv (envv, env); diff --git a/src/terminal-client-utils.hh b/src/terminal-client-utils.hh index faf0c5ed..4771acf9 100644 --- a/src/terminal-client-utils.hh +++ b/src/terminal-client-utils.hh @@ -64,6 +64,8 @@ char const* const* terminal_client_get_environment_filters (void); char const* const* terminal_client_get_environment_prefix_filters (void); +bool terminal_client_get_environment_prefix_filters_is_excluded(char const* env); + char** terminal_client_filter_environment (char** envv) G_GNUC_MALLOC; G_END_DECLS diff --git a/src/terminal-screen.cc b/src/terminal-screen.cc index 368094d3..ea6bffef 100644 --- a/src/terminal-screen.cc +++ b/src/terminal-screen.cc @@ -1416,6 +1416,9 @@ remove_prefixed_cb(void* key, auto const env = reinterpret_cast<char const*>(key); auto const prefix = reinterpret_cast<char const*>(user_data); + if (terminal_client_get_environment_prefix_filters_is_excluded(env)) + return false; + return g_str_has_prefix(env, prefix); } |