core, w32: Enable spawning GUI applications
authorAndre Heinecke <aheinecke@intevation.de>
Fri, 9 Feb 2018 15:07:58 +0000 (16:07 +0100)
committerAndre Heinecke <aheinecke@intevation.de>
Fri, 9 Feb 2018 15:11:32 +0000 (16:11 +0100)
* src/engine-spawn.c (engspawn_start): Translate spawn flag
to IOSPAWN flag.
* src/gpgme-w32spawn.c (my_spawn): Handle the new flag.
* src/gpgme.h.in (GPGME_SPAWN_SHOW_WINDOW): New.
* src/priv-io.h (IOSPAWN_FLAG_SHOW_WINDOW): New.

--
Used by GpgOL

src/engine-spawn.c
src/gpgme-w32spawn.c
src/gpgme.h.in
src/priv-io.h

index 7044781..7f78bb5 100644 (file)
@@ -241,7 +241,8 @@ engspawn_start (engine_spawn_t esp, const char *file, const char *argv[],
     spflags |= IOSPAWN_FLAG_DETACHED;
   if ((flags & GPGME_SPAWN_ALLOW_SET_FG))
     spflags |= IOSPAWN_FLAG_ALLOW_SET_FG;
-
+  if ((flags & GPGME_SPAWN_SHOW_WINDOW))
+    spflags |= IOSPAWN_FLAG_SHOW_WINDOW;
 
   err = build_fd_data_map (esp);
   if (err)
index d86c850..868dbd5 100644 (file)
@@ -121,8 +121,6 @@ my_spawn (char **argv, struct spawn_fd_item_s *fd_list, unsigned int flags)
   int duped_stdout = 0;
   int duped_stderr = 0;
   HANDLE hnul = INVALID_HANDLE_VALUE;
-  /* FIXME.  */
-  int debug_me = 0;
 
   i = 0;
   while (argv[i])
@@ -142,7 +140,7 @@ my_spawn (char **argv, struct spawn_fd_item_s *fd_list, unsigned int flags)
   memset (&si, 0, sizeof si);
   si.cb = sizeof (si);
   si.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;
-  si.wShowWindow = debug_me ? SW_SHOW : SW_HIDE;
+  si.wShowWindow = (flags & IOSPAWN_FLAG_SHOW_WINDOW) ? SW_SHOW : SW_HIDE;
   si.hStdInput = GetStdHandle (STD_INPUT_HANDLE);
   si.hStdOutput = GetStdHandle (STD_OUTPUT_HANDLE);
   si.hStdError = GetStdHandle (STD_ERROR_HANDLE);
index 31a9060..ff80023 100644 (file)
@@ -2007,6 +2007,7 @@ gpgme_error_t gpgme_op_getauditlog (gpgme_ctx_t ctx, gpgme_data_t output,
 /* Flags for the spawn operations.  */
 #define GPGME_SPAWN_DETACHED      1
 #define GPGME_SPAWN_ALLOW_SET_FG  2
+#define GPGME_SPAWN_SHOW_WINDOW   4
 
 
 /* Run the command FILE with the arguments in ARGV.  Connect stdin to
index 2306175..bc9d3d5 100644 (file)
@@ -83,6 +83,8 @@ int _gpgme_io_set_nonblocking (int fd);
 #define IOSPAWN_FLAG_ALLOW_SET_FG 2
 /* Don't close any child FDs.  */
 #define IOSPAWN_FLAG_NOCLOSE 4
+/* Set show window to true for windows */
+#define IOSPAWN_FLAG_SHOW_WINDOW 8
 
 /* Spawn the executable PATH with ARGV as arguments.  After forking
    close all fds except for those in FD_LIST in the child, then