summaryrefslogtreecommitdiffstats
path: root/common/sysutils.c
diff options
context:
space:
mode:
authorWerner Koch <wk@gnupg.org>2020-01-13 15:20:49 +0100
committerWerner Koch <wk@gnupg.org>2020-01-13 15:20:49 +0100
commit14aa797bb8f3f7d3f4ef66b8fcdac7439000b49a (patch)
tree567994ec316fd28c8efa2c9b1849a4cd43052592 /common/sysutils.c
parentscd: Fix memory leak in command READKEY. (diff)
downloadgnupg2-14aa797bb8f3f7d3f4ef66b8fcdac7439000b49a.tar.xz
gnupg2-14aa797bb8f3f7d3f4ef66b8fcdac7439000b49a.zip
gpg,sm: Avoid useless ASFW diagnostic in loopback mode.
* common/sysutils.c (inhibit_set_foregound_window): New var. (gnupg_inhibit_set_foregound_window): New func. (gnupg_allow_set_foregound_window): Use var. * g10/gpg.c (main): Inhibit in loopback mode. * sm/gpgsm.c (main): Ditto. -- Signed-off-by: Werner Koch <wk@gnupg.org>
Diffstat (limited to 'common/sysutils.c')
-rw-r--r--common/sysutils.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/common/sysutils.c b/common/sysutils.c
index f2abd924e..df8ce9d1b 100644
--- a/common/sysutils.c
+++ b/common/sysutils.c
@@ -87,6 +87,11 @@
* an explanation of these file names. */
static int allow_special_filenames;
+#ifdef HAVE_W32_SYSTEM
+/* State of gnupg_inhibit_set_foregound_window. */
+static int inhibit_set_foregound_window;
+#endif
+
static GPGRT_INLINE gpg_error_t
my_error_from_syserror (void)
@@ -612,6 +617,20 @@ gnupg_reopen_std (const char *pgmname)
}
+/* Inhibit calls to AllowSetForegroundWindow on Windows. Calling this
+ * with YES set to true calls to gnupg_allow_set_foregound_window are
+ * shunted. */
+void
+gnupg_inhibit_set_foregound_window (int yes)
+{
+#ifdef HAVE_W32_SYSTEM
+ inhibit_set_foregound_window = yes;
+#else
+ (void)yes;
+#endif
+}
+
+
/* Hack required for Windows. */
void
gnupg_allow_set_foregound_window (pid_t pid)
@@ -620,6 +639,8 @@ gnupg_allow_set_foregound_window (pid_t pid)
log_info ("%s called with invalid pid %lu\n",
"gnupg_allow_set_foregound_window", (unsigned long)pid);
#if defined(HAVE_W32_SYSTEM) && !defined(HAVE_W32CE_SYSTEM)
+ else if (inhibit_set_foregound_window)
+ ;
else if (!AllowSetForegroundWindow ((pid_t)pid == (pid_t)(-1)?ASFW_ANY:pid))
log_info ("AllowSetForegroundWindow(%lu) failed: %s\n",
(unsigned long)pid, w32_strerror (-1));