summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndre Heinecke <aheinecke@intevation.de>2018-02-09 16:07:58 +0100
committerAndre Heinecke <aheinecke@intevation.de>2018-02-09 16:11:32 +0100
commit201db83a7f1b7759173b6e9f0a844caef4da6cce (patch)
treef895c794b498c57908dea9d87c726bce91b55a0f
parentf10605ffb5cc9d457c3e432918fdfbfaf3d04185 (diff)
downloadgpgme-201db83a7f1b7759173b6e9f0a844caef4da6cce.tar.gz
core, w32: Enable spawning GUI applications
* 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
-rw-r--r--src/engine-spawn.c3
-rw-r--r--src/gpgme-w32spawn.c4
-rw-r--r--src/gpgme.h.in1
-rw-r--r--src/priv-io.h2
4 files changed, 6 insertions, 4 deletions
diff --git a/src/engine-spawn.c b/src/engine-spawn.c
index 7044781b..7f78bb50 100644
--- a/src/engine-spawn.c
+++ b/src/engine-spawn.c
@@ -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)
diff --git a/src/gpgme-w32spawn.c b/src/gpgme-w32spawn.c
index d86c8508..868dbd57 100644
--- a/src/gpgme-w32spawn.c
+++ b/src/gpgme-w32spawn.c
@@ -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);
diff --git a/src/gpgme.h.in b/src/gpgme.h.in
index 31a90609..ff80023e 100644
--- a/src/gpgme.h.in
+++ b/src/gpgme.h.in
@@ -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
diff --git a/src/priv-io.h b/src/priv-io.h
index 23061756..bc9d3d53 100644
--- a/src/priv-io.h
+++ b/src/priv-io.h
@@ -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