Move get_uiserver_name into common
authorAndre Heinecke <aheinecke@intevation.de>
Tue, 18 Oct 2016 12:16:04 +0000 (14:16 +0200)
committerAndre Heinecke <aheinecke@intevation.de>
Tue, 18 Oct 2016 12:16:04 +0000 (14:16 +0200)
* src/common.c (get_uiserver_name): Added.
* src/common.h: Add prototype.
* src/engine-assuan.c (get_uiserver_name): Removed.

src/common.c
src/common.h
src/engine-assuan.c

index 42598f9..777f085 100644 (file)
@@ -853,3 +853,75 @@ format_date_from_gpgme (unsigned long time)
     }
   return wchar_to_utf8 (buf);
 }
+
+/* Return the name of the default UI server.  This name is used to
+   auto start an UI server if an initial connect failed.  */
+char *
+get_uiserver_name (void)
+{
+  char *name = NULL;
+  char *dir, *uiserver, *p;
+  int extra_arglen = 9;
+
+  const char * server_names[] = {"kleopatra.exe",
+                                 "bin\\kleopatra.exe",
+                                 "gpa.exe",
+                                 "bin\\gpa.exe",
+                                 NULL};
+  const char **tmp = NULL;
+
+  dir = get_gpg4win_dir ();
+  if (!dir)
+    {
+      log_error ("Failed to find gpg4win dir");
+      return NULL;
+    }
+  uiserver = read_w32_registry_string (NULL, GPG4WIN_REGKEY_3,
+                                       "UI Server");
+  if (!uiserver)
+    {
+      uiserver = read_w32_registry_string (NULL, GPG4WIN_REGKEY_2,
+                                           "UI Server");
+    }
+  if (uiserver)
+    {
+      name = xmalloc (strlen (dir) + strlen (uiserver) + extra_arglen + 2);
+      strcpy (stpcpy (stpcpy (name, dir), "\\"), uiserver);
+      for (p = name; *p; p++)
+        if (*p == '/')
+          *p = '\\';
+      xfree (uiserver);
+    }
+  if (name && !access (name, F_OK))
+    {
+      /* Set through registry and is accessible */
+      xfree(dir);
+      return name;
+    }
+  /* Fallbacks */
+  for (tmp = server_names; *tmp; tmp++)
+    {
+      if (name)
+        {
+          xfree (name);
+        }
+      name = xmalloc (strlen (dir) + strlen (*tmp) + extra_arglen + 2);
+      strcpy (stpcpy (stpcpy (name, dir), "\\"), *tmp);
+      for (p = name; *p; p++)
+        if (*p == '/')
+          *p = '\\';
+      if (!access (name, F_OK))
+        {
+          /* Found a viable candidate */
+          if (strstr (name, "kleopatra.exe"))
+            {
+              strcat (name, " --daemon");
+            }
+          xfree (dir);
+          return name;
+        }
+    }
+  xfree (dir);
+  log_error ("Failed to find a viable UIServer");
+  return NULL;
+}
index 70b4ee7..796a8f8 100644 (file)
@@ -116,8 +116,13 @@ char *percent_escape (const char *str, const char *extra);
 
 void fix_linebreaks (char *str, int *len);
 
+/* Format a date from gpgme (seconds since epoch)
+   with windows system locale. */
 char *format_date_from_gpgme (unsigned long time);
 
+/* Get the name of the uiserver */
+char *get_uiserver_name (void);
+
 /*-- main.c --*/
 const void *get_128bit_session_key (void);
 const void *get_64bit_session_marker (void);
index 5375563..ac56d53 100644 (file)
@@ -338,79 +338,6 @@ get_socket_name (void)
 }
 
 
-/* Return the name of the default UI server.  This name is used to
-   auto start an UI server if an initial connect failed.  */
-static char *
-get_uiserver_name (void)
-{
-  char *name = NULL;
-  char *dir, *uiserver, *p;
-  int extra_arglen = 9;
-
-  const char * server_names[] = {"kleopatra.exe",
-                                 "bin\\kleopatra.exe",
-                                 "gpa.exe",
-                                 "bin\\gpa.exe",
-                                 NULL};
-  const char **tmp = NULL;
-
-  dir = get_gpg4win_dir ();
-  if (!dir)
-    {
-      log_error ("Failed to find gpg4win dir");
-      return NULL;
-    }
-  uiserver = read_w32_registry_string (NULL, GPG4WIN_REGKEY_3,
-                                       "UI Server");
-  if (!uiserver)
-    {
-      uiserver = read_w32_registry_string (NULL, GPG4WIN_REGKEY_2,
-                                           "UI Server");
-    }
-  if (uiserver)
-    {
-      name = xmalloc (strlen (dir) + strlen (uiserver) + extra_arglen + 2);
-      strcpy (stpcpy (stpcpy (name, dir), "\\"), uiserver);
-      for (p = name; *p; p++)
-        if (*p == '/')
-          *p = '\\';
-      xfree (uiserver);
-    }
-  if (name && !access (name, F_OK))
-    {
-      /* Set through registry and is accessible */
-      xfree(dir);
-      return name;
-    }
-  /* Fallbacks */
-  for (tmp = server_names; *tmp; tmp++)
-    {
-      if (name)
-        {
-          xfree (name);
-        }
-      name = xmalloc (strlen (dir) + strlen (*tmp) + extra_arglen + 2);
-      strcpy (stpcpy (stpcpy (name, dir), "\\"), *tmp);
-      for (p = name; *p; p++)
-        if (*p == '/')
-          *p = '\\';
-      if (!access (name, F_OK))
-        {
-          /* Found a viable candidate */
-          if (strstr (name, "kleopatra.exe"))
-            {
-              strcat (name, " --daemon");
-            }
-          xfree (dir);
-          return name;
-        }
-    }
-  xfree (dir);
-  log_error ("Failed to find a viable UIServer");
-  return NULL;
-}
-
-
 static gpg_error_t
 send_one_option (assuan_context_t ctx, const char *name, const char *value)
 {