[gnome-builder] threading: add a set_environ helper
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] threading: add a set_environ helper
- Date: Thu, 8 Aug 2019 20:16:49 +0000 (UTC)
commit c7599b3d42e573fbb0450faadb5c26552ac92e41
Author: Christian Hergert <chergert redhat com>
Date: Thu Aug 8 13:07:20 2019 -0700
threading: add a set_environ helper
This is convenience to not have to duplicate code that parses all the
key/value pairs to put into variable objects.
src/libide/threading/ide-environment.c | 29 +++++++++++++++++++++++++++++
src/libide/threading/ide-environment.h | 3 +++
2 files changed, 32 insertions(+)
---
diff --git a/src/libide/threading/ide-environment.c b/src/libide/threading/ide-environment.c
index 41f8e6350..ab23df669 100644
--- a/src/libide/threading/ide-environment.c
+++ b/src/libide/threading/ide-environment.c
@@ -247,6 +247,35 @@ ide_environment_get_environ (IdeEnvironment *self)
return (gchar **)g_ptr_array_free (ar, FALSE);
}
+void
+ide_environment_set_environ (IdeEnvironment *self,
+ const gchar * const *env)
+{
+ guint len;
+
+ g_return_if_fail (IDE_IS_ENVIRONMENT (self));
+
+ len = self->variables->len;
+
+ if (len > 0)
+ {
+ g_ptr_array_remove_range (self->variables, 0, len);
+ g_list_model_items_changed (G_LIST_MODEL (self), 0, len, 0);
+ }
+
+ if (env != NULL)
+ {
+ for (guint i = 0; env[i]; i++)
+ {
+ g_autofree gchar *key = NULL;
+ g_autofree gchar *val = NULL;
+
+ if (ide_environ_parse (env[i], &key, &val))
+ ide_environment_setenv (self, key, val);
+ }
+ }
+}
+
IdeEnvironment *
ide_environment_new (void)
{
diff --git a/src/libide/threading/ide-environment.h b/src/libide/threading/ide-environment.h
index abc136093..e53c18b54 100644
--- a/src/libide/threading/ide-environment.h
+++ b/src/libide/threading/ide-environment.h
@@ -63,5 +63,8 @@ IDE_AVAILABLE_IN_3_32
void ide_environment_copy_into (IdeEnvironment *self,
IdeEnvironment *dest,
gboolean replace);
+IDE_AVAILABLE_IN_3_34
+void ide_environment_set_environ (IdeEnvironment *self,
+ const gchar * const *env);
G_END_DECLS
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]