[gnome-builder] threading: add helper to join argv
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] threading: add helper to join argv
- Date: Fri, 3 May 2019 04:02:33 +0000 (UTC)
commit a9fe7158be934fe36baf7d70ac6921eaf4bf9a80
Author: Christian Hergert <chergert redhat com>
Date: Thu May 2 20:54:44 2019 -0700
threading: add helper to join argv
This is useful when changing things to be sh -c opts style of
execution.
src/libide/threading/ide-subprocess-launcher.c | 28 ++++++++++++++++++++++++++
src/libide/threading/ide-subprocess-launcher.h | 3 +++
2 files changed, 31 insertions(+)
---
diff --git a/src/libide/threading/ide-subprocess-launcher.c b/src/libide/threading/ide-subprocess-launcher.c
index 4a06dddd3..b692e16fc 100644
--- a/src/libide/threading/ide-subprocess-launcher.c
+++ b/src/libide/threading/ide-subprocess-launcher.c
@@ -1173,3 +1173,31 @@ ide_subprocess_launcher_get_arg (IdeSubprocessLauncher *self,
return NULL;
}
+
+void
+ide_subprocess_launcher_join_args_for_sh_c (IdeSubprocessLauncher *self,
+ guint start_pos)
+{
+ IdeSubprocessLauncherPrivate *priv = ide_subprocess_launcher_get_instance_private (self);
+ const gchar * const *argv;
+ GString *str;
+
+ g_return_if_fail (IDE_IS_SUBPROCESS_LAUNCHER (self));
+ g_return_if_fail (start_pos < priv->argv->len - 1);
+
+ str = g_string_new (NULL);
+ argv = ide_subprocess_launcher_get_argv (self);
+
+ for (guint i = start_pos; argv[i] != NULL; i++)
+ {
+ g_autofree gchar *quoted_string = g_shell_quote (argv[i]);
+
+ if (i > 0)
+ g_string_append_c (str, ' ');
+ g_string_append (str, quoted_string);
+ }
+
+ g_ptr_array_remove_range (priv->argv, start_pos, priv->argv->len - start_pos);
+ g_ptr_array_add (priv->argv, g_string_free (g_steal_pointer (&str), FALSE));
+ g_ptr_array_add (priv->argv, NULL);
+}
diff --git a/src/libide/threading/ide-subprocess-launcher.h b/src/libide/threading/ide-subprocess-launcher.h
index 2daa565fc..1567ff271 100644
--- a/src/libide/threading/ide-subprocess-launcher.h
+++ b/src/libide/threading/ide-subprocess-launcher.h
@@ -138,5 +138,8 @@ IDE_AVAILABLE_IN_3_32
gboolean ide_subprocess_launcher_get_needs_tty (IdeSubprocessLauncher *self);
IDE_AVAILABLE_IN_3_34
gint ide_subprocess_launcher_get_max_fd (IdeSubprocessLauncher *self);
+IDE_AVAILABLE_IN_3_34
+void ide_subprocess_launcher_join_args_for_sh_c (IdeSubprocessLauncher *self,
+ guint start_pos);
G_END_DECLS
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]