[gnome-builder] environment: add ide_environment_copy_into()
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] environment: add ide_environment_copy_into()
- Date: Sat, 9 Sep 2017 01:15:38 +0000 (UTC)
commit 3648b853af578e53151b63a726600319e9d401ab
Author: Christian Hergert <chergert redhat com>
Date: Fri Sep 8 18:13:27 2017 -0700
environment: add ide_environment_copy_into()
This adds a helper that lets you copy the contents of an IdeEnvironment
into another IdeEnvironment.
libide/buildsystem/ide-environment.c | 22 ++++++++++++++++------
libide/buildsystem/ide-environment.h | 3 +++
2 files changed, 19 insertions(+), 6 deletions(-)
---
diff --git a/libide/buildsystem/ide-environment.c b/libide/buildsystem/ide-environment.c
index 31eb9d0..d2686b3 100644
--- a/libide/buildsystem/ide-environment.c
+++ b/libide/buildsystem/ide-environment.c
@@ -291,21 +291,31 @@ ide_environment_append (IdeEnvironment *self,
IdeEnvironment *
ide_environment_copy (IdeEnvironment *self)
{
- IdeEnvironment *copy;
- guint i;
+ g_autoptr(IdeEnvironment) copy = NULL;
g_return_val_if_fail (IDE_IS_ENVIRONMENT (self), NULL);
copy = ide_environment_new ();
+ ide_environment_copy_into (self, copy, TRUE);
- for (i = 0; i < self->variables->len; i++)
+ return g_steal_pointer (©);
+}
+
+void
+ide_environment_copy_into (IdeEnvironment *self,
+ IdeEnvironment *dest,
+ gboolean replace)
+{
+ g_return_if_fail (IDE_IS_ENVIRONMENT (self));
+ g_return_if_fail (IDE_IS_ENVIRONMENT (dest));
+
+ for (guint i = 0; i < self->variables->len; i++)
{
IdeEnvironmentVariable *var = g_ptr_array_index (self->variables, i);
const gchar *key = ide_environment_variable_get_key (var);
const gchar *value = ide_environment_variable_get_value (var);
- ide_environment_setenv (copy, key, value);
+ if (replace || ide_environment_getenv (dest, key) == NULL)
+ ide_environment_setenv (dest, key, value);
}
-
- return copy;
}
diff --git a/libide/buildsystem/ide-environment.h b/libide/buildsystem/ide-environment.h
index 823786c..2a1c5cc 100644
--- a/libide/buildsystem/ide-environment.h
+++ b/libide/buildsystem/ide-environment.h
@@ -41,6 +41,9 @@ void ide_environment_append (IdeEnvironment *self,
void ide_environment_remove (IdeEnvironment *self,
IdeEnvironmentVariable *variable);
IdeEnvironment *ide_environment_copy (IdeEnvironment *self);
+void ide_environment_copy_into (IdeEnvironment *self,
+ IdeEnvironment *dest,
+ gboolean replace);
G_END_DECLS
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]