common/iobuf.c: Make control flow more obvious.
[gnupg.git] / common / w32-reg.c
index 3ef7a0a..6afb599 100644 (file)
@@ -1,9 +1,9 @@
 /* w32-reg.c -  MS-Windows Registry access
  * Copyright (C) 1999, 2002, 2007 Free Software Foundation, Inc.
  *
- * This file is part of JNLIB, which is a subsystem of GnuPG.
+ * This file is part of GnuPG.
  *
- * JNLIB is free software; you can redistribute it and/or modify it
+ * GnuPG is free software; you can redistribute it and/or modify it
  * under the terms of either
  *
  *   - the GNU Lesser General Public License as published by the Free
@@ -18,7 +18,7 @@
  *
  * or both in parallel, as here.
  *
- * JNLIB is distributed in the hope that it will be useful, but
+ * GnuPG is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
 #include <stdlib.h>
 #include <string.h>
 #include <stdarg.h>
+#ifdef HAVE_WINSOCK2_H
+# include <winsock2.h>
+#endif
 #include <windows.h>
 
-#include "libjnlib-config.h"
+#include "util.h"
+#include "common-defs.h"
 #include "utf8conv.h"
 #include "w32help.h"
 
@@ -92,17 +96,17 @@ read_w32_registry_string (const char *root, const char *dir, const char *name)
     {
       if (root)
         {
-          jnlib_free (wdir);
+          xfree (wdir);
           return NULL; /* No need for a RegClose, so return immediately. */
         }
       /* It seems to be common practise to fall back to HKLM. */
       if (RegOpenKeyEx (HKEY_LOCAL_MACHINE, wdir, 0, KEY_READ, &key_handle) )
         {
-          jnlib_free (wdir);
+          xfree (wdir);
           return NULL; /* Still no need for a RegClose. */
         }
     }
-  jnlib_free (wdir);
+  xfree (wdir);
 
   if (name)
     {
@@ -116,12 +120,12 @@ read_w32_registry_string (const char *root, const char *dir, const char *name)
   nbytes = 2;
   if (RegQueryValueEx (key_handle, wname, 0, NULL, NULL, &nbytes))
     goto leave;
-  result = jnlib_malloc ((n1=nbytes+2));
+  result = xtrymalloc ((n1=nbytes+2));
   if (!result)
     goto leave;
   if (RegQueryValueEx (key_handle, wname, 0, &type, result, &n1))
     {
-      jnlib_free (result);
+      xfree (result);
       result = NULL;
       goto leave;
     }
@@ -131,11 +135,11 @@ read_w32_registry_string (const char *root, const char *dir, const char *name)
     {
       wchar_t *tmp = (void*)result;
       result = wchar_to_utf8 (tmp);
-      jnlib_free (tmp);
+      xfree (tmp);
     }
 
  leave:
-  jnlib_free (wname);
+  xfree (wname);
   RegCloseKey (key_handle);
   return result;
 #else /*!HAVE_W32CE_SYSTEM*/
@@ -158,12 +162,12 @@ read_w32_registry_string (const char *root, const char *dir, const char *name)
   nbytes = 1;
   if (RegQueryValueEx( key_handle, name, 0, NULL, NULL, &nbytes ) )
     goto leave;
-  result = jnlib_malloc ((n1=nbytes+1));
+  result = xtrymalloc ((n1=nbytes+1));
   if (!result)
     goto leave;
   if (RegQueryValueEx( key_handle, name, 0, &type, result, &n1 ))
     {
-      jnlib_free (result);
+      xfree (result);
       result = NULL;
       goto leave;
     }
@@ -173,46 +177,46 @@ read_w32_registry_string (const char *root, const char *dir, const char *name)
       char *tmp;
 
       n1 += 1000;
-      tmp = jnlib_malloc (n1+1);
+      tmp = xtrymalloc (n1+1);
       if (!tmp)
         goto leave;
       nbytes = ExpandEnvironmentStrings (result, tmp, n1);
       if (nbytes && nbytes > n1)
         {
-          jnlib_free (tmp);
+          xfree (tmp);
           n1 = nbytes;
-          tmp = jnlib_malloc (n1 + 1);
+          tmp = xtrymalloc (n1 + 1);
           if (!tmp)
             goto leave;
           nbytes = ExpandEnvironmentStrings (result, tmp, n1);
           if (nbytes && nbytes > n1)
             {
               /* Oops - truncated, better don't expand at all.  */
-              jnlib_free (tmp);
+              xfree (tmp);
               goto leave;
             }
           tmp[nbytes] = 0;
-          jnlib_free (result);
+          xfree (result);
           result = tmp;
         }
       else if (nbytes)
         {
           /* Okay, reduce the length.  */
           tmp[nbytes] = 0;
-          jnlib_free (result);
-          result = jnlib_malloc (strlen (tmp)+1);
+          xfree (result);
+          result = xtrymalloc (strlen (tmp)+1);
           if (!result)
             result = tmp;
             else
               {
                 strcpy (result, tmp);
-                jnlib_free (tmp);
+                xfree (tmp);
               }
         }
       else
         {
           /* Error - don't expand.  */
-          jnlib_free (tmp);
+          xfree (tmp);
         }
     }
 
