source: trunk/src/shell32/misc.cpp@ 2014

Last change on this file since 2014 was 1353, checked in by phaller, 26 years ago

Fix: debug info

File size: 13.3 KB
Line 
1/* $Id: misc.cpp,v 1.6 1999-10-19 10:23:26 phaller Exp $ */
2
3/*
4 * Win32 SHELL32 for OS/2
5 * 1998/06/15 Patrick Haller (haller@zebra.fh-weingarten.de)
6 * Copyright 1997 Marcus Meissner
7 * Copyright 1988 Patrick Haller (adapted for win32os2)
8 * Project Odin Software License can be found in LICENSE.TXT
9 *
10 */
11
12
13/*****************************************************************************
14 * Includes *
15 *****************************************************************************/
16
17#include <odin.h>
18#include <odinwrap.h>
19#include <os2sel.h>
20
21#include <wchar.h>
22#include <wcstr.h>
23
24#define ICOM_CINTERFACE 1
25
26//#include <os2win.h>
27#include <shellapi.h>
28#include <winnls.h>
29#include "shell32_main.h"
30#include <misc.h>
31//#include <string.h>
32//#include "winbase.h"
33#include <heapstring.h>
34
35
36/*****************************************************************************
37 * Types & Defines *
38 *****************************************************************************/
39
40ODINDEBUGCHANNEL(SHELL32-MISC)
41
42
43/*****************************************************************************
44 * Name : ExtractAssociatedIconExA
45 * Purpose : Return icon for given file (either from file itself or from associated
46 * executable) and patch parameters if needed.
47 * Parameters: ???
48 * Variables :
49 * Result :
50 * Remark : SHELL.150
51 * Status : UNTESTED UNKNOWN STUB
52 *
53 * Author : Christoph Bratschi [Fri, 1999/08/6 20:00]
54 *****************************************************************************/
55
56ODINFUNCTION3(HICON, ExtractAssociatedIconExA,
57 HINSTANCE, hInst,
58 LPSTR, lpIconPath,
59 LPWORD, lpiIcon)
60{
61 dprintf(("SHELL32: undoc ExtractAssociatedIconExA\n"));
62
63 return ExtractAssociatedIconA(hInst,lpIconPath,lpiIcon);
64}
65
66/*****************************************************************************
67 * Name : ExtractAssociatedIconW
68 * Purpose : Return icon for given file (either from file itself or from associated
69 * executable) and patch parameters if needed.
70 * Parameters:
71 * Variables :
72 * Result :
73 * Remark : SHELL.36
74 * Status : UNTESTED STUB
75 *
76 * Author : Patrick Haller [Sat, 1998/07/11 11:55]
77 *****************************************************************************/
78
79ODINFUNCTION3(HICON, ExtractAssociatedIconW,
80 HINSTANCE, hInst,
81 LPWSTR, lpIconPath,
82 LPWORD, lpiIcon)
83{
84 LPSTR lpIconPathAscii = UnicodeToAsciiString(lpIconPath);
85 HICON hIcon;
86
87 hIcon = ExtractAssociatedIconA(hInst,
88 lpIconPathAscii,
89 lpiIcon);
90
91 FreeAsciiString(lpIconPathAscii);
92
93 return (hIcon);
94}
95
96/*****************************************************************************
97 * Name : ExtractAssociatedIconExW
98 * Purpose : Return icon for given file (either from file itself or from associated
99 * executable) and patch parameters if needed.
100 * Parameters: ???
101 * Variables :
102 * Result :
103 * Remark : SHELL.186
104 * Status : UNTESTED UNKNOWN STUB
105 *
106 * Author : Christoph Bratschi [Fri, 1999/08/6 20:00]
107 *****************************************************************************/
108
109ODINFUNCTION3(HICON, ExtractAssociatedIconExW,
110 HINSTANCE, hInst,
111 LPWSTR, lpIconPath,
112 LPWORD, lpiIcon)
113{
114 dprintf(("SHELL32: undoc ExtractAssociatedIconExW\n"));
115
116 return ExtractAssociatedIconW(hInst,lpIconPath,lpiIcon);
117}
118
119
120/*****************************************************************************
121 * Name : OleStrToStrN
122 * Purpose :
123 * Parameters:
124 * Variables :
125 * Result :
126 * Remark : SHELL32.78
127 * Status : UNTESTED UNKNOWN STUB
128 *
129 * Author : Patrick Haller [Tue, 1998/06/15 03:00]
130 *****************************************************************************/
131
132ODINFUNCTION4(BOOL, OleStrToStrN,
133 LPSTR, lpMulti,
134 INT, nMulti,
135 LPCWSTR, lpWide,
136 INT, nWide)
137{
138 return WideCharToMultiByte (0,
139 0,
140 lpWide,
141 nWide,
142 lpMulti,
143 nMulti,
144 NULL,
145 NULL);
146}
147
148
149/*****************************************************************************
150 * Name : StrToOleStrN
151 * Purpose :
152 * Parameters:
153 * Variables :
154 * Result :
155 * Remark : SHELL32.79
156 * Status : UNTESTED UNKNOWN STUB
157 *
158 * Author : Patrick Haller [Tue, 1998/06/15 03:00]
159 *****************************************************************************/
160
161ODINFUNCTION4(BOOL, StrToOleStrN,
162 LPWSTR, lpWide,
163 INT, nWide,
164 LPCSTR, lpMulti,
165 INT, nMulti)
166{
167 return MultiByteToWideChar (0,
168 0,
169 lpMulti,
170 nMulti,
171 lpWide,
172 nWide);
173}
174
175
176/*****************************************************************************
177 * Name : StrRetToStrN
178 * Purpose : converts a STRRET to a normal string
179 * Parameters: the pidl is for STRRET OFFSET
180 * Variables :
181 * Result :
182 * Remark : SHELL32.96
183 * Status : UNTESTED UNKNOWN STUB
184 *
185 * Author : Patrick Haller [Tue, 1998/06/15 03:00]
186 *****************************************************************************/
187
188ODINFUNCTION4(HRESULT, StrRetToStrN,
189 LPVOID, dest,
190 DWORD, len,
191 LPSTRRET, src,
192 LPITEMIDLIST, pidl)
193{
194 switch (src->uType)
195 {
196 case STRRET_WSTR:
197 WideCharToMultiByte(CP_ACP,
198 0,
199 src->u.pOleStr,
200 -1,
201 (LPSTR)dest,
202 len,
203 NULL,
204 NULL);
205 SHFree(src->u.pOleStr);
206 break;
207
208 case STRRET_CSTRA:
209 //if (VERSION_OsIsUnicode())
210 // lstrcpynAtoW((LPWSTR)dest, src->u.cStr, len);
211 //else
212 strncpy((LPSTR)dest,
213 src->u.cStr,
214 len);
215 break;
216
217 case STRRET_OFFSETA:
218 if (pidl)
219 {
220 //if(VERSION_OsIsUnicode())
221 // lstrcpynAtoW((LPWSTR)dest, ((LPCSTR)&pidl->mkid)+src->u.uOffset, len);
222 //else
223 strncpy((LPSTR)dest,
224 ((LPCSTR)&pidl->mkid)+src->u.uOffset,
225 len);
226 break;
227 }
228
229 default:
230 dprintf(("SHELL32: StrRetToStrN: unknown type!\n"));
231
232 if (len)
233 *(LPSTR)dest = '\0';
234
235 return(FALSE);
236 }
237 return(TRUE);
238}
239
240
241/*****************************************************************************
242 * Name : SHELL32_654
243 * Purpose :
244 * Parameters:
245 * Variables :
246 * Result :
247 * Remark : SHELL32.654
248 * Status : UNTESTED UNKNOWN STUB
249 *
250 * Author : Patrick Haller [Tue, 1998/06/15 03:00]
251 *****************************************************************************/
252
253ODINFUNCTION2(HRESULT, SHELL32_654,
254 DWORD, x,
255 DWORD, y)
256{
257 dprintf(("SHELL32: SHELL32_654(%08xh,%08xh) not implemented.\n",
258 x,
259 y));
260 return 0;
261}
262
263
264/*****************************************************************************
265 * Name : StrToOleStr
266 * Purpose :
267 * Parameters:
268 * Variables :
269 * Result :
270 * Remark : SHELL32.163
271 * Status : UNTESTED UNKNOWN STUB
272 *
273 * Author : Patrick Haller [Tue, 1998/06/15 03:00]
274 *****************************************************************************/
275
276ODINFUNCTION2(int, StrToOleStr,
277 LPWSTR, lpWideCharStr,
278 LPCSTR, lpMultiByteString)
279{
280 return MultiByteToWideChar(0,
281 0,
282 lpMultiByteString,
283 -1,
284 lpWideCharStr,
285 MAX_PATH);
286}
287
288
289/*****************************************************************************
290 * Name : StrCpyNW
291 * Purpose :
292 * Parameters:
293 * Variables :
294 * Result :
295 * Remark : SHELL32.310 - used by winfile.exe
296 * Status : UNTESTED UNKNOWN STUB
297 *
298 * Author : Christoph Bratschi [Fri, 1999/08/6 19:00]
299 *****************************************************************************/
300
301ODINFUNCTION3(LPWSTR, StrCpyNW,
302 LPWSTR, lpString1,
303 LPWSTR, lpString2,
304 int, iMaxLength)
305{
306 dprintf(("SHELL32: undoc StrCpyNW\n"));
307
308 return lstrcpynW(lpString1,lpString2,iMaxLength);
309}
310
311/*****************************************************************************
312 * Name : StrNCpyW
313 * Purpose :
314 * Parameters:
315 * Variables :
316 * Result :
317 * Remark : SHELL32.316 - used by winfile.exe
318 * Status : UNTESTED UNKNOWN STUB
319 *
320 * Author : Christoph Bratschi [Fri, 1999/08/6 19:00]
321 *****************************************************************************/
322
323ODINFUNCTION2(LPWSTR, StrNCpyW,
324 LPWSTR, lpString1,
325 LPWSTR, lpString2)
326{
327 dprintf(("SHELL32: undoc StrNCpyW\n"));
328
329 return lstrcpyW(lpString1,lpString2);
330}
331
332
333/*****************************************************************************
334 * Name : InternalExtractIconListA
335 * Purpose :
336 * Parameters: ???
337 * Variables :
338 * Result :
339 * Remark : SHELL32.221 - used by progman.exe
340 * Status : UNTESTED UNKNOWN STUB
341 *
342 * Author : Christoph Bratschi [Fri, 1999/08/6 19:00]
343 *****************************************************************************/
344
345ODINFUNCTION1(DWORD, InternalExtractIconListA, DWORD, dwArg1)
346{
347 dprintf(("SHELL32: undoc InternalExtractIconListA \n"));
348 return 0;
349}
350
351/*****************************************************************************
352 * Name : InternalExtractIconListW
353 * Purpose :
354 * Parameters: ???
355 * Variables :
356 * Result :
357 * Remark : SHELL32.222 - used by progman.exe
358 * Status : UNTESTED UNKNOWN STUB
359 *
360 * Author : Christoph Bratschi [Fri, 1999/08/6 19:00]
361 *****************************************************************************/
362
363ODINFUNCTION1(DWORD, InternalExtractIconListW, DWORD, dwArg1)
364{
365 dprintf(("SHELL32: undoc InternalExtractIconListW\n"));
366 return 0;
367}
368
369/*****************************************************************************
370 * Name : ExtractIconResInfoA
371 * Purpose :
372 * Parameters: ???
373 * Variables :
374 * Result :
375 * Remark : SHELL32.192 - used by progman.exe
376 * Status : UNTESTED UNKNOWN STUB
377 *
378 * Author : Christoph Bratschi [Fri, 1999/08/6 19:00]
379 *****************************************************************************/
380
381ODINFUNCTION1(DWORD, ExtractIconResInfoA, DWORD, dwArg1)
382{
383 dprintf(("SHELL32: undoc ExtractIconResInfoA\n"));
384 return 0;
385}
386
387/*****************************************************************************
388 * Name : ExtractIconResInfoW
389 * Purpose :
390 * Parameters: ???
391 * Variables :
392 * Result :
393 * Remark : SHELL32.193 - used by progman.exe
394 * Status : UNTESTED UNKNOWN STUB
395 *
396 * Author : Christoph Bratschi [Fri, 1999/08/6 19:00]
397 *****************************************************************************/
398
399ODINFUNCTION1(DWORD, ExtractIconResInfoW, DWORD, dwArg1)
400{
401 dprintf(("SHELL32: undoc ExtractIconResInfoW\n"));
402 return 0;
403}
404
405/*************************************************************************
406 * FindEnvironmentString [SHELL.38]
407 *
408 * Returns a pointer into the DOS environment... Ugh.
409 */
410LPSTR SHELL_FindStringA(LPSTR lpEnv, LPCSTR entry)
411{ UINT16 l;
412
413 //TRACE_(shell)("\n");
414
415 l = strlen(entry);
416 for( ; *lpEnv ; lpEnv+=strlen(lpEnv)+1 )
417 { if( lstrncmpiA(lpEnv, entry, l) )
418 continue;
419 if( !*(lpEnv+l) )
420 return (lpEnv + l); /* empty entry */
421 else if ( *(lpEnv+l)== '=' )
422 return (lpEnv + l + 1);
423 }
424 return NULL;
425}
426
427
428/*****************************************************************************
429 * Name : CheckEscapesA
430 * Purpose :
431 * Parameters: ???
432 * Variables :
433 * Result :
434 * Remark : SHELL32.3 - used by progman.exe
435 * Status : UNTESTED UNKNOWN STUB
436 *
437 * Author : Christoph Bratschi [Fri, 1999/08/6 19:00]
438 *****************************************************************************/
439
440ODINPROCEDURE2(CheckEscapesA,
441 DWORD, x1,
442 DWORD, x2)
443{
444 dprintf(("SHELL32: undoc CheckEscapesA\n"));
445}
446
447/*****************************************************************************
448 * Name : CheckEscapesW
449 * Purpose :
450 * Parameters: ???
451 * Variables :
452 * Result :
453 * Remark : SHELL32.6 - used by progman.exe
454 * Status : UNTESTED UNKNOWN STUB
455 *
456 * Author : Christoph Bratschi [Fri, 1999/08/6 19:00]
457 *****************************************************************************/
458
459ODINPROCEDURE2(CheckEscapesW,
460 DWORD, x1,
461 DWORD, x2)
462{
463 dprintf(("SHELL32: undoc CheckEscapesW\n"));
464}
465
466/*****************************************************************************
467 * Name : DuplicateIcon
468 * Purpose :
469 * Parameters: ???
470 * Variables :
471 * Result :
472 * Remark : SHELL32.138 - used by progman.exe
473 * Status : UNTESTED UNKNOWN STUB
474 *
475 * Author : Christoph Bratschi [Fri, 1999/08/6 19:00]
476 *****************************************************************************/
477
478ODINFUNCTION1(DWORD, DuplicateIcon,
479 DWORD, x1)
480{
481 dprintf(("SHELL32: undoc DuplicateIcon\n"));
482
483 return 0;
484}
485
Note: See TracBrowser for help on using the repository browser.