Move registry helper code into common
authorAndre Heinecke <aheinecke@intevation.de>
Fri, 2 Mar 2018 13:32:08 +0000 (14:32 +0100)
committerAndre Heinecke <aheinecke@intevation.de>
Fri, 2 Mar 2018 13:32:08 +0000 (14:32 +0100)
* src/common.c (load_extension_value, store_extension_value),
(store_config_value, load_config_value, expand_path): Moved
from config-dialog.c
* src/config-dialog.c: Remove moved functions.

src/common.c
src/config-dialog.c

index 724aebe..8997b16 100644 (file)
@@ -40,6 +40,9 @@
 
 #include "dialogs.h"
 
+/* Registry path to store plugin settings */
+#define GPGOL_REGPATH "Software\\GNU\\GpgOL"
+
 HINSTANCE glob_hinst = NULL;
 
 void
@@ -1057,3 +1060,121 @@ gpgol_message_box (HWND parent, const char *utf8_text,
   xfree (w_caption);
   return ret;
 }
+
+static char*
+expand_path (const char *path)
+{
+  DWORD len;
+  char *p;
+
+  len = ExpandEnvironmentStrings (path, NULL, 0);
+  if (!len)
+    {
+      return NULL;
+    }
+  len += 1;
+  p = xcalloc (1, len+1);
+  if (!p)
+    {
+      return NULL;
+    }
+  len = ExpandEnvironmentStrings (path, p, len);
+  if (!len)
+    {
+      xfree (p);
+      return NULL;
+    }
+  return p;
+}
+
+static int
+load_config_value (HKEY hk, const char *path, const char *key, char **val)
+{
+  HKEY h;
+  DWORD size=0, type;
+  int ec;
+
+  *val = NULL;
+  if (hk == NULL)
+    {
+      hk = HKEY_CURRENT_USER;
+    }
+  ec = RegOpenKeyEx (hk, path, 0, KEY_READ, &h);
+  if (ec != ERROR_SUCCESS)
+    {
+      return -1;
+    }
+
+  ec = RegQueryValueEx(h, key, NULL, &type, NULL, &size);
+  if (ec != ERROR_SUCCESS)
+    {
+      RegCloseKey (h);
+      return -1;
+    }
+  if (type == REG_EXPAND_SZ)
+    {
+      char tmp[256];
+      RegQueryValueEx (h, key, NULL, NULL, (BYTE*)tmp, &size);
+      *val = expand_path (tmp);
+    }
+  else
+    {
+      *val = xcalloc(1, size+1);
+      ec = RegQueryValueEx (h, key, NULL, &type, (BYTE*)*val, &size);
+      if (ec != ERROR_SUCCESS)
+        {
+          xfree (*val);
+          *val = NULL;
+          RegCloseKey (h);
+          return -1;
+        }
+    }
+  RegCloseKey (h);
+  return 0;
+}
+
+static int
+store_config_value (HKEY hk, const char *path, const char *key, const char *val)
+{
+  HKEY h;
+  int type;
+  int ec;
+
+  if (hk == NULL)
+    {
+      hk = HKEY_CURRENT_USER;
+    }
+  ec = RegCreateKeyEx (hk, path, 0, NULL, REG_OPTION_NON_VOLATILE,
+                       KEY_ALL_ACCESS, NULL, &h, NULL);
+  if (ec != ERROR_SUCCESS)
+    {
+      log_debug_w32 (ec, "creating/opening registry key `%s' failed", path);
+      return -1;
+    }
+  type = strchr (val, '%')? REG_EXPAND_SZ : REG_SZ;
+  ec = RegSetValueEx (h, key, 0, type, (const BYTE*)val, strlen (val));
+  if (ec != ERROR_SUCCESS)
+    {
+      log_debug_w32 (ec, "saving registry key `%s'->`%s' failed", path, key);
+      RegCloseKey(h);
+      return -1;
+    }
+  RegCloseKey(h);
+  return 0;
+}
+
+/* Store a key in the registry with the key given by @key and the
+   value @value. */
+int
+store_extension_value (const char *key, const char *val)
+{
+  return store_config_value (HKEY_CURRENT_USER, GPGOL_REGPATH, key, val);
+}
+
+/* Load a key from the registry with the key given by @key. The value is
+   returned in @val and needs to freed by the caller. */
+int
+load_extension_value (const char *key, char **val)
+{
+  return load_config_value (HKEY_CURRENT_USER, GPGOL_REGPATH, key, val);
+}
index 14573d2..b2663f7 100644 (file)
 #include <windows.h>
 #include <shellapi.h>
 #include <shlobj.h>
-#include <time.h>
-#include <sys/stat.h>
-#include <unistd.h>
 
 #include "common.h"
 #include "gpgol-ids.h"
 #include "dialogs.h"
 
