Fix typos in comments.
[wine] / dlls / shell32 / shellreg.c
1 /*
2         Shell Registry Access
3 */
4 #include <string.h>
5 #include <stdio.h>
6 #include "winerror.h"
7 #include "winreg.h"
8 #include "debugtools.h"
9 #include "winnls.h"
10
11 #include "shellapi.h"
12 #include "shlobj.h"
13 #include "shell32_main.h"
14 #include "wine/undocshell.h"
15
16 DEFAULT_DEBUG_CHANNEL(shell);
17
18 /*************************************************************************
19  * SHRegOpenKeyA                                [SHELL32.506]
20  *
21  */
22 HRESULT WINAPI SHRegOpenKeyA(
23         HKEY hKey,
24         LPSTR lpSubKey,
25         LPHKEY phkResult)
26 {
27         TRACE("(0x%08x, %s, %p)\n", hKey, debugstr_a(lpSubKey), phkResult);
28         return RegOpenKeyA(hKey, lpSubKey, phkResult);
29 }
30
31 /*************************************************************************
32  * SHRegOpenKeyW                                [NT4.0:SHELL32.507]
33  *
34  */
35 HRESULT WINAPI SHRegOpenKeyW (
36         HKEY hkey,
37         LPCWSTR lpszSubKey,
38         LPHKEY retkey)
39 {
40         WARN("0x%04x %s %p\n",hkey,debugstr_w(lpszSubKey),retkey);
41         return RegOpenKeyW( hkey, lpszSubKey, retkey );
42 }
43
44 /*************************************************************************
45  * SHRegQueryValueExA   [SHELL32.509]
46  *
47  */
48 HRESULT WINAPI SHRegQueryValueExA(
49         HKEY hkey,
50         LPSTR lpValueName,
51         LPDWORD lpReserved,
52         LPDWORD lpType,
53         LPBYTE lpData,
54         LPDWORD lpcbData)
55 {
56         TRACE("0x%04x %s %p %p %p %p\n", hkey, lpValueName, lpReserved, lpType, lpData, lpcbData);
57         return RegQueryValueExA (hkey, lpValueName, lpReserved, lpType, lpData, lpcbData);
58 }
59
60 /*************************************************************************
61  * SHRegQueryValueW                             [NT4.0:SHELL32.510]
62  *
63  */
64 HRESULT WINAPI SHRegQueryValueW(
65         HKEY hkey,
66         LPWSTR lpszSubKey,
67         LPWSTR lpszData,
68         LPDWORD lpcbData )
69 {
70         WARN("0x%04x %s %p %p semi-stub\n",
71                 hkey, debugstr_w(lpszSubKey), lpszData, lpcbData);
72         return RegQueryValueW( hkey, lpszSubKey, lpszData, lpcbData );
73 }
74
75 /*************************************************************************
76  * SHRegQueryValueExW   [NT4.0:SHELL32.511]
77  *
78  * FIXME 
79  *  if the datatype REG_EXPAND_SZ then expand the string and change
80  *  *pdwType to REG_SZ. 
81  */
82 HRESULT WINAPI SHRegQueryValueExW (
83         HKEY hkey,
84         LPWSTR pszValue,
85         LPDWORD pdwReserved,
86         LPDWORD pdwType,
87         LPVOID pvData,
88         LPDWORD pcbData)
89 {
90         DWORD ret;
91         WARN("0x%04x %s %p %p %p %p semi-stub\n",
92                 hkey, debugstr_w(pszValue), pdwReserved, pdwType, pvData, pcbData);
93         ret = RegQueryValueExW ( hkey, pszValue, pdwReserved, pdwType, pvData, pcbData);
94         return ret;
95 }
96
97 /*************************************************************************
98  * SHRegDeleteKeyA   [SHELL32]
99  */
100 HRESULT WINAPI SHRegDeleteKeyA(
101         HKEY hkey,
102         LPCSTR pszSubKey)
103 {
104         FIXME("hkey=0x%08x, %s\n", hkey, debugstr_a(pszSubKey));
105         return 0;
106 }
107
108 /*************************************************************************
109  * SHRegDeleteKeyW   [SHELL32]
110  */
111 HRESULT WINAPI SHRegDeleteKeyW(
112         HKEY hkey,
113         LPCWSTR pszSubKey)
114 {
115         FIXME("hkey=0x%08x, %s\n", hkey, debugstr_w(pszSubKey));
116         return 0;
117 }
118
119 /*************************************************************************
120  * SHRegCloseKey                        [NT4.0:SHELL32.505]
121  *
122  */
123 HRESULT WINAPI SHRegCloseKey (HKEY hkey)
124 {
125         TRACE("0x%04x\n",hkey);
126         return RegCloseKey( hkey );
127 }
128
129
130 /* 16-bit functions */
131
132 /* 0 and 1 are valid rootkeys in win16 shell.dll and are used by
133  * some programs. Do not remove those cases. -MM
134  */
135 static inline void fix_win16_hkey( HKEY *hkey )
136 {
137     if (*hkey == 0 || *hkey == 1) *hkey = HKEY_CLASSES_ROOT;
138 }
139
140 /******************************************************************************
141  *           RegOpenKey16   [SHELL.1]
142  */
143 DWORD WINAPI RegOpenKey16( HKEY hkey, LPCSTR name, LPHKEY retkey )
144 {
145     fix_win16_hkey( &hkey );
146     return RegOpenKeyA( hkey, name, retkey );
147 }
148
149 /******************************************************************************
150  *           RegCreateKey16   [SHELL.2]
151  */
152 DWORD WINAPI RegCreateKey16( HKEY hkey, LPCSTR name, LPHKEY retkey )
153 {
154     fix_win16_hkey( &hkey );
155     return RegCreateKeyA( hkey, name, retkey );
156 }
157
158 /******************************************************************************
159  *           RegCloseKey16   [SHELL.3]
160  */
161 DWORD WINAPI RegCloseKey16( HKEY hkey )
162 {
163     fix_win16_hkey( &hkey );
164     return RegCloseKey( hkey );
165 }
166
167 /******************************************************************************
168  *           RegDeleteKey16   [SHELL.4]
169  */
170 DWORD WINAPI RegDeleteKey16( HKEY hkey, LPCSTR name )
171 {
172     fix_win16_hkey( &hkey );
173     return RegDeleteKeyA( hkey, name );
174 }
175
176 /******************************************************************************
177  *           RegSetValue16   [SHELL.5]
178  */
179 DWORD WINAPI RegSetValue16( HKEY hkey, LPCSTR name, DWORD type, LPCSTR data, DWORD count )
180 {
181     fix_win16_hkey( &hkey );
182     return RegSetValueA( hkey, name, type, data, count );
183 }
184
185 /******************************************************************************
186  *           RegQueryValue16   [SHELL.6]
187  *
188  * NOTES
189  *    Is this HACK still applicable?
190  *
191  * HACK
192  *    The 16bit RegQueryValue doesn't handle selectorblocks anyway, so we just
193  *    mask out the high 16 bit.  This (not so much incidently) hopefully fixes
194  *    Aldus FH4)
195  */
196 DWORD WINAPI RegQueryValue16( HKEY hkey, LPCSTR name, LPSTR data, LPDWORD count )
197 {
198     fix_win16_hkey( &hkey );
199     if (count) *count &= 0xffff;
200     return RegQueryValueA( hkey, name, data, count );
201 }
202
203 /******************************************************************************
204  *           RegEnumKey16   [SHELL.7]
205  */
206 DWORD WINAPI RegEnumKey16( HKEY hkey, DWORD index, LPSTR name, DWORD name_len )
207 {
208     fix_win16_hkey( &hkey );
209     return RegEnumKeyA( hkey, index, name, name_len );
210 }