[gnome-builder] foundry: add max_fd helper for runners



commit f48908053d0c34285960503ffa68652bd29863c7
Author: Christian Hergert <chergert redhat com>
Date:   Wed Jun 12 11:16:33 2019 -0700

    foundry: add max_fd helper for runners
    
    This is useful when we need to know what the maximum mapped FD is so that
    other systems can integrate and/or workaround those mappings.

 src/libide/foundry/ide-runner.c | 24 ++++++++++++++++++++++++
 src/libide/foundry/ide-runner.h |  2 ++
 2 files changed, 26 insertions(+)
---
diff --git a/src/libide/foundry/ide-runner.c b/src/libide/foundry/ide-runner.c
index 069463c5a..5bbc621a8 100644
--- a/src/libide/foundry/ide-runner.c
+++ b/src/libide/foundry/ide-runner.c
@@ -295,6 +295,8 @@ ide_runner_real_run_async (IdeRunner           *self,
         {
           FdMapping *map = &g_array_index (ar, FdMapping, i);
 
+          g_printerr ("DO_MAP[%d] <= %d\n", map->dest_fd, map->source_fd);
+
           ide_subprocess_launcher_take_fd (launcher, map->source_fd, map->dest_fd);
         }
     }
@@ -1504,3 +1506,25 @@ ide_runner_take_tty_fd (IdeRunner *self,
     close (priv->child_fd);
   priv->child_fd = tty_fd;
 }
+
+gint
+ide_runner_get_max_fd (IdeRunner *self)
+{
+  IdeRunnerPrivate *priv = ide_runner_get_instance_private (self);
+  gint max_fd = 2;
+
+  g_return_val_if_fail (IDE_IS_RUNNER (self), 2);
+
+  if (priv->fd_mapping != NULL)
+    {
+      for (guint i = 0; i < priv->fd_mapping->len; i++)
+        {
+          const FdMapping *map = &g_array_index (priv->fd_mapping, FdMapping, i);
+
+          if (map->dest_fd > max_fd)
+            max_fd = map->dest_fd;
+        }
+    }
+
+  return max_fd;
+}
diff --git a/src/libide/foundry/ide-runner.h b/src/libide/foundry/ide-runner.h
index f933a04d3..6c0c2f0d0 100644
--- a/src/libide/foundry/ide-runner.h
+++ b/src/libide/foundry/ide-runner.h
@@ -145,5 +145,7 @@ IdeBuildTarget    *ide_runner_get_build_target (IdeRunner            *self);
 IDE_AVAILABLE_IN_3_32
 void               ide_runner_set_build_target (IdeRunner            *self,
                                                 IdeBuildTarget       *build_target);
+IDE_AVAILABLE_IN_3_34
+gint               ide_runner_get_max_fd       (IdeRunner            *self);
 
 G_END_DECLS


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]