-
-/* Registry path to store plugin settings */
-#define GPGOL_REGPATH "Software\\GNU\\GpgOL"
-
-
-static char*
-expand_path (const char *path)
-{
-    DWORD len;
-    char *p;
-
-    len = ExpandEnvironmentStrings (path, NULL, 0);
-    if (!len)
-       return NULL;
-    len += 1;
-    p = xcalloc (1, len+1);
-    if (!p)
-       return NULL;
-    len = ExpandEnvironmentStrings (path, p, len);
-    if (!len) {
-       xfree (p);
-       return NULL;
-    }
-    return p; 
-}
-
-static int
-load_config_value (HKEY hk, const char *path, const char *key, char **val)
-{
-    HKEY h;
-    DWORD size=0, type;
-    int ec;
-
-    *val = NULL;
-    if (hk == NULL)
-       hk = HKEY_CURRENT_USER;
-    ec = RegOpenKeyEx (hk, path, 0, KEY_READ, &h);
-    if (ec != ERROR_SUCCESS)
-       return -1;
-
-    ec = RegQueryValueEx(h, key, NULL, &type, NULL, &size);
-    if (ec != ERROR_SUCCESS) {
-       RegCloseKey (h);
-       return -1;
-    }
-    if (type == REG_EXPAND_SZ) {
-       char tmp[256]; /* XXX: do not use a static buf */
-       RegQueryValueEx (h, key, NULL, NULL, (BYTE*)tmp, &size);
-       *val = expand_path (tmp);
-    }
-    else {
-       *val = xcalloc(1, size+1);
-       ec = RegQueryValueEx (h, key, NULL, &type, (BYTE*)*val, &size);
-       if (ec != ERROR_SUCCESS) {
-           xfree (*val);
-           *val = NULL;
-           RegCloseKey (h);
-           return -1;
-       }
-    }
-    RegCloseKey (h);
-    return 0;
-}
-
-
-static int
-store_config_value (HKEY hk, const char *path, const char *key, const char *val)
-{
-  HKEY h;
-  int type;
-  int ec;
-  
-  if (hk == NULL)
-    hk = HKEY_CURRENT_USER;
-  ec = RegCreateKeyEx (hk, path, 0, NULL, REG_OPTION_NON_VOLATILE,
-                       KEY_ALL_ACCESS, NULL, &h, NULL);
-  if (ec != ERROR_SUCCESS)
-    {
-      log_debug_w32 (ec, "creating/opening registry key `%s' failed", path);
-      return -1;
-    }
-  type = strchr (val, '%')? REG_EXPAND_SZ : REG_SZ;
-  ec = RegSetValueEx (h, key, 0, type, (const BYTE*)val, strlen (val));
-  if (ec != ERROR_SUCCESS)
-    {
-      log_debug_w32 (ec, "saving registry key `%s'->`%s' failed", path, key);
-      RegCloseKey(h);
-      return -1;
-    }
-  RegCloseKey(h);
-  return 0;
-}
-
-
 /* To avoid writing a dialog template for each language we use gettext
    for the labels and hope that there is enough space in the dialog to
    fit teh longest translation.  */
@@ -139,8 +42,8 @@ config_dlg_set_labels (HWND dlg)
 
   for (i=0; labels[i].itemid; i++)
     SetDlgItemText (dlg, labels[i].itemid, _(labels[i].label));
-  
-}  
+
+}
 
 static BOOL CALLBACK
 config_dlg_proc (HWND dlg, UINT msg, WPARAM wparam, LPARAM lparam)
@@ -150,7 +53,7 @@ config_dlg_proc (HWND dlg, UINT msg, WPARAM wparam, LPARAM lparam)
   const char *s;
 
   (void)lparam;
-  
+
   switch (msg) 
     {
     case WM_INITDIALOG:
@@ -159,23 +62,21 @@ config_dlg_proc (HWND dlg, UINT msg, WPARAM wparam, LPARAM lparam)
       SetDlgItemText (dlg, IDC_DEBUG_LOGFILE, s? s:"");
       config_dlg_set_labels (dlg);
       break;
-      
+
     case WM_COMMAND:
       switch (LOWORD (wparam)) 
         {
-       case IDOK:
+        case IDOK:
           n = GetDlgItemText (dlg, IDC_DEBUG_LOGFILE, name, MAX_PATH-1);
           set_log_file (n>0?name:NULL);
           EndDialog (dlg, TRUE);
           break;
-       }
+        }
       break;
     }
-  
   return FALSE;
 }
 
-
 /* Display GPG configuration dialog. */
 void
 config_dialog_box (HWND parent)
@@ -193,21 +94,3 @@ config_dialog_box (HWND parent)
   (void)config_dlg_proc;
 #endif
 }
-
-
-
-/* Store a key in the registry with the key given by @key and the 
-   value @value. */
-int
-store_extension_value (const char *key, const char *val)
-{
-    return store_config_value (HKEY_CURRENT_USER, GPGOL_REGPATH, key, val);
-}
-
-/* Load a key from the registry with the key given by @key. The value is
-   returned in @val and needs to freed by the caller. */
-int
-load_extension_value (const char *key, char **val)
-{
-    return load_config_value (HKEY_CURRENT_USER, GPGOL_REGPATH, key, val);
-}