[gnome-builder] threading: add a set_environ helper



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]