@@ -223,102 +227,4 @@ read_w32_registry_string (const char *root, const char *dir, const char *name)
 }
 
 
-/* Note: This code is not well tested.  However, it is not used in
-   GnuPG.  */
-#if 0
-int
-write_w32_registry_string (const char *root, const char *dir,
-                           const char *name, const char *value)
-{
-  HKEY root_key, reg_key;
-#ifdef HAVE_W32CE_SYSTEM
-  wchar_t *wdir, *wname, *wvalue;
-  DWORD disp;
-
-  if ( !(root_key = get_root_key(root) ) )
-    return -1;
-
-  wdir = utf8_to_wchar (dir);
-  if (!wdir)
-    return -1;
-
-  if (RegOpenKeyEx (root_key, wdir, 0, 0, &reg_key))
-    {
-      jnlib_free (wdir);
-      return -1;
-    }
-  jnlib_free (wdir);
-
-  if (name)
-    {
-      wname = utf8_to_wchar (name);
-      if (!wname)
-        return -1;
-    }
-  else
-    wname = NULL;
-
-  wvalue = utf8_to_wchar (value);
-  if (wvalue)
-    {
-      jnlib_free (wname);
-      return -1;
-    }
-
-  if (RegSetValueEx (reg_key, wname, 0, REG_SZ,
-                     (BYTE *)wvalue, wcslen (wvalue)) != ERROR_SUCCESS )
-    {
-
-      if (RegCreateKeyEx (root_key, wname, 0, NULL, 0, 0, NULL,
-                          &reg_key, &disp) != ERROR_SUCCESS)
-        {
-          RegCloseKey(reg_key);
-          jnlib_free (wname);
-          jnlib_free (wvalue);
-          return -1;
-        }
-      if (RegSetValueEx (reg_key, wname, 0, REG_SZ,
-                         (BYTE *)wvalue, wcslen (wvalue)) != ERROR_SUCCESS )
-        {
-          RegCloseKey(reg_key);
-          jnlib_free (wname);
-          jnlib_free (wvalue);
-          return -1;
-        }
-    }
-
-  jnlib_free (wname);
-  jnlib_free (wvalue);
-  RegCloseKey (reg_key);
-  return 0;
-#else /*!HAVE_W32CE_SYSTEM*/
-
-  if ( !(root_key = get_root_key(root) ) )
-    return -1;
-
-  if ( RegOpenKeyEx( root_key, dir, 0, KEY_WRITE, &reg_key )
-       != ERROR_SUCCESS )
-    return -1;
-
-  if ( RegSetValueEx (reg_key, name, 0, REG_SZ, (BYTE *)value,
-                      strlen( value ) ) != ERROR_SUCCESS )
-    {
-      if ( RegCreateKey( root_key, name, &reg_key ) != ERROR_SUCCESS )
-        {
-          RegCloseKey(reg_key);
-          return -1;
-        }
-      if ( RegSetValueEx (reg_key, name, 0, REG_SZ, (BYTE *)value,
-                          strlen( value ) ) != ERROR_SUCCESS )
-        {
-          RegCloseKey(reg_key);
-          return -1;
-        }
-    }
-
-  RegCloseKey (reg_key);
-  return 0;
-#endif /*!HAVE_W32CE_SYSTEM*/
-}
-#endif /*0*/
 #endif /*HAVE_W32_SYSTEM*/