[kdbus] Integrate kdbus core with new API.
[platform/upstream/glib.git] / gio / tests / gsubprocess-testprog.c
index df865f6..7457246 100644 (file)
@@ -7,6 +7,8 @@
 #include <unistd.h>
 #include <gio/gunixinputstream.h>
 #include <gio/gunixoutputstream.h>
+#else
+#include <io.h>
 #endif
 
 static GOptionEntry options[] = {
@@ -147,6 +149,50 @@ write_to_fds (int argc, char **argv)
   return 0;
 }
 
+static int
+env_mode (int argc, char **argv)
+{
+  char **env;
+  int i;
+
+  env = g_get_environ ();
+
+  for (i = 0; env[i]; i++)
+    g_print ("%s\n", env[i]);
+
+  g_strfreev (env);
+
+  return 0;
+}
+
+static int
+cwd_mode (int argc, char **argv)
+{
+  char *cwd;
+
+  cwd = g_get_current_dir ();
+  g_print ("%s\n", cwd);
+  g_free (cwd);
+
+  return 0;
+}
+
+static int
+printenv_mode (int argc, char **argv)
+{
+  gint i;
+
+  for (i = 2; i < argc; i++)
+    {
+      const gchar *value = g_getenv (argv[i]);
+
+      if (value != NULL)
+        g_print ("%s=%s\n", argv[i], value);
+    }
+
+  return 0;
+}
+
 int
 main (int argc, char **argv)
 {
@@ -190,6 +236,12 @@ main (int argc, char **argv)
     return sleep_forever_mode (argc, argv);
   else if (strcmp (mode, "write-to-fds") == 0)
     return write_to_fds (argc, argv);
+  else if (strcmp (mode, "env") == 0)
+    return env_mode (argc, argv);
+  else if (strcmp (mode, "cwd") == 0)
+    return cwd_mode (argc, argv);
+  else if (strcmp (mode, "printenv") == 0)
+    return printenv_mode (argc, argv);
   else
     {
       g_printerr ("Unknown MODE %s\n", argv[1]);