agent,scd: Use pointer to represent HANDLE.
authorNIIBE Yutaka <gniibe@fsij.org>
Tue, 27 Mar 2018 07:24:17 +0000 (16:24 +0900)
committerNIIBE Yutaka <gniibe@fsij.org>
Tue, 27 Mar 2018 07:24:17 +0000 (16:24 +0900)
* agent/call-scd.c [HAVE_W32_SYSTEM] (start_scd): Format with %p.
* scd/command.c [HAVE_W32_SYSTEM] (option_handler): Use void *.

Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
agent/call-scd.c
scd/command.c

index cf61a35..16139fd 100644 (file)
@@ -404,8 +404,8 @@ start_scd (ctrl_t ctrl)
       char buf[100];
 
 #ifdef HAVE_W32_SYSTEM
-      snprintf (buf, sizeof buf, "OPTION event-signal=%lx",
-                (unsigned long)get_agent_scd_notify_event ());
+      snprintf (buf, sizeof buf, "OPTION event-signal=%p",
+                get_agent_scd_notify_event ());
 #else
       snprintf (buf, sizeof buf, "OPTION event-signal=%d", SIGUSR2);
 #endif
index 7011518..66d9fb9 100644 (file)
@@ -79,7 +79,7 @@ struct server_local_s
   assuan_context_t assuan_ctx;
 
 #ifdef HAVE_W32_SYSTEM
-  unsigned long event_signal;   /* Or 0 if not used. */
+  void *event_signal;           /* Or NULL if not used. */
 #else
   int event_signal;             /* Or 0 if not used. */
 #endif
@@ -178,7 +178,11 @@ option_handler (assuan_context_t ctx, const char *key, const char *value)
 #ifdef HAVE_W32_SYSTEM
       if (!*value)
         return gpg_error (GPG_ERR_ASS_PARAMETER);
-      ctrl->server_local->event_signal = strtoul (value, NULL, 16);
+#ifdef _WIN64
+      ctrl->server_local->event_signal = (void *)strtoull (value, NULL, 16);
+#else
+      ctrl->server_local->event_signal = (void *)strtoul (value, NULL, 16);
+#endif
 #else
       int i = *value? atoi (value) : -1;
       if (i < 0)
@@ -1933,20 +1937,20 @@ send_client_notifications (app_t app, int removal)
         pid = assuan_get_pid (sl->assuan_ctx);
 
 #ifdef HAVE_W32_SYSTEM
-        handle = (void *)sl->event_signal;
+        handle = sl->event_signal;
         for (kidx=0; kidx < killidx; kidx++)
           if (killed[kidx].pid == pid
               && killed[kidx].handle == handle)
             break;
         if (kidx < killidx)
-          log_info ("event %lx (%p) already triggered for client %d\n",
+          log_info ("event %p (%p) already triggered for client %d\n",
                     sl->event_signal, handle, (int)pid);
         else
           {
-            log_info ("triggering event %lx (%p) for client %d\n",
+            log_info ("triggering event %p (%p) for client %d\n",
                       sl->event_signal, handle, (int)pid);
             if (!SetEvent (handle))
-              log_error ("SetEvent(%lx) failed: %s\n",
+              log_error ("SetEvent(%p) failed: %s\n",
                          sl->event_signal, w32_strerror (-1));
             if (killidx < DIM (killed))
               {