Fixed a char/NULL comparison.
[wine/testsucceed.git] / dlls / shlwapi / ordinal.c
blob0df667edc666b7a7eee0f49d7eb8bce90ae24d3c
1 /*
2 * SHLWAPI ordinal functions
3 *
4 * Copyright 1997 Marcus Meissner
5 * 1998 Jürgen Schmied
6 */
8 #include <stdio.h>
10 #include "windef.h"
11 #include "wine/undocshell.h"
12 #include "wine/unicode.h"
13 #include "debugtools.h"
15 DEFAULT_DEBUG_CHANNEL(shell);
17 extern HINSTANCE shlwapi_hInstance;
20 NOTES: The most functions exported by ordinal seem to be superflous.
21 The reason for these functions to be there is to provide a wraper
22 for unicode functions to providing these functions on systems without
23 unicode functions eg. win95/win98. Since we have such functions we just
24 call these.
27 /*************************************************************************
28 * SHLWAPI_1 [SHLWAPI.1]
30 DWORD WINAPI SHLWAPI_1 (
31 LPSTR lpStr,
32 LPVOID x)
34 FIXME("(%p %s %p %s)\n",lpStr, debugstr_a(lpStr),x, debugstr_a(x));
35 return 0;
38 /*************************************************************************
39 * SHLWAPI_16 [SHLWAPI.16]
41 HRESULT WINAPI SHLWAPI_16 (
42 LPVOID w,
43 LPVOID x,
44 LPVOID y,
45 LPWSTR z)
47 FIXME("(%p %p %p %p)stub\n",w,x,y,z);
48 return 0xabba1252;
51 /*************************************************************************
52 * SHLWAPI_23 [SHLWAPI.23]
54 * NOTES
55 * converts a guid to a string
56 * returns strlen(str)
58 DWORD WINAPI SHLWAPI_23 (
59 REFGUID guid, /* [in] clsid */
60 LPSTR str, /* [out] buffer */
61 INT cmax) /* [in] size of buffer */
63 char xguid[40];
65 sprintf( xguid, "{%08lx-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}",
66 guid->Data1, guid->Data2, guid->Data3,
67 guid->Data4[0], guid->Data4[1], guid->Data4[2], guid->Data4[3],
68 guid->Data4[4], guid->Data4[5], guid->Data4[6], guid->Data4[7] );
69 TRACE("(%s %p 0x%08x)stub\n", xguid, str, cmax);
70 if (strlen(xguid)>=cmax) return 0;
71 strcpy(str,xguid);
72 return strlen(xguid) + 1;
75 /*************************************************************************
76 * SHLWAPI_24 [SHLWAPI.24]
78 * NOTES
79 * converts a guid to a string
80 * returns strlen(str)
82 DWORD WINAPI SHLWAPI_24 (
83 REFGUID guid, /* [in] clsid */
84 LPWSTR str, /* [out] buffer */
85 INT cmax) /* [in] size of buffer */
87 char xguid[40];
89 sprintf( xguid, "{%08lx-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}",
90 guid->Data1, guid->Data2, guid->Data3,
91 guid->Data4[0], guid->Data4[1], guid->Data4[2], guid->Data4[3],
92 guid->Data4[4], guid->Data4[5], guid->Data4[6], guid->Data4[7] );
93 return MultiByteToWideChar( CP_ACP, 0, xguid, -1, str, cmax );
96 /*************************************************************************
97 * SHLWAPI_151 [SHLWAPI.151]
99 DWORD WINAPI SHLWAPI_151(void)
101 FIXME(": stub\n");
102 return 0;
105 /*************************************************************************
106 * SHLWAPI_153 [SHLWAPI.153]
108 DWORD WINAPI SHLWAPI_153(DWORD dw1, DWORD dw2, DWORD dw3)
110 FIXME("%08lx %08lx %08lx - stub\n", dw1, dw2, dw3);
111 return 0;
114 /*************************************************************************
115 * SHLWAPI_156 [SHLWAPI.156]
117 * FIXME: function guessed
119 DWORD WINAPI SHLWAPI_156 (
120 LPWSTR str1, /* "shell32.dll" */
121 LPWSTR str2) /* "shell32.dll" */
123 FIXME("(%s %s)stub\n",debugstr_w(str1),debugstr_w(str2));
124 return lstrcmpW(str1,str2);
127 /*************************************************************************
128 * SHLWAPI_169 [SHLWAPI.169]
130 DWORD WINAPI SHLWAPI_169 (IUnknown * lpUnknown)
132 TRACE("(%p)\n",lpUnknown);
133 #if 0
134 if(!lpUnknown || !*((LPDWORD)lpUnknown)) return 0;
135 return IUnknown_Release(lpUnknown);
136 #endif
137 return 0;
140 /*************************************************************************
141 * SHLWAPI_193 [SHLWAPI.193]
143 DWORD WINAPI SHLWAPI_193 ()
145 HDC hdc;
146 DWORD ret;
148 TRACE("()\n");
150 hdc = GetDC(0);
151 ret = GetDeviceCaps(hdc, BITSPIXEL) * GetDeviceCaps(hdc, PLANES);
152 ReleaseDC(0, hdc);
153 return ret;
156 /*************************************************************************
157 * SHLWAPI_215 [SHLWAPI.215]
159 * NOTES
160 * check me!
162 LPWSTR WINAPI SHLWAPI_215 (
163 LPWSTR lpStrSrc,
164 LPVOID lpwStrDest,
165 int len)
167 WARN("(%p %p %u)\n",lpStrSrc,lpwStrDest,len);
168 return strncpyW(lpwStrDest, lpStrSrc, len);
171 /*************************************************************************
172 * SHLWAPI_219 [SHLWAPI.219]
174 * NOTES
175 * error codes: E_POINTER, E_NOINTERFACE
177 HRESULT WINAPI SHLWAPI_219 (
178 LPVOID w, /* returned by LocalAlloc, 0x450 bytes, iface */
179 LPVOID x,
180 LPVOID y,
181 LPWSTR z) /* OUT: path */
183 FIXME("(%p %p %p %p)stub\n",w,x,y,z);
184 return 0xabba1252;
187 /*************************************************************************
188 * SHLWAPI_222 [SHLWAPI.222]
190 * NOTES
191 * securityattributes missing
193 HANDLE WINAPI SHLWAPI_222 (LPCLSID guid)
195 char lpstrName[80];
197 sprintf( lpstrName, "shell.{%08lx-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}",
198 guid->Data1, guid->Data2, guid->Data3,
199 guid->Data4[0], guid->Data4[1], guid->Data4[2], guid->Data4[3],
200 guid->Data4[4], guid->Data4[5], guid->Data4[6], guid->Data4[7] );
201 FIXME("(%s) stub\n", lpstrName);
202 return CreateSemaphoreA(NULL,0, 0x7fffffff, lpstrName);
205 /*************************************************************************
206 * SHLWAPI_223 [SHLWAPI.223]
208 * NOTES
209 * get the count of the semaphore
211 DWORD WINAPI SHLWAPI_223 (HANDLE handle)
213 DWORD oldCount;
215 FIXME("(0x%08x) stub\n",handle);
217 ReleaseSemaphore( handle, 1, &oldCount); /* +1 */
218 WaitForSingleObject( handle, 0 ); /* -1 */
219 return oldCount;
222 /*************************************************************************
223 * SHLWAPI_237 [SHLWAPI.237]
225 * NOTES
226 * checks if a class is registered, if not it registers it
228 DWORD WINAPI SHLWAPI_237 (WNDCLASSW * lpWndClass)
230 WNDCLASSW WndClass;
232 TRACE("(0x%08x %s)\n",lpWndClass->hInstance, debugstr_w(lpWndClass->lpszClassName));
234 if (!GetClassInfoW(lpWndClass->hInstance, lpWndClass->lpszClassName, &WndClass))
236 return RegisterClassW(lpWndClass);
238 return TRUE;
241 /*************************************************************************
242 * SHLWAPI_241 [SHLWAPI.241]
245 DWORD WINAPI SHLWAPI_241 ()
247 FIXME("()stub\n");
248 return 0xabba1243;
251 /*************************************************************************
252 * SHLWAPI_266 [SHLWAPI.266]
254 DWORD WINAPI SHLWAPI_266 (
255 LPVOID w,
256 LPVOID x,
257 LPVOID y,
258 LPVOID z)
260 FIXME("(%p %p %p %p)stub\n",w,x,y,z);
261 return 0xabba1248;
264 /*************************************************************************
265 * SHLWAPI_267 [SHLWAPI.267]
267 HRESULT WINAPI SHLWAPI_267 (
268 LPVOID w, /* same as 1th parameter of SHLWAPI_219 */
269 LPVOID x, /* same as 2nd parameter of SHLWAPI_219 */
270 LPVOID y,
271 LPVOID z)
273 FIXME("(%p %p %p %p)stub\n",w,x,y,z);
274 *((LPDWORD)z) = 0xabba1200;
275 return 0xabba1254;
278 /*************************************************************************
279 * SHLWAPI_268 [SHLWAPI.268]
281 DWORD WINAPI SHLWAPI_268 (
282 LPVOID w,
283 LPVOID x)
285 FIXME("(%p %p)\n",w,x);
286 return 0xabba1251; /* 0 = failure */
289 /*************************************************************************
290 * SHLWAPI_276 [SHLWAPI.276]
293 DWORD WINAPI SHLWAPI_276 ()
295 FIXME("()stub\n");
296 return 0xabba1244;
299 /*************************************************************************
300 * SHLWAPI_278 [SHLWAPI.278]
303 DWORD WINAPI SHLWAPI_278 (
304 LONG wndProc,
305 HWND hWndParent,
306 DWORD dwExStyle,
307 DWORD dwStyle,
308 HMENU hMenu,
309 LONG z)
311 WNDCLASSA wndclass;
312 HWND hwnd;
313 HCURSOR hCursor;
314 char * clsname = "WorkerA";
316 FIXME("(0x%08lx 0x%08x 0x%08lx 0x%08lx 0x%08x 0x%08lx)stub\n",
317 wndProc,hWndParent,dwExStyle,dwStyle,hMenu,z);
319 hCursor = LoadCursorA(0x00000000,IDC_ARROWA);
321 if(!GetClassInfoA(shlwapi_hInstance, clsname, &wndclass))
323 RtlZeroMemory(&wndclass, sizeof(WNDCLASSA));
324 wndclass.lpfnWndProc = DefWindowProcW;
325 wndclass.cbWndExtra = 4;
326 wndclass.hInstance = shlwapi_hInstance;
327 wndclass.hCursor = hCursor;
328 wndclass.hbrBackground = COLOR_BTNSHADOW;
329 wndclass.lpszMenuName = NULL;
330 wndclass.lpszClassName = clsname;
331 RegisterClassA (&wndclass);
333 hwnd = CreateWindowExA(dwExStyle, clsname, 0,dwStyle,0,0,0,0,hWndParent,
334 hMenu,shlwapi_hInstance,0);
335 SetWindowLongA(hwnd, 0, z);
336 SetWindowLongA(hwnd, GWL_WNDPROC, wndProc);
337 return hwnd;
340 /*************************************************************************
341 * SHLWAPI_342 [SHLWAPI.342]
344 DWORD WINAPI SHLWAPI_342 (
345 LPVOID w,
346 LPVOID x,
347 LPVOID y,
348 LPVOID z)
350 FIXME("(%p %p %p %p)stub\n",w,x,y,z);
351 return 0xabba1249;
354 /*************************************************************************
355 * SHLWAPI_346 [SHLWAPI.346]
357 DWORD WINAPI SHLWAPI_346 (
358 LPCWSTR src,
359 LPWSTR dest,
360 int len)
362 FIXME("(%s %p 0x%08x)stub\n",debugstr_w(src),dest,len);
363 lstrcpynW(dest, src, len);
364 return lstrlenW(dest)+1;
368 /*************************************************************************
369 * SHLWAPI_377 [SHLWAPI.377]
371 DWORD WINAPI SHLWAPI_377 (LPVOID x, LPVOID y, LPVOID z)
373 FIXME("(%p %p %p)stub\n", x,y,z);
374 return 0xabba1246;
377 /*************************************************************************
378 * SHLWAPI_378 [SHLWAPI.378]
380 DWORD WINAPI SHLWAPI_378 (
381 LPSTR x,
382 LPVOID y, /* 0x50000000 */
383 LPVOID z) /* 4 */
385 FIXME("(%s %p %p)stub\n", x,y,z);
386 return LoadLibraryA(x);
389 /*************************************************************************
390 * SHLWAPI_431 [SHLWAPI.431]
392 DWORD WINAPI SHLWAPI_431 (DWORD x)
394 FIXME("(0x%08lx)stub\n", x);
395 return 0xabba1247;
398 /*************************************************************************
399 * SHLWAPI_437 [SHLWAPI.437]
401 * NOTES
402 * has to do something with switching the api between ascii and unicode
403 * observed values: 0 and 5
405 * accesses
406 * HKLM\System\CurrentControlSet\Control\ProductOptions
409 DWORD WINAPI SHLWAPI_437 (DWORD x)
411 FIXME("(0x%08lx)stub\n", x);
412 return 0xabba1247;
415 /*************************************************************************
416 * UrlEscapeA [SHLWAPI]
418 HRESULT WINAPI UrlEscapeA(
419 LPCSTR pszUrl,
420 LPSTR pszEscaped,
421 LPDWORD pcchEscaped,
422 DWORD dwFlags)
424 FIXME("(%s %p %p 0x%08lx)stub\n",debugstr_a(pszUrl),
425 pszEscaped, pcchEscaped, dwFlags);
426 return 0;
429 /*************************************************************************
430 * UrlEscapeW [SHLWAPI]
432 HRESULT WINAPI UrlEscapeW(
433 LPCWSTR pszUrl,
434 LPWSTR pszEscaped,
435 LPDWORD pcchEscaped,
436 DWORD dwFlags)
438 FIXME("(%s %p %p 0x%08lx)stub\n",debugstr_w(pszUrl),
439 pszEscaped, pcchEscaped, dwFlags);
440 return 0;
444 /*************************************************************************
445 * SHCreateShellPalette [SHLWAPI.@]
447 HPALETTE WINAPI SHCreateShellPalette(HDC hdc)
449 FIXME("stub\n");
450 return CreateHalftonePalette(hdc);
453 /*************************************************************************
454 * SHIsLowMemoryMachine [SHLWAPI.@]
456 DWORD WINAPI SHIsLowMemoryMachine (DWORD x)
458 FIXME("0x%08lx\n", x);
459 return 0;