aboutsummaryrefslogtreecommitdiffstats
path: root/src/w32reg.c
diff options
context:
space:
mode:
authorGeoff Voelker <[email protected]>1995-11-07 07:52:28 +0000
committerGeoff Voelker <[email protected]>1995-11-07 07:52:28 +0000
commitee78dc3223f2552bcb0604d344e88221ff24daac (patch)
tree87192dd95e18d9f3fb3075e3c6b0b4a3228f4281 /src/w32reg.c
parente80af09c2f58c1d931cbcb016dbd042c348dbf74 (diff)
Initial revision
Diffstat (limited to 'src/w32reg.c')
-rw-r--r--src/w32reg.c94
1 files changed, 94 insertions, 0 deletions
diff --git a/src/w32reg.c b/src/w32reg.c
new file mode 100644
index 0000000000..2b6fbb8acc
--- /dev/null
+++ b/src/w32reg.c
@@ -0,0 +1,94 @@
+/* Emulate the X Resource Manager through the registry.
+ Copyright (C) 1990, 1993, 1994 Free Software Foundation.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+This program 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.
+
+You should have received a copy of the GNU General Public License
+along with this program; see the file COPYING. If not, write to
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+/* Written by Kevin Gallo */
+
+#include <config.h>
+#include "lisp.h"
+#include "w32term.h"
+#include "blockinput.h"
+
+#include <stdio.h>
+#include <string.h>
+
+#define REG_ROOT "SOFTWARE\\GNU\\Emacs\\"
+
+LPBYTE
+win32_get_string_resource (name, class, dwexptype)
+ char *name, *class;
+ DWORD dwexptype;
+{
+ LPBYTE lpvalue = NULL;
+ HKEY hrootkey = NULL;
+ DWORD dwType;
+ DWORD cbData;
+ BOOL ok = FALSE;
+
+ BLOCK_INPUT;
+
+ /* Check both the current user and the local machine to see if we have any resources */
+
+ if (RegOpenKeyEx (HKEY_CURRENT_USER, REG_ROOT, 0, KEY_READ, &hrootkey) == ERROR_SUCCESS
+ || RegOpenKeyEx (HKEY_LOCAL_MACHINE, REG_ROOT, 0, KEY_READ, &hrootkey) == ERROR_SUCCESS)
+ {
+ char *keyname;
+
+ if (RegQueryValueEx (hrootkey, name, NULL, &dwType, NULL, &cbData) == ERROR_SUCCESS
+ && dwType == dwexptype)
+ {
+ keyname = name;
+ }
+ else if (RegQueryValueEx (hrootkey, class, NULL, &dwType, NULL, &cbData) == ERROR_SUCCESS
+ && dwType == dwexptype)
+ {
+ keyname = class;
+ }
+ else
+ {
+ keyname = NULL;
+ }
+
+ ok = (keyname
+ && (lpvalue = (LPBYTE) xmalloc (cbData)) != NULL
+ && RegQueryValueEx (hrootkey, keyname, NULL, NULL, lpvalue, &cbData) == ERROR_SUCCESS);
+
+ RegCloseKey (hrootkey);
+ }
+
+ UNBLOCK_INPUT;
+
+ if (!ok)
+ {
+ if (lpvalue) xfree (lpvalue);
+ return (NULL);
+ }
+ else
+ {
+ return (lpvalue);
+ }
+}
+
+/* Retrieve the string resource specified by NAME with CLASS from
+ database RDB. */
+
+char *
+x_get_string_resource (rdb, name, class)
+ int rdb;
+ char *name, *class;
+{
+ return (win32_get_string_resource (name, class, REG_SZ));
+}