From 05f78de383404e083fb37f02b8c4112c483e257a Mon Sep 17 00:00:00 2001 From: varun-r-mallya Date: Sat, 22 Feb 2025 15:22:47 +0530 Subject: [PATCH] sysprof-greeter: add environment variable handling in profiler creation. Refactor pending. Signed-off-by: varun-r-mallya --- src/sysprof/sysprof-greeter.c | 32 ++++++++++++++++++++++++ src/sysprof/sysprof-recording-template.c | 1 + 2 files changed, 33 insertions(+) diff --git a/src/sysprof/sysprof-greeter.c b/src/sysprof/sysprof-greeter.c index 6f70ef98..332a9b1e 100644 --- a/src/sysprof/sysprof-greeter.c +++ b/src/sysprof/sysprof-greeter.c @@ -208,6 +208,23 @@ sysprof_greeter_create_profiler (SysprofGreeter *self, g_assert (SYSPROF_IS_GREETER (self)); + if (self->envvars) + { + guint n_items = g_list_model_get_n_items (G_LIST_MODEL (self->envvars)); + g_autofree char **envvars = g_new0 (char *, n_items + 1); + + for (guint i = 0; i < n_items; i++) + { + GtkStringObject *str_obj = g_list_model_get_item (G_LIST_MODEL (self->envvars), i); + + envvars[i] = g_strdup (gtk_string_object_get_string (str_obj)); + } + + g_object_set (self->recording_template, + "environ", envvars, + NULL); + } + if ((strobj = adw_combo_row_get_selected_item (self->power_combo)) && (str = gtk_string_object_get_string (strobj))) g_object_set (self->recording_template, @@ -606,6 +623,21 @@ sysprof_greeter_init (SysprofGreeter *self) create_envvar_row_cb, self, NULL); + if (self->recording_template) + { + g_auto(GStrv) environ = NULL; + g_object_get (self->recording_template, + "environ", &environ, + NULL); + if (environ) + { + for (guint i = 0; environ[i]; i++) + { + gtk_string_list_append (self->envvars, environ[i]); + } + } + } + row = gtk_list_box_get_row_at_index (self->sidebar_list_box, 0); gtk_list_box_select_row (self->sidebar_list_box, row); sidebar_row_activated_cb (self, row, self->sidebar_list_box); diff --git a/src/sysprof/sysprof-recording-template.c b/src/sysprof/sysprof-recording-template.c index 823ef042..3d7646de 100644 --- a/src/sysprof/sysprof-recording-template.c +++ b/src/sysprof/sysprof-recording-template.c @@ -491,6 +491,7 @@ sysprof_recording_template_init (SysprofRecordingTemplate *self) self->system_log = TRUE; self->command_line = g_strdup (""); self->cwd = g_strdup(""); + self->environ = g_strdupv((char * []) { NULL }); self->stack_size = DEFAULT_STACK_SIZE; }