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:36 +0100 |
commit | c383030cfb4012c5657494842880e7eb4c2820cf (patch) | |
tree | 4f520e757f99f136e01abe1dd2e0d1fad5c3cd11 | |
parent | 782481500124e02bfbf7ab7a5c8b437331ce33b0 (diff) | |
download | gnome-terminal-3.46.8.tar.gz |
all: Make env filtering uniform3.46.8
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.
(cherry picked from commit 720927a8cb7f6801b1e1d77cca144c60d868c8d8)
-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 8d1606aa..a559f7f9 100644 --- a/src/terminal-screen.cc +++ b/src/terminal-screen.cc @@ -1419,6 +1419,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); } |