[kdbus] Fix problem with receiving async messages
[platform/upstream/glib.git] / gio / tests / gsubprocess-testprog.c
index e0903dd..7457246 100644 (file)
@@ -4,8 +4,11 @@
 #include <stdlib.h>
 #include <errno.h>
 #ifdef G_OS_UNIX
+#include <unistd.h>
 #include <gio/gunixinputstream.h>
 #include <gio/gunixoutputstream.h>
+#else
+#include <io.h>
 #endif
 
 static GOptionEntry options[] = {
@@ -19,7 +22,7 @@ write_all (int           fd,
 {
   while (len > 0)
     {
-      ssize_t bytes_written = write (fd, buf, len);
+      gssize bytes_written = write (fd, buf, len);
       if (bytes_written < 0)
        g_error ("Failed to write to fd %d: %s",
                 fd, strerror (errno));
@@ -146,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)
 {
@@ -189,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]);