summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Persch <chpe@src.gnome.org>2023-02-03 21:39:12 +0100
committerChristian Persch <chpe@src.gnome.org>2023-02-03 21:39:36 +0100
commitc383030cfb4012c5657494842880e7eb4c2820cf (patch)
tree4f520e757f99f136e01abe1dd2e0d1fad5c3cd11
parent782481500124e02bfbf7ab7a5c8b437331ce33b0 (diff)
downloadgnome-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.cc24
-rw-r--r--src/terminal-client-utils.hh2
-rw-r--r--src/terminal-screen.cc3
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);
}