Mercurial > emacs
annotate src/w32reg.c @ 89191:06c052d0f579
*** empty log message ***
| author | Kenichi Handa <handa@m17n.org> |
|---|---|
| date | Thu, 10 Oct 2002 09:03:32 +0000 |
| parents | 8387918b52c6 |
| children | 23a1cea22d13 |
| rev | line source |
|---|---|
| 13434 | 1 /* Emulate the X Resource Manager through the registry. |
| 2 Copyright (C) 1990, 1993, 1994 Free Software Foundation. | |
| 3 | |
|
14186
ee40177f6c68
Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents:
13434
diff
changeset
|
4 This file is part of GNU Emacs. |
|
ee40177f6c68
Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents:
13434
diff
changeset
|
5 |
|
ee40177f6c68
Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents:
13434
diff
changeset
|
6 GNU Emacs is free software; you can redistribute it and/or modify |
| 13434 | 7 it under the terms of the GNU General Public License as published by |
| 8 the Free Software Foundation; either version 2, or (at your option) | |
| 9 any later version. | |
| 10 | |
|
14186
ee40177f6c68
Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents:
13434
diff
changeset
|
11 GNU Emacs is distributed in the hope that it will be useful, |
| 13434 | 12 but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 14 GNU General Public License for more details. | |
| 15 | |
| 16 You should have received a copy of the GNU General Public License | |
|
14186
ee40177f6c68
Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents:
13434
diff
changeset
|
17 along with GNU Emacs; see the file COPYING. If not, write to |
|
ee40177f6c68
Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents:
13434
diff
changeset
|
18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
|
ee40177f6c68
Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents:
13434
diff
changeset
|
19 Boston, MA 02111-1307, USA. */ |
| 13434 | 20 |
| 21 /* Written by Kevin Gallo */ | |
| 22 | |
| 23 #include <config.h> | |
| 24 #include "lisp.h" | |
| 25 #include "w32term.h" | |
| 26 #include "blockinput.h" | |
| 27 | |
| 28 #include <stdio.h> | |
| 29 #include <string.h> | |
| 30 | |
|
15149
685510b93c83
(REG_ROOT): Remove trailing backslash.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14353
diff
changeset
|
31 #define REG_ROOT "SOFTWARE\\GNU\\Emacs" |
| 13434 | 32 |
| 33 LPBYTE | |
|
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15149
diff
changeset
|
34 w32_get_string_resource (name, class, dwexptype) |
| 13434 | 35 char *name, *class; |
| 36 DWORD dwexptype; | |
| 37 { | |
| 38 LPBYTE lpvalue = NULL; | |
| 39 HKEY hrootkey = NULL; | |
| 40 DWORD dwType; | |
| 41 DWORD cbData; | |
| 42 BOOL ok = FALSE; | |
|
24672
8387918b52c6
(w32_get_string_resource): Check for name in current
Andrew Innes <andrewi@gnu.org>
parents:
16588
diff
changeset
|
43 HKEY hive = HKEY_CURRENT_USER; |
| 13434 | 44 |
|
24672
8387918b52c6
(w32_get_string_resource): Check for name in current
Andrew Innes <andrewi@gnu.org>
parents:
16588
diff
changeset
|
45 trykey: |
|
8387918b52c6
(w32_get_string_resource): Check for name in current
Andrew Innes <andrewi@gnu.org>
parents:
16588
diff
changeset
|
46 |
| 13434 | 47 BLOCK_INPUT; |
| 48 | |
|
24672
8387918b52c6
(w32_get_string_resource): Check for name in current
Andrew Innes <andrewi@gnu.org>
parents:
16588
diff
changeset
|
49 /* Check both the current user and the local machine to see if we have |
|
8387918b52c6
(w32_get_string_resource): Check for name in current
Andrew Innes <andrewi@gnu.org>
parents:
16588
diff
changeset
|
50 any resources */ |
|
8387918b52c6
(w32_get_string_resource): Check for name in current
Andrew Innes <andrewi@gnu.org>
parents:
16588
diff
changeset
|
51 |
|
8387918b52c6
(w32_get_string_resource): Check for name in current
Andrew Innes <andrewi@gnu.org>
parents:
16588
diff
changeset
|
52 if (RegOpenKeyEx (hive, REG_ROOT, 0, KEY_READ, &hrootkey) == ERROR_SUCCESS) |
| 13434 | 53 { |
| 54 char *keyname; | |
| 55 | |
| 56 if (RegQueryValueEx (hrootkey, name, NULL, &dwType, NULL, &cbData) == ERROR_SUCCESS | |
| 57 && dwType == dwexptype) | |
| 58 { | |
| 59 keyname = name; | |
| 60 } | |
| 61 else if (RegQueryValueEx (hrootkey, class, NULL, &dwType, NULL, &cbData) == ERROR_SUCCESS | |
| 62 && dwType == dwexptype) | |
| 63 { | |
| 64 keyname = class; | |
| 65 } | |
| 66 else | |
| 67 { | |
| 68 keyname = NULL; | |
| 69 } | |
| 70 | |
| 71 ok = (keyname | |
| 72 && (lpvalue = (LPBYTE) xmalloc (cbData)) != NULL | |
| 73 && RegQueryValueEx (hrootkey, keyname, NULL, NULL, lpvalue, &cbData) == ERROR_SUCCESS); | |
| 74 | |
| 75 RegCloseKey (hrootkey); | |
| 76 } | |
| 77 | |
| 78 UNBLOCK_INPUT; | |
| 79 | |
| 80 if (!ok) | |
| 81 { | |
|
24672
8387918b52c6
(w32_get_string_resource): Check for name in current
Andrew Innes <andrewi@gnu.org>
parents:
16588
diff
changeset
|
82 if (lpvalue) |
|
8387918b52c6
(w32_get_string_resource): Check for name in current
Andrew Innes <andrewi@gnu.org>
parents:
16588
diff
changeset
|
83 { |
|
8387918b52c6
(w32_get_string_resource): Check for name in current
Andrew Innes <andrewi@gnu.org>
parents:
16588
diff
changeset
|
84 xfree (lpvalue); |
|
8387918b52c6
(w32_get_string_resource): Check for name in current
Andrew Innes <andrewi@gnu.org>
parents:
16588
diff
changeset
|
85 lpvalue = NULL; |
|
8387918b52c6
(w32_get_string_resource): Check for name in current
Andrew Innes <andrewi@gnu.org>
parents:
16588
diff
changeset
|
86 } |
|
8387918b52c6
(w32_get_string_resource): Check for name in current
Andrew Innes <andrewi@gnu.org>
parents:
16588
diff
changeset
|
87 if (hive == HKEY_CURRENT_USER) |
|
8387918b52c6
(w32_get_string_resource): Check for name in current
Andrew Innes <andrewi@gnu.org>
parents:
16588
diff
changeset
|
88 { |
|
8387918b52c6
(w32_get_string_resource): Check for name in current
Andrew Innes <andrewi@gnu.org>
parents:
16588
diff
changeset
|
89 hive = HKEY_LOCAL_MACHINE; |
|
8387918b52c6
(w32_get_string_resource): Check for name in current
Andrew Innes <andrewi@gnu.org>
parents:
16588
diff
changeset
|
90 goto trykey; |
|
8387918b52c6
(w32_get_string_resource): Check for name in current
Andrew Innes <andrewi@gnu.org>
parents:
16588
diff
changeset
|
91 } |
| 13434 | 92 return (NULL); |
| 93 } | |
|
24672
8387918b52c6
(w32_get_string_resource): Check for name in current
Andrew Innes <andrewi@gnu.org>
parents:
16588
diff
changeset
|
94 return (lpvalue); |
| 13434 | 95 } |
| 96 | |
| 97 /* Retrieve the string resource specified by NAME with CLASS from | |
| 98 database RDB. */ | |
| 99 | |
| 100 char * | |
| 101 x_get_string_resource (rdb, name, class) | |
| 102 int rdb; | |
| 103 char *name, *class; | |
| 104 { | |
|
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15149
diff
changeset
|
105 return (w32_get_string_resource (name, class, REG_SZ)); |
| 13434 | 106 } |
