Rewrote the collapsing of . and .. in RtlGetFullPathName_U for better
[wine.git] / dlls / unicows / main.c
blobb8e76d15d0dfacfb1d26a1aca289740b02f618b7
1 /*
2 * Implementation of the unicows dll
4 * Copyright (C) 2003 Alexandre Julliard
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21 #include <stdarg.h>
23 #include "windef.h"
24 #include "winbase.h"
25 #include "winreg.h"
26 #include "winnls.h"
27 #include "wingdi.h"
28 #include "winuser.h"
29 #include "winver.h"
30 #include "winspool.h"
31 #include "commdlg.h"
32 #include "wincrypt.h"
33 #include "ddeml.h"
34 #include "wincon.h"
35 #include "oledlg.h"
36 #include "ras.h"
37 #include "mmsystem.h"
38 #include "shlobj.h"
39 #include "shellapi.h"
40 #include "vfw.h"
41 #include "winnetwk.h"
43 /* Create a dummy reference to every function we need so that
44 * the linker will import them.
46 const void *dummy_references[] =
48 AddAtomW,
49 AddFontResourceW,
50 AddJobW,
51 AddPrinterDriverW,
52 AddPrinterW,
53 AppendMenuW,
54 BeginUpdateResourceA,
55 BeginUpdateResourceW,
56 BroadcastSystemMessageW,
57 BuildCommDCBAndTimeoutsW,
58 BuildCommDCBW,
59 CallMsgFilterW,
60 CallNamedPipeW,
61 CallWindowProcA,
62 CallWindowProcW,
63 ChangeDisplaySettingsExW,
64 ChangeDisplaySettingsW,
65 ChangeMenuW,
66 CharLowerBuffW,
67 CharLowerW,
68 CharNextW,
69 CharPrevW,
70 CharToOemBuffW,
71 CharToOemW,
72 CharUpperBuffW,
73 CharUpperW,
74 ChooseColorW,
75 ChooseFontW,
76 CommConfigDialogW,
77 CompareStringW,
78 CopyAcceleratorTableW,
79 CopyFileExW ,
80 CopyFileW,
81 CopyMetaFileW,
82 CreateAcceleratorTableW,
83 CreateColorSpaceW,
84 CreateDCW,
85 CreateDialogIndirectParamW,
86 CreateDialogParamW,
87 CreateDirectoryExW,
88 CreateDirectoryW,
89 CreateEnhMetaFileW,
90 CreateEventW,
91 CreateFileMappingW,
92 CreateFileW,
93 CreateFontIndirectW,
94 CreateFontW,
95 CreateICW,
96 CreateMDIWindowW,
97 CreateMailslotW,
98 CreateMetaFileW,
99 CreateMutexW,
100 CreateNamedPipeW,
101 CreateProcessW,
102 CreateScalableFontResourceW,
103 CreateSemaphoreW,
104 CreateWaitableTimerW,
105 CreateWindowExW,
106 CryptAcquireContextW,
107 CryptEnumProviderTypesW,
108 CryptEnumProvidersW,
109 CryptGetDefaultProviderW,
110 CryptSetProviderExW,
111 CryptSetProviderW,
112 CryptSignHashW,
113 CryptVerifySignatureW,
114 DdeConnect,
115 DdeConnectList,
116 DdeCreateStringHandleW,
117 DdeInitializeW,
118 DdeQueryConvInfo,
119 DdeQueryStringW,
120 DefDlgProcW,
121 DefFrameProcW,
122 DefMDIChildProcW,
123 DefWindowProcW,
124 DeleteFileW,
125 DeviceCapabilitiesW,
126 DialogBoxIndirectParamW,
127 DialogBoxParamW,
128 DispatchMessageW,
129 DlgDirListComboBoxW,
130 DlgDirListW,
131 DlgDirSelectComboBoxExW,
132 DlgDirSelectExW,
133 DocumentPropertiesW,
134 DragQueryFileW,
135 DrawStateW,
136 DrawTextExW,
137 DrawTextW,
138 EnableWindow,
139 EndUpdateResourceA,
140 EndUpdateResourceW,
141 EnumClipboardFormats,
142 EnumDateFormatsW,
143 EnumDisplayDevicesW,
144 EnumDisplaySettingsExW,
145 EnumDisplaySettingsW,
146 EnumFontFamiliesExW,
147 EnumFontFamiliesW,
148 EnumFontsW,
149 EnumPrinterDriversW,
150 EnumPrintersW,
151 EnumPropsA,
152 EnumPropsExA,
153 EnumPropsExW,
154 EnumPropsW,
155 EnumSystemCodePagesW,
156 EnumSystemLocalesW,
157 EnumTimeFormatsW,
158 ExpandEnvironmentStringsW,
159 ExtTextOutW,
160 ExtractIconExW,
161 ExtractIconW,
162 FatalAppExitW,
163 FillConsoleOutputCharacterW,
164 FindAtomW,
165 FindExecutableW,
166 FindFirstChangeNotificationW,
167 FindFirstFileW,
168 FindNextFileW,
169 FindResourceExW,
170 FindResourceW,
171 FindTextW,
172 FindWindowExW,
173 FindWindowW,
174 FormatMessageW,
175 FreeEnvironmentStringsW,
176 GetAtomNameW,
177 GetCPInfo,
178 GetCPInfoExW,
179 GetCalendarInfoW,
180 GetCharABCWidthsFloatW,
181 GetCharABCWidthsW,
182 GetCharWidth32W,
183 GetCharWidthFloatW,
184 GetCharWidthW,
185 GetCharacterPlacementW,
186 GetClassInfoExW,
187 GetClassInfoW,
188 GetClassLongW,
189 GetClassNameW,
190 GetClipboardData,
191 GetClipboardFormatNameW,
192 GetComputerNameW,
193 GetConsoleTitleW,
194 GetCurrencyFormatW,
195 GetCurrentDirectoryW,
196 GetDateFormatW,
197 GetDefaultCommConfigW,
198 GetDiskFreeSpaceExW ,
199 GetDiskFreeSpaceW,
200 GetDlgItemTextW,
201 GetDriveTypeW,
202 GetEnhMetaFileDescriptionW,
203 GetEnhMetaFileW,
204 GetEnvironmentStringsW,
205 GetEnvironmentVariableW,
206 GetFileAttributesExW,
207 GetFileAttributesW,
208 GetFileTitleW,
209 GetFileVersionInfoSizeW,
210 GetFileVersionInfoW,
211 GetFullPathNameW,
212 GetGlyphOutlineW,
213 GetKerningPairsW,
214 GetKeyNameTextW,
215 GetKeyboardLayoutNameW,
216 GetLocaleInfoW,
217 GetLogicalDriveStringsW,
218 GetLongPathNameW ,
219 GetMenuItemInfoW,
220 GetMenuStringW,
221 GetMessageW,
222 GetMetaFileW,
223 GetModuleFileNameW,
224 GetModuleHandleW,
225 GetMonitorInfoW,
226 GetNamedPipeHandleStateW,
227 GetNumberFormatW,
228 GetObjectW,
229 GetOpenFileNamePreviewW,
230 GetOpenFileNameW,
231 GetOutlineTextMetricsW,
232 GetPrinterDataW,
233 GetPrinterDriverDirectoryW,
234 GetPrinterDriverW,
235 GetPrinterW,
236 GetPrivateProfileIntW,
237 GetPrivateProfileSectionNamesW,
238 GetPrivateProfileSectionW,
239 GetPrivateProfileStringW,
240 GetPrivateProfileStructW,
241 GetProcAddress,
242 GetProfileIntW,
243 GetProfileSectionW,
244 GetProfileStringW,
245 GetPropA,
246 GetPropW,
247 GetSaveFileNamePreviewW,
248 GetSaveFileNameW,
249 GetShortPathNameW,
250 GetStartupInfoW,
251 GetStringTypeExW,
252 GetStringTypeW,
253 GetSystemDirectoryW,
254 GetSystemWindowsDirectoryW,
255 GetTabbedTextExtentW,
256 GetTempFileNameW,
257 GetTempPathW,
258 GetTextExtentExPointW,
259 GetTextExtentPoint32W,
260 GetTextExtentPointW,
261 GetTextFaceW,
262 GetTextMetricsW,
263 GetTimeFormatW,
264 GetUserNameW,
265 GetVersionExW,
266 GetVolumeInformationW,
267 GetWindowLongA,
268 GetWindowLongW,
269 GetWindowModuleFileNameW,
270 GetWindowTextLengthW,
271 GetWindowTextW,
272 GetWindowsDirectoryW,
273 GlobalAddAtomW,
274 GlobalFindAtomW,
275 GlobalGetAtomNameW,
276 GrayStringW,
277 InsertMenuItemW,
278 InsertMenuW,
279 IsBadStringPtrW,
280 IsCharAlphaNumericW,
281 IsCharAlphaW,
282 IsCharLowerW,
283 IsCharUpperW,
284 IsClipboardFormatAvailable,
285 IsDialogMessageW,
286 IsTextUnicode,
287 IsValidCodePage,
288 IsWindowUnicode,
289 LCMapStringW,
290 LoadAcceleratorsW,
291 LoadBitmapW,
292 LoadCursorFromFileW,
293 LoadCursorW,
294 LoadIconW,
295 LoadImageW,
296 LoadKeyboardLayoutW,
297 LoadLibraryExW,
298 LoadLibraryW,
299 LoadMenuIndirectW,
300 LoadMenuW,
301 LoadStringW,
302 MCIWndCreateW,
303 MapVirtualKeyExW,
304 MapVirtualKeyW,
305 MessageBoxExW,
306 MessageBoxIndirectW,
307 MessageBoxW,
308 ModifyMenuW,
309 MoveFileW,
310 MultiByteToWideChar,
311 MultinetGetConnectionPerformanceW,
312 OemToCharBuffW,
313 OemToCharW,
314 OleUIAddVerbMenuW,
315 OleUIBusyW,
316 OleUIChangeIconW,
317 OleUIChangeSourceW,
318 OleUIConvertW,
319 OleUIEditLinksW,
320 OleUIInsertObjectW,
321 OleUIObjectPropertiesW,
322 OleUIPasteSpecialW,
323 OleUIPromptUserW,
324 OleUIUpdateLinksW,
325 OpenEventW,
326 OpenFileMappingW,
327 OpenMutexW,
328 OpenPrinterW,
329 OpenSemaphoreW,
330 OpenWaitableTimerW,
331 OutputDebugStringW,
332 PageSetupDlgW,
333 PeekConsoleInputW,
334 PeekMessageW,
335 PlaySoundW,
336 PolyTextOutW,
337 PostMessageW,
338 PostThreadMessageW,
339 PrintDlgW,
340 QueryDosDeviceW,
341 RasDeleteEntryW,
342 RasEnumConnectionsW,
343 RasEnumDevicesW,
344 RasEnumEntriesW,
345 RasSetEntryPropertiesW,
346 ReadConsoleInputW,
347 ReadConsoleOutputCharacterW,
348 ReadConsoleOutputW,
349 ReadConsoleW,
350 RegConnectRegistryW,
351 RegCreateKeyExW,
352 RegCreateKeyW,
353 RegDeleteKeyW,
354 RegDeleteValueW,
355 RegEnumKeyExW,
356 RegEnumKeyW,
357 RegEnumValueW,
358 RegLoadKeyW,
359 RegOpenKeyExW,
360 RegOpenKeyW,
361 RegQueryInfoKeyW,
362 RegQueryMultipleValuesW,
363 RegQueryValueExW,
364 RegQueryValueW,
365 RegReplaceKeyW,
366 RegSaveKeyW,
367 RegSetValueExW,
368 RegSetValueW,
369 RegUnLoadKeyW,
370 RegisterClassExW,
371 RegisterClassW,
372 RegisterClipboardFormatW,
373 RegisterWindowMessageW,
374 RemoveDirectoryW,
375 RemoveFontResourceW,
376 RemovePropA,
377 RemovePropW,
378 ReplaceTextW,
379 ResetDCW,
380 ResetPrinterW,
381 SHBrowseForFolderW,
382 SHChangeNotify ,
383 SHFileOperationW,
384 SHGetFileInfoW,
385 SHGetPathFromIDListW,
386 ScrollConsoleScreenBufferW,
387 SearchPathW,
388 SendDlgItemMessageW,
389 SendMessageCallbackW,
390 SendMessageTimeoutW,
391 SendMessageW,
392 SendNotifyMessageW,
393 SetCalendarInfoW,
394 SetClassLongW,
395 SetComputerNameW,
396 SetConsoleTitleW,
397 SetCurrentDirectoryW,
398 SetDefaultCommConfigW,
399 SetDlgItemTextW,
400 SetEnvironmentVariableW,
401 SetFileAttributesW,
402 SetJobW,
403 SetLocaleInfoW,
404 SetMenuItemInfoW,
405 SetPrinterDataW,
406 SetPrinterW,
407 SetPropA,
408 SetPropW,
409 SetVolumeLabelW,
410 SetWindowLongA,
411 SetWindowLongW,
412 SetWindowTextW,
413 SetWindowsHookExW,
414 SetWindowsHookW,
415 ShellAboutW,
416 ShellExecuteExW ,
417 ShellExecuteW ,
418 Shell_NotifyIconW,
419 StartDocPrinterW,
420 StartDocW,
421 SystemParametersInfoW,
422 TabbedTextOutW,
423 TextOutW,
424 TranslateAcceleratorW,
425 UnregisterClassW,
426 UpdateResourceA,
427 UpdateResourceW,
428 VerFindFileW,
429 VerInstallFileW,
430 VerLanguageNameW,
431 VerQueryValueW,
432 VkKeyScanExW,
433 VkKeyScanW,
434 WNetAddConnection2W,
435 WNetAddConnection3W,
436 WNetAddConnectionW,
437 WNetCancelConnection2W,
438 WNetCancelConnectionW,
439 WNetConnectionDialog1W,
440 WNetDisconnectDialog1W,
441 WNetEnumResourceW,
442 WNetGetConnectionW,
443 WNetGetLastErrorW,
444 WNetGetNetworkInformationW,
445 WNetGetProviderNameW,
446 WNetGetResourceInformationW,
447 WNetGetResourceParentW,
448 WNetGetUniversalNameW ,
449 WNetGetUserW,
450 WNetOpenEnumW,
451 WNetUseConnectionW,
452 WaitNamedPipeW ,
453 WideCharToMultiByte,
454 WinHelpW,
455 WriteConsoleInputW,
456 WriteConsoleOutputCharacterW,
457 WriteConsoleOutputW,
458 WriteConsoleW,
459 WritePrivateProfileSectionW,
460 WritePrivateProfileStringW,
461 WritePrivateProfileStructW,
462 WriteProfileSectionW,
463 WriteProfileStringW,
464 auxGetDevCapsW,
465 capCreateCaptureWindowW,
466 capGetDriverDescriptionW,
467 joyGetDevCapsW,
468 lstrcatW,
469 lstrcmpW,
470 lstrcmpiW,
471 lstrcpyW,
472 lstrcpynW,
473 lstrlenW,
474 mciGetDeviceIDW,
475 mciGetErrorStringW,
476 mciSendCommandW,
477 mciSendStringW,
478 midiInGetDevCapsW,
479 midiInGetErrorTextW,
480 midiOutGetDevCapsW,
481 midiOutGetErrorTextW,
482 mixerGetControlDetailsW,
483 mixerGetDevCapsW,
484 mixerGetLineControlsW,
485 mixerGetLineInfoW,
486 mmioInstallIOProcW,
487 mmioOpenW,
488 mmioRenameW,
489 mmioStringToFOURCCW,
490 sndPlaySoundW,
491 waveInGetDevCapsW,
492 waveInGetErrorTextW,
493 waveOutGetDevCapsW,
494 waveOutGetErrorTextW,
495 wsprintfW,
496 wvsprintfW