diff --git a/dll/win32/kernel32/file/backup.c b/dll/win32/kernel32/file/backup.c index 0928e74a062..24c2a751233 100644 --- a/dll/win32/kernel32/file/backup.c +++ b/dll/win32/kernel32/file/backup.c @@ -11,9 +11,8 @@ /* INCLUDES *****************************************************************/ #include -#include - -WINE_DEFAULT_DEBUG_CHANNEL(kernel32file); +#define NDEBUG +#include /* FUNCTIONS ****************************************************************/ diff --git a/dll/win32/kernel32/file/bintype.c b/dll/win32/kernel32/file/bintype.c index 98d8f676da9..2722ba54134 100644 --- a/dll/win32/kernel32/file/bintype.c +++ b/dll/win32/kernel32/file/bintype.c @@ -13,9 +13,10 @@ /* INCLUDES *****************************************************************/ #include -#include +#define NDEBUG +#include -WINE_DEFAULT_DEBUG_CHANNEL(kernel32file); +static ULONG gDebugChannel = kernel32file; /* FUNCTIONS ****************************************************************/ diff --git a/dll/win32/kernel32/file/cnotify.c b/dll/win32/kernel32/file/cnotify.c index 59f61650bfa..c7aff9c3589 100644 --- a/dll/win32/kernel32/file/cnotify.c +++ b/dll/win32/kernel32/file/cnotify.c @@ -10,9 +10,8 @@ */ #include -#include - -WINE_DEFAULT_DEBUG_CHANNEL(kernel32file); +#define NDEBUG +#include /* * @implemented diff --git a/dll/win32/kernel32/file/copy.c b/dll/win32/kernel32/file/copy.c index 760fda441ce..4055f876342 100644 --- a/dll/win32/kernel32/file/copy.c +++ b/dll/win32/kernel32/file/copy.c @@ -13,9 +13,9 @@ /* INCLUDES ****************************************************************/ #include -#include - -WINE_DEFAULT_DEBUG_CHANNEL(kernel32file); +#define NDEBUG +#include +static ULONG gDebugChannel = kernel32file; /* FUNCTIONS ****************************************************************/ diff --git a/dll/win32/kernel32/file/create.c b/dll/win32/kernel32/file/create.c index d2fe40f33c7..894970a4c2e 100644 --- a/dll/win32/kernel32/file/create.c +++ b/dll/win32/kernel32/file/create.c @@ -15,9 +15,9 @@ /* INCLUDES *****************************************************************/ #include -#include - -WINE_DEFAULT_DEBUG_CHANNEL(kernel32file); +#define NDEBUG +#include +static ULONG gDebugChannel = kernel32file; #define SYMLINK_FLAG_RELATIVE 1 diff --git a/dll/win32/kernel32/file/curdir.c b/dll/win32/kernel32/file/curdir.c index 5584899f333..ee6d8553128 100644 --- a/dll/win32/kernel32/file/curdir.c +++ b/dll/win32/kernel32/file/curdir.c @@ -17,9 +17,9 @@ /* INCLUDES ******************************************************************/ #include -#include - -WINE_DEFAULT_DEBUG_CHANNEL(kernel32file); +#define NDEBUG +#include +static ULONG gDebugChannel = kernel32file; /* GLOBAL VARIABLES **********************************************************/ diff --git a/dll/win32/kernel32/file/delete.c b/dll/win32/kernel32/file/delete.c index 4ad6a804917..333851655c8 100644 --- a/dll/win32/kernel32/file/delete.c +++ b/dll/win32/kernel32/file/delete.c @@ -12,9 +12,9 @@ /* INCLUDES ****************************************************************/ #include -#include - -WINE_DEFAULT_DEBUG_CHANNEL(kernel32file); +#define NDEBUG +#include +static ULONG gDebugChannel = kernel32file; /* FUNCTIONS ****************************************************************/ diff --git a/dll/win32/kernel32/file/deviceio.c b/dll/win32/kernel32/file/deviceio.c index b4435a9f758..a3016ed75b9 100644 --- a/dll/win32/kernel32/file/deviceio.c +++ b/dll/win32/kernel32/file/deviceio.c @@ -9,7 +9,8 @@ /* INCLUDES *******************************************************************/ #include -#include +#define NDEBUG +#include /* FUNCTIONS ******************************************************************/ diff --git a/dll/win32/kernel32/file/dir.c b/dll/win32/kernel32/file/dir.c index 848d4f8f543..5d352b172b0 100644 --- a/dll/win32/kernel32/file/dir.c +++ b/dll/win32/kernel32/file/dir.c @@ -16,9 +16,9 @@ /* INCLUDES ******************************************************************/ #include -#include - -WINE_DEFAULT_DEBUG_CHANNEL(kernel32file); +#define NDEBUG +#include +static ULONG gDebugChannel = kernel32file; UNICODE_STRING DllDirectory = {0, 0, NULL}; @@ -972,7 +972,7 @@ ContainsPath(LPCWSTR name) { if (RtlDetermineDosPathNameType_U(name) != RtlPathTypeRelative) return TRUE; if (name[0] != '.') return FALSE; - if (name[1] == '/' || name[1] == '\\') return TRUE; + if (name[1] == '/' || name[1] == '\\' || name[1] == '\0') return TRUE; return (name[1] == '.' && (name[2] == '/' || name[2] == '\\')); } diff --git a/dll/win32/kernel32/file/dosdev.c b/dll/win32/kernel32/file/dosdev.c index 006cc76e5b3..0ac01917680 100644 --- a/dll/win32/kernel32/file/dosdev.c +++ b/dll/win32/kernel32/file/dosdev.c @@ -12,9 +12,9 @@ /* INCLUDES ******************************************************************/ #include -#include - -WINE_DEFAULT_DEBUG_CHANNEL(kernel32file); +#define NDEBUG +#include +static ULONG gDebugChannel = kernel32file; /* FUNCTIONS *****************************************************************/ diff --git a/dll/win32/kernel32/file/file.c b/dll/win32/kernel32/file/file.c index cdbafd08839..7210147a031 100644 --- a/dll/win32/kernel32/file/file.c +++ b/dll/win32/kernel32/file/file.c @@ -13,9 +13,9 @@ /* INCLUDES *****************************************************************/ #include -#include - -WINE_DEFAULT_DEBUG_CHANNEL(kernel32file); +#define NDEBUG +#include +static ULONG gDebugChannel = kernel32file; /* GLOBALS ******************************************************************/ diff --git a/dll/win32/kernel32/file/find.c b/dll/win32/kernel32/file/find.c index df245232e0e..e2d476c10b3 100644 --- a/dll/win32/kernel32/file/find.c +++ b/dll/win32/kernel32/file/find.c @@ -12,9 +12,9 @@ /* INCLUDES *****************************************************************/ #include -#include - -WINE_DEFAULT_DEBUG_CHANNEL(kernel32file); +#define NDEBUG +#include +static ULONG gDebugChannel = kernel32file; /* TYPES ********************************************************************/ diff --git a/dll/win32/kernel32/file/hardlink.c b/dll/win32/kernel32/file/hardlink.c index 8954ebeee94..5e8e91f50b9 100644 --- a/dll/win32/kernel32/file/hardlink.c +++ b/dll/win32/kernel32/file/hardlink.c @@ -12,9 +12,9 @@ /* INCLUDES *****************************************************************/ #include -#include - -WINE_DEFAULT_DEBUG_CHANNEL(kernel32file); +#define NDEBUG +#include +static ULONG gDebugChannel = kernel32file; /* FUNCTIONS ****************************************************************/ diff --git a/dll/win32/kernel32/file/iocompl.c b/dll/win32/kernel32/file/iocompl.c index 2f332460cc7..56eef2c0ad8 100644 --- a/dll/win32/kernel32/file/iocompl.c +++ b/dll/win32/kernel32/file/iocompl.c @@ -10,14 +10,13 @@ */ #include -#include +#define NDEBUG +#include #define NANOS_TO_100NS(nanos) (((LONGLONG)(nanos)) / 100) #define MICROS_TO_100NS(micros) (((LONGLONG)(micros)) * NANOS_TO_100NS(1000)) #define MILLIS_TO_100NS(milli) (((LONGLONG)(milli)) * MICROS_TO_100NS(1000)) -WINE_DEFAULT_DEBUG_CHANNEL(kernel32file); - /* * @implemented */ diff --git a/dll/win32/kernel32/file/lfile.c b/dll/win32/kernel32/file/lfile.c index 7171c899c9a..7c1a6b9a2bb 100644 --- a/dll/win32/kernel32/file/lfile.c +++ b/dll/win32/kernel32/file/lfile.c @@ -10,9 +10,8 @@ */ #include -#include - -WINE_DEFAULT_DEBUG_CHANNEL(kernel32file); +#define NDEBUG +#include /* * @implemented diff --git a/dll/win32/kernel32/file/lock.c b/dll/win32/kernel32/file/lock.c index 60c71338ac4..6cb386025d1 100644 --- a/dll/win32/kernel32/file/lock.c +++ b/dll/win32/kernel32/file/lock.c @@ -14,9 +14,9 @@ /* INCLUDES ****************************************************************/ #include -#include - -WINE_DEFAULT_DEBUG_CHANNEL(kernel32file); +#define NDEBUG +#include +static ULONG gDebugChannel = kernel32file; /* FUNCTIONS ****************************************************************/ diff --git a/dll/win32/kernel32/file/mailslot.c b/dll/win32/kernel32/file/mailslot.c index 629fef277e4..cbc7900b3eb 100644 --- a/dll/win32/kernel32/file/mailslot.c +++ b/dll/win32/kernel32/file/mailslot.c @@ -11,9 +11,9 @@ /* INCLUDES *****************************************************************/ #include -#include - -WINE_DEFAULT_DEBUG_CHANNEL(kernel32file); +#define NDEBUG +#include +static ULONG gDebugChannel = kernel32file; /* FUNCTIONS ****************************************************************/ diff --git a/dll/win32/kernel32/file/move.c b/dll/win32/kernel32/file/move.c index c46f006c043..cdf53527fbd 100644 --- a/dll/win32/kernel32/file/move.c +++ b/dll/win32/kernel32/file/move.c @@ -17,9 +17,9 @@ #include #include -#include - -WINE_DEFAULT_DEBUG_CHANNEL(kernel32file); +#define NDEBUG +#include +static ULONG gDebugChannel = kernel32file; /* GLOBALS *****************************************************************/ diff --git a/dll/win32/kernel32/file/npipe.c b/dll/win32/kernel32/file/npipe.c index 55aeed952fc..3896e9b2b38 100644 --- a/dll/win32/kernel32/file/npipe.c +++ b/dll/win32/kernel32/file/npipe.c @@ -10,9 +10,9 @@ /* INCLUDES *****************************************************************/ #include -#include - -WINE_DEFAULT_DEBUG_CHANNEL(kernel32file); +#define NDEBUG +#include +static ULONG gDebugChannel = kernel32file; //#define USING_PROPER_NPFS_WAIT_SEMANTICS diff --git a/dll/win32/kernel32/file/pipe.c b/dll/win32/kernel32/file/pipe.c index 94bc1aed1ee..a48150d5156 100644 --- a/dll/win32/kernel32/file/pipe.c +++ b/dll/win32/kernel32/file/pipe.c @@ -11,9 +11,9 @@ /* INCLUDES *****************************************************************/ #include -#include - -WINE_DEFAULT_DEBUG_CHANNEL(kernel32file); +#define NDEBUG +#include +static ULONG gDebugChannel = kernel32file; /* GLOBALS ******************************************************************/ diff --git a/dll/win32/kernel32/file/rw.c b/dll/win32/kernel32/file/rw.c index 400caf79a1b..dc89e4da8bc 100644 --- a/dll/win32/kernel32/file/rw.c +++ b/dll/win32/kernel32/file/rw.c @@ -12,9 +12,9 @@ /* INCLUDES ****************************************************************/ #include -#include - -WINE_DEFAULT_DEBUG_CHANNEL(kernel32file); +#define NDEBUG +#include +static ULONG gDebugChannel = kernel32file; /* FUNCTIONS ****************************************************************/ diff --git a/dll/win32/kernel32/file/tape.c b/dll/win32/kernel32/file/tape.c index fc6d4c43de0..32e274fbab2 100644 --- a/dll/win32/kernel32/file/tape.c +++ b/dll/win32/kernel32/file/tape.c @@ -12,9 +12,8 @@ /* INCLUDES *****************************************************************/ #include -#include - -WINE_DEFAULT_DEBUG_CHANNEL(kernel32file); +#define NDEBUG +#include /* FUNCTIONS ****************************************************************/ diff --git a/dll/win32/kernel32/file/volume.c b/dll/win32/kernel32/file/volume.c index ee74d9f990d..2af3e8ed03d 100644 --- a/dll/win32/kernel32/file/volume.c +++ b/dll/win32/kernel32/file/volume.c @@ -20,9 +20,9 @@ */ #include -#include - -WINE_DEFAULT_DEBUG_CHANNEL(kernel32file); +#define NDEBUG +#include +static ULONG gDebugChannel = kernel32file; #define MAX_DOS_DRIVES 26 diff --git a/dll/win32/kernel32/include/kernel32.h b/dll/win32/kernel32/include/kernel32.h index 4d3f032275b..55b1338786c 100755 --- a/dll/win32/kernel32/include/kernel32.h +++ b/dll/win32/kernel32/include/kernel32.h @@ -1,5 +1,25 @@ #pragma once +// +// Kernel32 Filter IDs +// +#define kernel32file 200 +#define kernel32ver 201 +#define actctx 202 +#define resource 203 +#define kernel32session 204 + +#define TRACE(fmt, ...) TRACE__(gDebugChannel, fmt, ##__VA_ARGS__) +#define WARN(fmt, ...) WARN__(gDebugChannel, fmt, ##__VA_ARGS__) +#define FIXME(fmt, ...) WARN__(gDebugChannel, fmt,## __VA_ARGS__) +#define ERR(fmt, ...) ERR__(gDebugChannel, fmt, ##__VA_ARGS__) + +#define debugstr_a +#define debugstr_w +#define wine_dbgstr_w +#define debugstr_guid + +#include "wine/unicode.h" #include "baseheap.h" #define BINARY_UNKNOWN (0) @@ -40,8 +60,9 @@ /* Undocumented CreateProcess flag */ #define STARTF_SHELLPRIVATE 0x400 -#define SetLastErrorByStatus(__S__) \ - ((void)SetLastError(RtlNtStatusToDosError(__S__))) +#define SetLastErrorByStatus(x) RtlSetLastWin32ErrorAndNtStatusFromNtStatus((x)) +#define GetLastError() NtCurrentTeb()->LastErrorValue +#define SetLastError(x) NtCurrentTeb()->LastErrorValue = (x) typedef struct _CODEPAGE_ENTRY { @@ -100,6 +121,7 @@ DWORD FilenameU2A_FitOrFail(LPSTR DestA, INT destLen, PUNICODE_STRING SourceU); #define HeapAlloc RtlAllocateHeap #define HeapReAlloc RtlReAllocateHeap #define HeapFree RtlFreeHeap +#define _lread (_readfun)_hread POBJECT_ATTRIBUTES WINAPI diff --git a/dll/win32/kernel32/locale_rc.rc b/dll/win32/kernel32/locale_rc.rc index 309caf1596e..67e97fb40a4 100644 --- a/dll/win32/kernel32/locale_rc.rc +++ b/dll/win32/kernel32/locale_rc.rc @@ -48,11 +48,11 @@ #include "nls/cat.nls" /* 0x0403 LANG_CATALAN, SUBLANG_DEFAULT */ -#include "nls/cht.nls" /* 0x0404 LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL */ +//#include "nls/cht.nls" /* 0x0404 LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL */ #include "nls/chs.nls" /* 0x0804 LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED */ -#include "nls/zhh.nls" /* 0x0c04 LANG_CHINESE, SUBLANG_CHINESE_HONGKONG */ +//#include "nls/zhh.nls" /* 0x0c04 LANG_CHINESE, SUBLANG_CHINESE_HONGKONG */ #include "nls/zhi.nls" /* 0x1004 LANG_CHINESE, SUBLANG_CHINESE_SINGAPORE */ -#include "nls/zhm.nls" /* 0x1404 LANG_CHINESE, SUBLANG_CHINESE_MACAU */ +//#include "nls/zhm.nls" /* 0x1404 LANG_CHINESE, SUBLANG_CHINESE_MACAU */ #include "nls/csy.nls" /* 0x0405 LANG_CZECH, SUBLANG_DEFAULT */ @@ -119,7 +119,7 @@ #include "nls/ita.nls" /* 0x0410 LANG_ITALIAN, SUBLANG_ITALIAN */ #include "nls/its.nls" /* 0x0810 LANG_ITALIAN, SUBLANG_ITALIAN_SWISS */ -#include "nls/jpn.nls" /* 0x0411 LANG_JAPANESE, SUBLANG_DEFAULT */ +//#include "nls/jpn.nls" /* 0x0411 LANG_JAPANESE, SUBLANG_DEFAULT */ #include "nls/kor.nls" /* 0x0412 LANG_KOREAN, SUBLANG_KOREAN */ diff --git a/dll/win32/kernel32/misc/actctx.c b/dll/win32/kernel32/misc/actctx.c index 5710a8f8581..2cf99fef463 100644 --- a/dll/win32/kernel32/misc/actctx.c +++ b/dll/win32/kernel32/misc/actctx.c @@ -13,10 +13,9 @@ /* synched with wine 1.1.26 */ #include - -#include "wine/debug.h" - -WINE_DEFAULT_DEBUG_CHANNEL(actctx); +#define NDEBUG +#include +static ULONG gDebugChannel = actctx; #define ACTCTX_FAKE_HANDLE ((HANDLE) 0xf00baa) diff --git a/dll/win32/kernel32/misc/console.c b/dll/win32/kernel32/misc/console.c index d1e8a97038e..b608367b1c5 100644 --- a/dll/win32/kernel32/misc/console.c +++ b/dll/win32/kernel32/misc/console.c @@ -1371,20 +1371,6 @@ SetConsolePalette(DWORD Unknown0, return FALSE; } - -/* - * @unimplemented (Undocumented) - */ -BOOL -WINAPI -SetLastConsoleEventActive(VOID) -{ - DPRINT1("SetLastConsoleEventActive() UNIMPLEMENTED!\n"); - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - return FALSE; -} - - /* * @unimplemented (Undocumented) */ diff --git a/dll/win32/kernel32/misc/format_msg.c b/dll/win32/kernel32/misc/format_msg.c index 228ba4da518..122cac57f6e 100644 --- a/dll/win32/kernel32/misc/format_msg.c +++ b/dll/win32/kernel32/misc/format_msg.c @@ -20,12 +20,9 @@ */ #include - - -#include "wine/unicode.h" -#include "wine/debug.h" - -WINE_DEFAULT_DEBUG_CHANNEL(resource); +#define NDEBUG +#include +static ULONG gDebugChannel = resource; struct format_args { diff --git a/dll/win32/kernel32/misc/lang.c b/dll/win32/kernel32/misc/lang.c index 6ebbf9d562a..78cf47fe5c4 100644 --- a/dll/win32/kernel32/misc/lang.c +++ b/dll/win32/kernel32/misc/lang.c @@ -158,142 +158,6 @@ ConvertDefaultLocale(LCID lcid) } -/************************************************************************** - * EnumDateFormatsExA (KERNEL32.@) - * - * FIXME: MSDN mentions only LOCALE_USE_CP_ACP, should we handle - * LOCALE_NOUSEROVERRIDE here as well? - */ -BOOL -WINAPI -EnumDateFormatsExA( - DATEFMT_ENUMPROCEXA lpDateFmtEnumProcEx, - LCID Locale, - DWORD dwFlags) -{ - CALID cal_id; - char szBuf[256]; - - if (!lpDateFmtEnumProcEx) - { - SetLastError(ERROR_INVALID_PARAMETER); - return FALSE; - } - - if (!GetLocaleInfoW(Locale, - LOCALE_ICALENDARTYPE|LOCALE_RETURN_NUMBER, - (LPWSTR)&cal_id, - sizeof(cal_id)/sizeof(WCHAR))) - { - return FALSE; - } - - switch (dwFlags & ~LOCALE_USE_CP_ACP) - { - case 0: - case DATE_SHORTDATE: - if (GetLocaleInfoA(Locale, - LOCALE_SSHORTDATE | (dwFlags & LOCALE_USE_CP_ACP), - szBuf, 256)) - { - lpDateFmtEnumProcEx(szBuf, cal_id); - } - break; - - case DATE_LONGDATE: - if (GetLocaleInfoA(Locale, - LOCALE_SLONGDATE | (dwFlags & LOCALE_USE_CP_ACP), - szBuf, 256)) - { - lpDateFmtEnumProcEx(szBuf, cal_id); - } - break; - - case DATE_YEARMONTH: - if (GetLocaleInfoA(Locale, - LOCALE_SYEARMONTH | (dwFlags & LOCALE_USE_CP_ACP), - szBuf, 256)) - { - lpDateFmtEnumProcEx(szBuf, cal_id); - } - break; - - default: - SetLastError(ERROR_INVALID_FLAGS); - return FALSE; - } - return TRUE; -} - - -/************************************************************************** - * EnumDateFormatsExW (KERNEL32.@) - */ -BOOL -WINAPI -EnumDateFormatsExW( - DATEFMT_ENUMPROCEXW lpDateFmtEnumProcEx, - LCID Locale, - DWORD dwFlags) -{ - CALID cal_id; - WCHAR wbuf[256]; // FIXME - - if (!lpDateFmtEnumProcEx) - { - SetLastError(ERROR_INVALID_PARAMETER); - return FALSE; - } - - if (!GetLocaleInfoW(Locale, - LOCALE_ICALENDARTYPE | LOCALE_RETURN_NUMBER, - (LPWSTR)&cal_id, - sizeof(cal_id)/sizeof(WCHAR))) - { - return FALSE; - } - - switch (dwFlags & ~LOCALE_USE_CP_ACP) - { - case 0: - case DATE_SHORTDATE: - if (GetLocaleInfoW(Locale, - LOCALE_SSHORTDATE | (dwFlags & LOCALE_USE_CP_ACP), - wbuf, - 256)) - { - lpDateFmtEnumProcEx(wbuf, cal_id); - } - break; - - case DATE_LONGDATE: - if (GetLocaleInfoW(Locale, - LOCALE_SLONGDATE | (dwFlags & LOCALE_USE_CP_ACP), - wbuf, - 256)) - { - lpDateFmtEnumProcEx(wbuf, cal_id); - } - break; - - case DATE_YEARMONTH: - if (GetLocaleInfoW(Locale, - LOCALE_SYEARMONTH | (dwFlags & LOCALE_USE_CP_ACP), - wbuf, - 256)) - { - lpDateFmtEnumProcEx(wbuf, cal_id); - } - break; - - default: - SetLastError(ERROR_INVALID_FLAGS); - return FALSE; - } - return TRUE; -} - - static BOOL NLS_RegEnumValue(HANDLE hKey, UINT ulIndex, LPWSTR szValueName, ULONG valueNameSize, LPWSTR szValueData, ULONG valueDataSize) diff --git a/dll/win32/kernel32/misc/lcformat.c b/dll/win32/kernel32/misc/lcformat.c index 57cca52b845..804a23bf212 100644 --- a/dll/win32/kernel32/misc/lcformat.c +++ b/dll/win32/kernel32/misc/lcformat.c @@ -5,6 +5,7 @@ * Copyright 1998 David Lee Lambert * Copyright 2000 Julio César Gázquez * Copyright 2003 Jon Griffiths + * Copyright 2005 Dmitry Timoshkov * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -18,7 +19,7 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ /* @@ -29,16 +30,9 @@ */ #include - -#include "wine/config.h" -#include "wine/unicode.h" #define NDEBUG #include - -#define TRACE DPRINT -#define WARN DPRINT1 -#define ERR DPRINT1 -#define FIXME DPRINT1 +static ULONG gDebugChannel = resource; #define DATE_DATEVARSONLY 0x0100 /* only date stuff: yMdg */ #define TIME_TIMEVARSONLY 0x0200 /* only time stuff: hHmst */ @@ -52,7 +46,7 @@ * * Our cache takes the form of a singly linked list, whose node is below: */ -#define NLS_NUM_CACHED_STRINGS 45 +#define NLS_NUM_CACHED_STRINGS 57 typedef struct _NLS_FORMAT_NODE { @@ -72,14 +66,15 @@ typedef struct _NLS_FORMAT_NODE #define GetLongDate(fmt) fmt->lppszStrings[1] #define GetShortDate(fmt) fmt->lppszStrings[2] #define GetTime(fmt) fmt->lppszStrings[3] -#define GetAM(fmt) fmt->lppszStrings[42] -#define GetPM(fmt) fmt->lppszStrings[43] -#define GetYearMonth(fmt) fmt->lppszStrings[44] +#define GetAM(fmt) fmt->lppszStrings[54] +#define GetPM(fmt) fmt->lppszStrings[55] +#define GetYearMonth(fmt) fmt->lppszStrings[56] -#define GetLongDay(fmt,day) fmt->lppszStrings[4 + day] -#define GetShortDay(fmt,day) fmt->lppszStrings[11 + day] -#define GetLongMonth(fmt,mth) fmt->lppszStrings[18 + mth] -#define GetShortMonth(fmt,mth) fmt->lppszStrings[30 + mth] +#define GetLongDay(fmt,day) fmt->lppszStrings[4 + day] +#define GetShortDay(fmt,day) fmt->lppszStrings[11 + day] +#define GetLongMonth(fmt,mth) fmt->lppszStrings[18 + mth] +#define GetGenitiveMonth(fmt,mth) fmt->lppszStrings[30 + mth] +#define GetShortMonth(fmt,mth) fmt->lppszStrings[42 + mth] /* Write access to the cache is protected by this critical section */ static RTL_CRITICAL_SECTION NLS_FormatsCS; @@ -92,53 +87,6 @@ static RTL_CRITICAL_SECTION_DEBUG NLS_FormatsCS_debug = }; static RTL_CRITICAL_SECTION NLS_FormatsCS = { &NLS_FormatsCS_debug, -1, 0, 0, 0, 0 }; -/************************************************************************** - * NLS_isSystemLocale - * - * Return TRUE, if locale is system-type - */ -BOOL NLS_isSystemLocale(LCID lcid) -{ - if(lcid == LOCALE_SYSTEM_DEFAULT || - lcid == LOCALE_NEUTRAL || - lcid == LOCALE_USER_DEFAULT) - { - return TRUE; - } - return FALSE; -} - -/************************************************************************** - * NLS_getDefaultLocale - * - * Return default system or user locale - */ -LCID NLS_getDefaultLocale(LCID lcid) -{ - LCID lcidTmp; - - DPRINT("Called NLS_getDefaultLocale(0x%04lx)\n", lcid); - - switch(lcid) - { - case LOCALE_SYSTEM_DEFAULT: - NtQueryDefaultLocale(FALSE, &lcidTmp); - return lcidTmp; - break; - - case LOCALE_USER_DEFAULT: - case LOCALE_NEUTRAL: - NtQueryDefaultLocale(TRUE, &lcidTmp); - return lcidTmp; - break; - - default: - DPRINT1("FIXME: unknown system lcid\n"); - } - - return lcid; -} - /************************************************************************** * NLS_GetLocaleNumber * @@ -184,10 +132,10 @@ static WCHAR* NLS_GetLocaleString(LCID lcid, DWORD dwFlags) } #define GET_LOCALE_NUMBER(num, type) num = NLS_GetLocaleNumber(lcid, type|dwFlags); \ - TRACE( #type ": %ld (%08lx)\n", (DWORD)num, (DWORD)num) + TRACE( #type ": %d (%08x)\n", (DWORD)num, (DWORD)num) #define GET_LOCALE_STRING(str, type) str = NLS_GetLocaleString(lcid, type|dwFlags); \ - TRACE( #type ": '%S'\n", (str)) + TRACE( #type ": %s\n", debugstr_w(str)) /************************************************************************** * NLS_GetFormats @@ -197,7 +145,7 @@ static WCHAR* NLS_GetLocaleString(LCID lcid, DWORD dwFlags) static const NLS_FORMAT_NODE *NLS_GetFormats(LCID lcid, DWORD dwFlags) { /* GetLocaleInfo() identifiers for cached formatting strings */ - static const USHORT NLS_LocaleIndices[] = { + static const LCTYPE NLS_LocaleIndices[] = { LOCALE_SNEGATIVESIGN, LOCALE_SLONGDATE, LOCALE_SSHORTDATE, LOCALE_STIMEFORMAT, @@ -210,6 +158,18 @@ static const NLS_FORMAT_NODE *NLS_GetFormats(LCID lcid, DWORD dwFlags) LOCALE_SMONTHNAME4, LOCALE_SMONTHNAME5, LOCALE_SMONTHNAME6, LOCALE_SMONTHNAME7, LOCALE_SMONTHNAME8, LOCALE_SMONTHNAME9, LOCALE_SMONTHNAME10, LOCALE_SMONTHNAME11, LOCALE_SMONTHNAME12, + LOCALE_SMONTHNAME1 | LOCALE_RETURN_GENITIVE_NAMES, + LOCALE_SMONTHNAME2 | LOCALE_RETURN_GENITIVE_NAMES, + LOCALE_SMONTHNAME3 | LOCALE_RETURN_GENITIVE_NAMES, + LOCALE_SMONTHNAME4 | LOCALE_RETURN_GENITIVE_NAMES, + LOCALE_SMONTHNAME5 | LOCALE_RETURN_GENITIVE_NAMES, + LOCALE_SMONTHNAME6 | LOCALE_RETURN_GENITIVE_NAMES, + LOCALE_SMONTHNAME7 | LOCALE_RETURN_GENITIVE_NAMES, + LOCALE_SMONTHNAME8 | LOCALE_RETURN_GENITIVE_NAMES, + LOCALE_SMONTHNAME9 | LOCALE_RETURN_GENITIVE_NAMES, + LOCALE_SMONTHNAME10 | LOCALE_RETURN_GENITIVE_NAMES, + LOCALE_SMONTHNAME11 | LOCALE_RETURN_GENITIVE_NAMES, + LOCALE_SMONTHNAME12 | LOCALE_RETURN_GENITIVE_NAMES, LOCALE_SABBREVMONTHNAME1, LOCALE_SABBREVMONTHNAME2, LOCALE_SABBREVMONTHNAME3, LOCALE_SABBREVMONTHNAME4, LOCALE_SABBREVMONTHNAME5, LOCALE_SABBREVMONTHNAME6, LOCALE_SABBREVMONTHNAME7, LOCALE_SABBREVMONTHNAME8, LOCALE_SABBREVMONTHNAME9, @@ -222,7 +182,7 @@ static const NLS_FORMAT_NODE *NLS_GetFormats(LCID lcid, DWORD dwFlags) dwFlags &= LOCALE_NOUSEROVERRIDE; - TRACE("(0x%04lx,0x%08lx)\n", lcid, dwFlags); + TRACE("(0x%04x,0x%08x)\n", lcid, dwFlags); /* See if we have already cached the locales number format */ while (node && (node->lcid != lcid || node->dwFlags != dwFlags) && node->next) @@ -296,6 +256,16 @@ static const NLS_FORMAT_NODE *NLS_GetFormats(LCID lcid, DWORD dwFlags) { GET_LOCALE_STRING(new_node->lppszStrings[i], NLS_LocaleIndices[i]); } + /* Save some memory if month genitive name is the same or not present */ + for (i = 0; i < 12; i++) + { + if (strcmpW(GetLongMonth(new_node, i), GetGenitiveMonth(new_node, i)) == 0) + { + HeapFree(GetProcessHeap(), 0, GetGenitiveMonth(new_node, i)); + GetGenitiveMonth(new_node, i) = NULL; + } + } + new_node->szShortAM[0] = GetAM(new_node)[0]; new_node->szShortAM[1] = '\0'; new_node->szShortPM[0] = GetPM(new_node)[0]; new_node->szShortPM[1] = '\0'; @@ -360,7 +330,7 @@ BOOL NLS_IsUnicodeOnlyLcid(LCID lcid) case LANG_MARATHI: case LANG_PUNJABI: case LANG_SANSKRIT: - TRACE("lcid 0x%08lx: langid 0x%4x is Unicode Only\n", lcid, PRIMARYLANGID(lcid)); + TRACE("lcid 0x%08x: langid 0x%4x is Unicode Only\n", lcid, PRIMARYLANGID(lcid)); return TRUE; default: return FALSE; @@ -399,14 +369,11 @@ static INT NLS_GetDateTimeFormatW(LCID lcid, DWORD dwFlags, INT cchWritten = 0; INT lastFormatPos = 0; BOOL bSkipping = FALSE; /* Skipping text around marker? */ + BOOL d_dd_formatted = FALSE; /* previous formatted part was for d or dd */ /* Verify our arguments */ if ((cchOut && !lpStr) || !(node = NLS_GetFormats(lcid, dwFlags))) - { -NLS_GetDateTimeFormatW_InvalidParameter: - SetLastError(ERROR_INVALID_PARAMETER); - return 0; - } + goto invalid_parameter; if (dwFlags & ~(DATE_DATEVARSONLY|TIME_TIMEVARSONLY)) { @@ -414,15 +381,13 @@ NLS_GetDateTimeFormatW_InvalidParameter: ((dwFlags & DATE_DATEVARSONLY && dwFlags & ~DATE_FORMAT_FLAGS) || (dwFlags & TIME_TIMEVARSONLY && dwFlags & ~TIME_FORMAT_FLAGS))) { -NLS_GetDateTimeFormatW_InvalidFlags: - SetLastError(ERROR_INVALID_FLAGS); - return 0; + goto invalid_flags; } if (dwFlags & DATE_DATEVARSONLY) { if ((dwFlags & (DATE_LTRREADING|DATE_RTLREADING)) == (DATE_LTRREADING|DATE_RTLREADING)) - goto NLS_GetDateTimeFormatW_InvalidFlags; + goto invalid_flags; else if (dwFlags & (DATE_LTRREADING|DATE_RTLREADING)) FIXME("Unsupported flags: DATE_LTRREADING/DATE_RTLREADING\n"); @@ -434,10 +399,10 @@ NLS_GetDateTimeFormatW_InvalidFlags: case DATE_LONGDATE: case DATE_YEARMONTH: if (lpFormat) - goto NLS_GetDateTimeFormatW_InvalidFlags; + goto invalid_flags; break; default: - goto NLS_GetDateTimeFormatW_InvalidFlags; + goto invalid_flags; } } } @@ -476,7 +441,7 @@ NLS_GetDateTimeFormatW_InvalidFlags: st.wDay = lpTime->wDay; if (st.wDay > 31 || st.wMonth > 12 || !SystemTimeToFileTime(&st, &ftTmp)) - goto NLS_GetDateTimeFormatW_InvalidParameter; + goto invalid_parameter; FileTimeToSystemTime(&ftTmp, &st); lpTime = &st; @@ -486,7 +451,7 @@ NLS_GetDateTimeFormatW_InvalidFlags: { /* Verify the time */ if (lpTime->wHour > 24 || lpTime->wMinute > 59 || lpTime->wSecond > 59) - goto NLS_GetDateTimeFormatW_InvalidParameter; + goto invalid_parameter; } } @@ -511,7 +476,7 @@ NLS_GetDateTimeFormatW_InvalidFlags: if (!cchOut) cchWritten++; /* Count size only */ else if (cchWritten >= cchOut) - goto NLS_GetDateTimeFormatW_Overrun; + goto overrun; else if (!bSkipping) { lpStr[cchWritten] = *lpFormat; @@ -523,7 +488,6 @@ NLS_GetDateTimeFormatW_InvalidFlags: else if ((dwFlags & DATE_DATEVARSONLY && IsDateFmtChar(*lpFormat)) || (dwFlags & TIME_TIMEVARSONLY && IsTimeFmtChar(*lpFormat))) { - char buffA[32]; WCHAR buff[32], fmtChar; LPCWSTR szAdd = NULL; DWORD dwVal = 0; @@ -539,6 +503,7 @@ NLS_GetDateTimeFormatW_InvalidFlags: } buff[0] = '\0'; + if (fmtChar != 'M') d_dd_formatted = FALSE; switch(fmtChar) { case 'd': @@ -550,12 +515,59 @@ NLS_GetDateTimeFormatW_InvalidFlags: { dwVal = lpTime->wDay; szAdd = buff; + d_dd_formatted = TRUE; } break; case 'M': if (count >= 4) + { + LPCWSTR genitive = GetGenitiveMonth(node, lpTime->wMonth - 1); + if (genitive) + { + if (d_dd_formatted) + { + szAdd = genitive; + break; + } + else + { + LPCWSTR format = lpFormat; + /* Look forward now, if next format pattern is for day genitive + name should be used */ + while (*format) + { + /* Skip parts within markers */ + if (IsLiteralMarker(*format)) + { + ++format; + while (*format) + { + if (IsLiteralMarker(*format)) + { + ++format; + if (!IsLiteralMarker(*format)) break; + } + } + } + if (*format != ' ') break; + ++format; + } + /* Only numeric day form matters */ + if (*format && *format == 'd') + { + INT dcount = 1; + while (*++format == 'd') dcount++; + if (dcount < 3) + { + szAdd = genitive; + break; + } + } + } + } szAdd = GetLongMonth(node, lpTime->wMonth - 1); + } else if (count == 3) szAdd = GetShortMonth(node, lpTime->wMonth - 1); else @@ -657,9 +669,9 @@ NLS_GetDateTimeFormatW_InvalidFlags: if (szAdd == buff && buff[0] == '\0') { + static const WCHAR fmtW[] = {'%','.','*','d',0}; /* We have a numeric value to add */ - sprintf(buffA, "%.*ld", count, dwVal); - MultiByteToWideChar(CP_ACP, 0, buffA, -1, buff, sizeof(buff)/sizeof(WCHAR)); + snprintfW(buff, sizeof(buff)/sizeof(WCHAR), fmtW, count, dwVal); } dwLen = szAdd ? strlenW(szAdd) : 0; @@ -671,7 +683,7 @@ NLS_GetDateTimeFormatW_InvalidFlags: else { memcpy(lpStr + cchWritten, szAdd, (cchOut - cchWritten) * sizeof(WCHAR)); - goto NLS_GetDateTimeFormatW_Overrun; + goto overrun; } } cchWritten += dwLen; @@ -683,7 +695,7 @@ NLS_GetDateTimeFormatW_InvalidFlags: if (!cchOut) cchWritten++; /* Count size only */ else if (cchWritten >= cchOut) - goto NLS_GetDateTimeFormatW_Overrun; + goto overrun; else if (!bSkipping || *lpFormat == ' ') { lpStr[cchWritten] = *lpFormat; @@ -697,19 +709,27 @@ NLS_GetDateTimeFormatW_InvalidFlags: if (cchOut) { if (cchWritten >= cchOut) - goto NLS_GetDateTimeFormatW_Overrun; + goto overrun; else lpStr[cchWritten] = '\0'; } cchWritten++; /* Include terminating NUL */ - TRACE("returning length=%d, ouput='%S'\n", cchWritten, lpStr); + TRACE("returning length=%d, ouput=%s\n", cchWritten, debugstr_w(lpStr)); return cchWritten; -NLS_GetDateTimeFormatW_Overrun: +overrun: TRACE("returning 0, (ERROR_INSUFFICIENT_BUFFER)\n"); SetLastError(ERROR_INSUFFICIENT_BUFFER); return 0; + +invalid_parameter: + SetLastError(ERROR_INVALID_PARAMETER); + return 0; + +invalid_flags: + SetLastError(ERROR_INVALID_FLAGS); + return 0; } /****************************************************************************** @@ -725,12 +745,11 @@ static INT NLS_GetDateTimeFormatA(LCID lcid, DWORD dwFlags, WCHAR szFormat[128], szOut[128]; INT iRet; - TRACE("(0x%04lx,0x%08lx,%p,%s,%p,%d)\n", lcid, dwFlags, lpTime, - lpFormat, lpStr, cchOut); + TRACE("(0x%04x,0x%08x,%p,%s,%p,%d)\n", lcid, dwFlags, lpTime, + debugstr_a(lpFormat), lpStr, cchOut); if (NLS_IsUnicodeOnlyLcid(lcid)) { -GetDateTimeFormatA_InvalidParameter: SetLastError(ERROR_INVALID_PARAMETER); return 0; } @@ -739,7 +758,11 @@ GetDateTimeFormatA_InvalidParameter: { const NLS_FORMAT_NODE *node = NLS_GetFormats(lcid, dwFlags); if (!node) - goto GetDateTimeFormatA_InvalidParameter; + { + SetLastError(ERROR_INVALID_PARAMETER); + return 0; + } + cp = node->dwCodePage; } @@ -810,8 +833,8 @@ GetDateTimeFormatA_InvalidParameter: INT WINAPI GetDateFormatA( LCID lcid, DWORD dwFlags, const SYSTEMTIME* lpTime, LPCSTR lpFormat, LPSTR lpDateStr, INT cchOut) { - TRACE("(0x%04lx,0x%08lx,%p,%s,%p,%d)\n",lcid, dwFlags, lpTime, - lpFormat, lpDateStr, cchOut); + TRACE("(0x%04x,0x%08x,%p,%s,%p,%d)\n",lcid, dwFlags, lpTime, + debugstr_a(lpFormat), lpDateStr, cchOut); return NLS_GetDateTimeFormatA(lcid, dwFlags | DATE_DATEVARSONLY, lpTime, lpFormat, lpDateStr, cchOut); @@ -826,8 +849,8 @@ INT WINAPI GetDateFormatA( LCID lcid, DWORD dwFlags, const SYSTEMTIME* lpTime, INT WINAPI GetDateFormatW(LCID lcid, DWORD dwFlags, const SYSTEMTIME* lpTime, LPCWSTR lpFormat, LPWSTR lpDateStr, INT cchOut) { - TRACE("(0x%04lx,0x%08lx,%p,%S,%p,%d)\n", lcid, dwFlags, lpTime, - lpFormat, lpDateStr, cchOut); + TRACE("(0x%04x,0x%08x,%p,%s,%p,%d)\n", lcid, dwFlags, lpTime, + debugstr_w(lpFormat), lpDateStr, cchOut); return NLS_GetDateTimeFormatW(lcid, dwFlags|DATE_DATEVARSONLY, lpTime, lpFormat, lpDateStr, cchOut); @@ -877,8 +900,8 @@ INT WINAPI GetDateFormatW(LCID lcid, DWORD dwFlags, const SYSTEMTIME* lpTime, INT WINAPI GetTimeFormatA(LCID lcid, DWORD dwFlags, const SYSTEMTIME* lpTime, LPCSTR lpFormat, LPSTR lpTimeStr, INT cchOut) { - TRACE("(0x%04lx,0x%08lx,%p,%s,%p,%d)\n",lcid, dwFlags, lpTime, - lpFormat, lpTimeStr, cchOut); + TRACE("(0x%04x,0x%08x,%p,%s,%p,%d)\n",lcid, dwFlags, lpTime, + debugstr_a(lpFormat), lpTimeStr, cchOut); return NLS_GetDateTimeFormatA(lcid, dwFlags|TIME_TIMEVARSONLY, lpTime, lpFormat, lpTimeStr, cchOut); @@ -892,8 +915,8 @@ INT WINAPI GetTimeFormatA(LCID lcid, DWORD dwFlags, const SYSTEMTIME* lpTime, INT WINAPI GetTimeFormatW(LCID lcid, DWORD dwFlags, const SYSTEMTIME* lpTime, LPCWSTR lpFormat, LPWSTR lpTimeStr, INT cchOut) { - TRACE("(0x%04lx,0x%08lx,%p,%S,%p,%d)\n",lcid, dwFlags, lpTime, - lpFormat, lpTimeStr, cchOut); + TRACE("(0x%04x,0x%08x,%p,%s,%p,%d)\n",lcid, dwFlags, lpTime, + debugstr_w(lpFormat), lpTimeStr, cchOut); return NLS_GetDateTimeFormatW(lcid, dwFlags|TIME_TIMEVARSONLY, lpTime, lpFormat, lpTimeStr, cchOut); @@ -936,12 +959,11 @@ INT WINAPI GetNumberFormatA(LCID lcid, DWORD dwFlags, const NUMBERFMTW *pfmt = NULL; INT iRet; - TRACE("(0x%04lx,0x%08lx,%s,%p,%p,%d)\n", lcid, dwFlags, lpszValue, + TRACE("(0x%04x,0x%08x,%s,%p,%p,%d)\n", lcid, dwFlags, debugstr_a(lpszValue), lpFormat, lpNumberStr, cchOut); if (NLS_IsUnicodeOnlyLcid(lcid)) { -GetNumberFormatA_InvalidParameter: SetLastError(ERROR_INVALID_PARAMETER); return 0; } @@ -950,7 +972,11 @@ GetNumberFormatA_InvalidParameter: { const NLS_FORMAT_NODE *node = NLS_GetFormats(lcid, dwFlags); if (!node) - goto GetNumberFormatA_InvalidParameter; + { + SetLastError(ERROR_INVALID_PARAMETER); + return 0; + } + cp = node->dwCodePage; } @@ -1013,28 +1039,16 @@ INT WINAPI GetNumberFormatW(LCID lcid, DWORD dwFlags, WCHAR szNegBuff[8]; const WCHAR *lpszNeg = NULL, *lpszNegStart, *szSrc; DWORD dwState = 0, dwDecimals = 0, dwGroupCount = 0, dwCurrentGroupCount = 0; - DWORD dwLeadingZeros = 0; INT iRet; - TRACE("(0x%04lx,0x%08lx,%S,%p,%p,%d)\n", lcid, dwFlags, lpszValue, + TRACE("(0x%04x,0x%08x,%s,%p,%p,%d)\n", lcid, dwFlags, debugstr_w(lpszValue), lpFormat, lpNumberStr, cchOut); - if(NLS_isSystemLocale(lcid)) - { - lcid = NLS_getDefaultLocale(lcid); - } - else if(!IsValidLocale(lcid, LCID_INSTALLED)) - { - SetLastError(ERROR_INVALID_PARAMETER); - return 0; - } - if (!lpszValue || cchOut < 0 || (cchOut > 0 && !lpNumberStr) || + !IsValidLocale(lcid, 0) || (lpFormat && (dwFlags || !lpFormat->lpDecimalSep || !lpFormat->lpThousandSep))) { -GetNumberFormatW_Error: - SetLastError(lpFormat && dwFlags ? ERROR_INVALID_FLAGS : ERROR_INVALID_PARAMETER); - return 0; + goto error; } if (!lpFormat) @@ -1042,7 +1056,7 @@ GetNumberFormatW_Error: const NLS_FORMAT_NODE *node = NLS_GetFormats(lcid, dwFlags); if (!node) - goto GetNumberFormatW_Error; + goto error; lpFormat = &node->fmt; lpszNegStart = lpszNeg = GetNegative(node); } @@ -1064,11 +1078,7 @@ GetNumberFormatW_Error: /* Check the number for validity */ while (*szSrc) { - if (*szSrc == '0' && !(dwState & NF_DIGITS)) - { - dwLeadingZeros++; - } - else if ((*szSrc >= '1' && *szSrc <= '9') || (*szSrc == '0' && (dwState & NF_DIGITS))) + if (*szSrc >= '0' && *szSrc <= '9') { dwState |= NF_DIGITS; if (dwState & NF_ISREAL) @@ -1077,23 +1087,23 @@ GetNumberFormatW_Error: else if (*szSrc == '-') { if (dwState) - goto GetNumberFormatW_Error; /* '-' not first character */ + goto error; /* '-' not first character */ dwState |= NF_ISNEGATIVE; } else if (*szSrc == '.') { if (dwState & NF_ISREAL) - goto GetNumberFormatW_Error; /* More than one '.' */ + goto error; /* More than one '.' */ dwState |= NF_ISREAL; } else - goto GetNumberFormatW_Error; /* Invalid char */ + goto error; /* Invalid char */ szSrc++; } szSrc--; /* Point to last character */ if (!(dwState & NF_DIGITS)) - goto GetNumberFormatW_Error; /* No digits */ + goto error; /* No digits */ /* Add any trailing negative sign */ if (dwState & NF_ISNEGATIVE) @@ -1181,7 +1191,7 @@ GetNumberFormatW_Error: dwGroupCount = lpFormat->Grouping == 32 ? 3 : lpFormat->Grouping; /* Write the remaining whole number digits, including grouping chars */ - while (szSrc >= (lpszValue + dwLeadingZeros) && *szSrc >= '0' && *szSrc <= '9') + while (szSrc >= lpszValue && *szSrc >= '0' && *szSrc <= '9') { if (dwState & NF_ROUND) { @@ -1199,7 +1209,7 @@ GetNumberFormatW_Error: dwState |= NF_DIGITS_OUT; dwCurrentGroupCount++; - if (szSrc >= (lpszValue + dwLeadingZeros) && dwCurrentGroupCount == dwGroupCount && *szSrc != '-') + if (szSrc >= lpszValue && dwCurrentGroupCount == dwGroupCount && *szSrc != '-') { LPWSTR lpszGrp = lpFormat->lpThousandSep + strlenW(lpFormat->lpThousandSep) - 1; @@ -1251,6 +1261,10 @@ GetNumberFormatW_Error: } } return iRet; + +error: + SetLastError(lpFormat && dwFlags ? ERROR_INVALID_FLAGS : ERROR_INVALID_PARAMETER); + return 0; } /************************************************************************** @@ -1290,12 +1304,11 @@ INT WINAPI GetCurrencyFormatA(LCID lcid, DWORD dwFlags, const CURRENCYFMTW *pfmt = NULL; INT iRet; - TRACE("(0x%04lx,0x%08lx,%s,%p,%p,%d)\n", lcid, dwFlags, lpszValue, + TRACE("(0x%04x,0x%08x,%s,%p,%p,%d)\n", lcid, dwFlags, debugstr_a(lpszValue), lpFormat, lpCurrencyStr, cchOut); if (NLS_IsUnicodeOnlyLcid(lcid)) { -GetCurrencyFormatA_InvalidParameter: SetLastError(ERROR_INVALID_PARAMETER); return 0; } @@ -1304,7 +1317,11 @@ GetCurrencyFormatA_InvalidParameter: { const NLS_FORMAT_NODE *node = NLS_GetFormats(lcid, dwFlags); if (!node) - goto GetCurrencyFormatA_InvalidParameter; + { + SetLastError(ERROR_INVALID_PARAMETER); + return 0; + } + cp = node->dwCodePage; } @@ -1395,32 +1412,16 @@ INT WINAPI GetCurrencyFormatW(LCID lcid, DWORD dwFlags, DWORD dwState = 0, dwDecimals = 0, dwGroupCount = 0, dwCurrentGroupCount = 0, dwFmt; INT iRet; - DPRINT1("GetCurrencyFormatW(0x%04lx,0x%08lx,%S,%p,%p,%d)\n", - lcid, - dwFlags, - lpszValue, - lpFormat, - lpCurrencyStr, - cchOut); - - if(NLS_isSystemLocale(lcid)) - { - lcid = NLS_getDefaultLocale(lcid); - } - else if(!IsValidLocale(lcid, LCID_INSTALLED)) - { - SetLastError(ERROR_INVALID_PARAMETER); - return 0; - } + TRACE("(0x%04x,0x%08x,%s,%p,%p,%d)\n", lcid, dwFlags, debugstr_w(lpszValue), + lpFormat, lpCurrencyStr, cchOut); if (!lpszValue || cchOut < 0 || (cchOut > 0 && !lpCurrencyStr) || + !IsValidLocale(lcid, 0) || (lpFormat && (dwFlags || !lpFormat->lpDecimalSep || !lpFormat->lpThousandSep || !lpFormat->lpCurrencySymbol || lpFormat->NegativeOrder > 15 || lpFormat->PositiveOrder > 3))) { -GetCurrencyFormatW_Error: - SetLastError(lpFormat && dwFlags ? ERROR_INVALID_FLAGS : ERROR_INVALID_PARAMETER); - return 0; + goto error; } if (!lpFormat) @@ -1428,7 +1429,8 @@ GetCurrencyFormatW_Error: const NLS_FORMAT_NODE *node = NLS_GetFormats(lcid, dwFlags); if (!node) - goto GetCurrencyFormatW_Error; + goto error; + lpFormat = &node->cyfmt; lpszNegStart = lpszNeg = GetNegative(node); } @@ -1461,23 +1463,23 @@ GetCurrencyFormatW_Error: else if (*szSrc == '-') { if (dwState) - goto GetCurrencyFormatW_Error; /* '-' not first character */ + goto error; /* '-' not first character */ dwState |= NF_ISNEGATIVE; } else if (*szSrc == '.') { if (dwState & NF_ISREAL) - goto GetCurrencyFormatW_Error; /* More than one '.' */ + goto error; /* More than one '.' */ dwState |= NF_ISREAL; } else - goto GetCurrencyFormatW_Error; /* Invalid char */ + goto error; /* Invalid char */ szSrc++; } szSrc--; /* Point to last character */ if (!(dwState & NF_DIGITS)) - goto GetCurrencyFormatW_Error; /* No digits */ + goto error; /* No digits */ if (dwState & NF_ISNEGATIVE) dwFmt = NLS_NegCyFormats[lpFormat->NegativeOrder]; @@ -1652,6 +1654,10 @@ GetCurrencyFormatW_Error: } } return iRet; + +error: + SetLastError(lpFormat && dwFlags ? ERROR_INVALID_FLAGS : ERROR_INVALID_PARAMETER); + return 0; } /* FIXME: Everything below here needs to move somewhere else along with the @@ -1660,40 +1666,132 @@ GetCurrencyFormatW_Error: */ /************************************************************************** - * EnumDateFormatsA (KERNEL32.@) + * EnumDateFormatsExA (KERNEL32.@) + * + * FIXME: MSDN mentions only LOCALE_USE_CP_ACP, should we handle + * LOCALE_NOUSEROVERRIDE here as well? */ -BOOL WINAPI EnumDateFormatsA(DATEFMT_ENUMPROCA lpDateFmtEnumProc, LCID Locale, DWORD dwFlags) +BOOL WINAPI EnumDateFormatsExA(DATEFMT_ENUMPROCEXA proc, LCID lcid, DWORD flags) { + CALID cal_id; char buf[256]; - if (!lpDateFmtEnumProc) + if (!proc) { SetLastError(ERROR_INVALID_PARAMETER); return FALSE; } - switch (dwFlags & ~LOCALE_USE_CP_ACP) + if (!GetLocaleInfoW(lcid, LOCALE_ICALENDARTYPE|LOCALE_RETURN_NUMBER, (LPWSTR)&cal_id, sizeof(cal_id)/sizeof(WCHAR))) + return FALSE; + + switch (flags & ~LOCALE_USE_CP_ACP) { - case 0: - case DATE_SHORTDATE: - if (GetLocaleInfoA(Locale, LOCALE_SSHORTDATE | (dwFlags & LOCALE_USE_CP_ACP), buf, 256)) - lpDateFmtEnumProc(buf); + case 0: + case DATE_SHORTDATE: + if (GetLocaleInfoA(lcid, LOCALE_SSHORTDATE | (flags & LOCALE_USE_CP_ACP), buf, 256)) + proc(buf, cal_id); break; - case DATE_LONGDATE: - if (GetLocaleInfoA(Locale, LOCALE_SLONGDATE | (dwFlags & LOCALE_USE_CP_ACP), buf, 256)) - lpDateFmtEnumProc(buf); + case DATE_LONGDATE: + if (GetLocaleInfoA(lcid, LOCALE_SLONGDATE | (flags & LOCALE_USE_CP_ACP), buf, 256)) + proc(buf, cal_id); break; - case DATE_YEARMONTH: - if (GetLocaleInfoA(Locale, LOCALE_SYEARMONTH | (dwFlags & LOCALE_USE_CP_ACP), buf, 256)) - lpDateFmtEnumProc(buf); + case DATE_YEARMONTH: + if (GetLocaleInfoA(lcid, LOCALE_SYEARMONTH | (flags & LOCALE_USE_CP_ACP), buf, 256)) + proc(buf, cal_id); break; - default: - FIXME("Unknown date format (%d)\n", dwFlags); - SetLastError(ERROR_INVALID_PARAMETER); - return FALSE; + default: + FIXME("Unknown date format (%d)\n", flags); + SetLastError(ERROR_INVALID_PARAMETER); + return FALSE; + } + return TRUE; +} + +/************************************************************************** + * EnumDateFormatsExW (KERNEL32.@) + */ +BOOL WINAPI EnumDateFormatsExW(DATEFMT_ENUMPROCEXW proc, LCID lcid, DWORD flags) +{ + CALID cal_id; + WCHAR buf[256]; + + if (!proc) + { + SetLastError(ERROR_INVALID_PARAMETER); + return FALSE; + } + + if (!GetLocaleInfoW(lcid, LOCALE_ICALENDARTYPE|LOCALE_RETURN_NUMBER, (LPWSTR)&cal_id, sizeof(cal_id)/sizeof(WCHAR))) + return FALSE; + + switch (flags & ~LOCALE_USE_CP_ACP) + { + case 0: + case DATE_SHORTDATE: + if (GetLocaleInfoW(lcid, LOCALE_SSHORTDATE | (flags & LOCALE_USE_CP_ACP), buf, 256)) + proc(buf, cal_id); + break; + + case DATE_LONGDATE: + if (GetLocaleInfoW(lcid, LOCALE_SLONGDATE | (flags & LOCALE_USE_CP_ACP), buf, 256)) + proc(buf, cal_id); + break; + + case DATE_YEARMONTH: + if (GetLocaleInfoW(lcid, LOCALE_SYEARMONTH | (flags & LOCALE_USE_CP_ACP), buf, 256)) + proc(buf, cal_id); + break; + + default: + FIXME("Unknown date format (%d)\n", flags); + SetLastError(ERROR_INVALID_PARAMETER); + return FALSE; + } + return TRUE; +} + +/************************************************************************** + * EnumDateFormatsA (KERNEL32.@) + * + * FIXME: MSDN mentions only LOCALE_USE_CP_ACP, should we handle + * LOCALE_NOUSEROVERRIDE here as well? + */ +BOOL WINAPI EnumDateFormatsA(DATEFMT_ENUMPROCA proc, LCID lcid, DWORD flags) +{ + char buf[256]; + + if (!proc) + { + SetLastError(ERROR_INVALID_PARAMETER); + return FALSE; + } + + switch (flags & ~LOCALE_USE_CP_ACP) + { + case 0: + case DATE_SHORTDATE: + if (GetLocaleInfoA(lcid, LOCALE_SSHORTDATE | (flags & LOCALE_USE_CP_ACP), buf, 256)) + proc(buf); + break; + + case DATE_LONGDATE: + if (GetLocaleInfoA(lcid, LOCALE_SLONGDATE | (flags & LOCALE_USE_CP_ACP), buf, 256)) + proc(buf); + break; + + case DATE_YEARMONTH: + if (GetLocaleInfoA(lcid, LOCALE_SYEARMONTH | (flags & LOCALE_USE_CP_ACP), buf, 256)) + proc(buf); + break; + + default: + FIXME("Unknown date format (%d)\n", flags); + SetLastError(ERROR_INVALID_PARAMETER); + return FALSE; } return TRUE; } @@ -1701,180 +1799,99 @@ BOOL WINAPI EnumDateFormatsA(DATEFMT_ENUMPROCA lpDateFmtEnumProc, LCID Locale, /************************************************************************** * EnumDateFormatsW (KERNEL32.@) */ -BOOL WINAPI EnumDateFormatsW(DATEFMT_ENUMPROCW lpDateFmtEnumProc, LCID Locale, DWORD dwFlags) +BOOL WINAPI EnumDateFormatsW(DATEFMT_ENUMPROCW proc, LCID lcid, DWORD flags) { WCHAR buf[256]; - if (!lpDateFmtEnumProc) + if (!proc) { SetLastError(ERROR_INVALID_PARAMETER); return FALSE; } - switch (dwFlags & ~LOCALE_USE_CP_ACP) + switch (flags & ~LOCALE_USE_CP_ACP) { - case 0: - case DATE_SHORTDATE: - if (GetLocaleInfoW(Locale, LOCALE_SSHORTDATE | (dwFlags & LOCALE_USE_CP_ACP), buf, 256)) - lpDateFmtEnumProc(buf); + case 0: + case DATE_SHORTDATE: + if (GetLocaleInfoW(lcid, LOCALE_SSHORTDATE | (flags & LOCALE_USE_CP_ACP), buf, 256)) + proc(buf); break; - case DATE_LONGDATE: - if (GetLocaleInfoW(Locale, LOCALE_SLONGDATE | (dwFlags & LOCALE_USE_CP_ACP), buf, 256)) - lpDateFmtEnumProc(buf); + case DATE_LONGDATE: + if (GetLocaleInfoW(lcid, LOCALE_SLONGDATE | (flags & LOCALE_USE_CP_ACP), buf, 256)) + proc(buf); break; - case DATE_YEARMONTH: - if (GetLocaleInfoW(Locale, LOCALE_SYEARMONTH | (dwFlags & LOCALE_USE_CP_ACP), buf, 256)) - lpDateFmtEnumProc(buf); + case DATE_YEARMONTH: + if (GetLocaleInfoW(lcid, LOCALE_SYEARMONTH | (flags & LOCALE_USE_CP_ACP), buf, 256)) + proc(buf); break; - default: - FIXME("Unknown date format (%d)\n", dwFlags); - SetLastError(ERROR_INVALID_PARAMETER); - return FALSE; + default: + FIXME("Unknown date format (%d)\n", flags); + SetLastError(ERROR_INVALID_PARAMETER); + return FALSE; } return TRUE; } /************************************************************************** * EnumTimeFormatsA (KERNEL32.@) + * + * FIXME: MSDN mentions only LOCALE_USE_CP_ACP, should we handle + * LOCALE_NOUSEROVERRIDE here as well? */ -BOOL WINAPI EnumTimeFormatsA( TIMEFMT_ENUMPROCA lpTimeFmtEnumProc, LCID Locale, DWORD dwFlags ) +BOOL WINAPI EnumTimeFormatsA(TIMEFMT_ENUMPROCA proc, LCID lcid, DWORD flags) { - LCID Loc = GetUserDefaultLCID(); - if(!lpTimeFmtEnumProc) + char buf[256]; + + if (!proc) { - SetLastError(ERROR_INVALID_PARAMETER); - return FALSE; - } - if(dwFlags) - { - FIXME("Unknown time format (%ld)\n", dwFlags); + SetLastError(ERROR_INVALID_PARAMETER); + return FALSE; } - switch( Loc ) - { - case 0x00000407: /* (Loc,"de_DE") */ - { - if(!(*lpTimeFmtEnumProc)("HH.mm")) return TRUE; - if(!(*lpTimeFmtEnumProc)("HH:mm:ss")) return TRUE; - if(!(*lpTimeFmtEnumProc)("H:mm:ss")) return TRUE; - if(!(*lpTimeFmtEnumProc)("H.mm")) return TRUE; - if(!(*lpTimeFmtEnumProc)("H.mm'Uhr'")) return TRUE; - return TRUE; - } + switch (flags & ~LOCALE_USE_CP_ACP) + { + case 0: + if (GetLocaleInfoA(lcid, LOCALE_STIMEFORMAT | (flags & LOCALE_USE_CP_ACP), buf, 256)) + proc(buf); + break; - case 0x0000040c: /* (Loc,"fr_FR") */ - case 0x00000c0c: /* (Loc,"fr_CA") */ - { - if(!(*lpTimeFmtEnumProc)("H:mm")) return TRUE; - if(!(*lpTimeFmtEnumProc)("HH:mm:ss")) return TRUE; - if(!(*lpTimeFmtEnumProc)("H:mm:ss")) return TRUE; - if(!(*lpTimeFmtEnumProc)("HH.mm")) return TRUE; - if(!(*lpTimeFmtEnumProc)("HH'h'mm")) return TRUE; + default: + FIXME("Unknown time format (%d)\n", flags); + SetLastError(ERROR_INVALID_PARAMETER); + return FALSE; + } return TRUE; - } - - case 0x00000809: /* (Loc,"en_UK") */ - case 0x00000c09: /* (Loc,"en_AU") */ - case 0x00001409: /* (Loc,"en_NZ") */ - case 0x00001809: /* (Loc,"en_IE") */ - { - if(!(*lpTimeFmtEnumProc)("h:mm:ss tt")) return TRUE; - if(!(*lpTimeFmtEnumProc)("HH:mm:ss")) return TRUE; - if(!(*lpTimeFmtEnumProc)("H:mm:ss")) return TRUE; - return TRUE; - } - - case 0x00001c09: /* (Loc,"en_ZA") */ - case 0x00002809: /* (Loc,"en_BZ") */ - case 0x00002c09: /* (Loc,"en_TT") */ - { - if(!(*lpTimeFmtEnumProc)("h:mm:ss tt")) return TRUE; - if(!(*lpTimeFmtEnumProc)("hh:mm:ss tt")) return TRUE; - return TRUE; - } - - default: /* default to US style "en_US" */ - { - if(!(*lpTimeFmtEnumProc)("h:mm:ss tt")) return TRUE; - if(!(*lpTimeFmtEnumProc)("hh:mm:ss tt")) return TRUE; - if(!(*lpTimeFmtEnumProc)("H:mm:ss")) return TRUE; - if(!(*lpTimeFmtEnumProc)("HH:mm:ss")) return TRUE; - return TRUE; - } - } } /************************************************************************** * EnumTimeFormatsW (KERNEL32.@) */ -BOOL WINAPI EnumTimeFormatsW( TIMEFMT_ENUMPROCW lpTimeFmtEnumProc, LCID Locale, DWORD dwFlags ) +BOOL WINAPI EnumTimeFormatsW(TIMEFMT_ENUMPROCW proc, LCID lcid, DWORD flags) { - LCID Loc = GetUserDefaultLCID(); - if(!lpTimeFmtEnumProc) + WCHAR buf[256]; + + if (!proc) { - SetLastError(ERROR_INVALID_PARAMETER); - return FALSE; - } - if(dwFlags) - { - FIXME("Unknown time format (%ld)\n", dwFlags); + SetLastError(ERROR_INVALID_PARAMETER); + return FALSE; } - switch( Loc ) - { - case 0x00000407: /* (Loc,"de_DE") */ - { - if(!(*lpTimeFmtEnumProc)(L"HH.mm")) return TRUE; - if(!(*lpTimeFmtEnumProc)(L"HH:mm:ss")) return TRUE; - if(!(*lpTimeFmtEnumProc)(L"H:mm:ss")) return TRUE; - if(!(*lpTimeFmtEnumProc)(L"H.mm")) return TRUE; - if(!(*lpTimeFmtEnumProc)(L"H.mm'Uhr'")) return TRUE; - return TRUE; - } + switch (flags & ~LOCALE_USE_CP_ACP) + { + case 0: + if (GetLocaleInfoW(lcid, LOCALE_STIMEFORMAT | (flags & LOCALE_USE_CP_ACP), buf, 256)) + proc(buf); + break; - case 0x0000040c: /* (Loc,"fr_FR") */ - case 0x00000c0c: /* (Loc,"fr_CA") */ - { - if(!(*lpTimeFmtEnumProc)(L"H:mm")) return TRUE; - if(!(*lpTimeFmtEnumProc)(L"HH:mm:ss")) return TRUE; - if(!(*lpTimeFmtEnumProc)(L"H:mm:ss")) return TRUE; - if(!(*lpTimeFmtEnumProc)(L"HH.mm")) return TRUE; - if(!(*lpTimeFmtEnumProc)(L"HH'h'mm")) return TRUE; + default: + FIXME("Unknown time format (%d)\n", flags); + SetLastError(ERROR_INVALID_PARAMETER); + return FALSE; + } return TRUE; - } - - case 0x00000809: /* (Loc,"en_UK") */ - case 0x00000c09: /* (Loc,"en_AU") */ - case 0x00001409: /* (Loc,"en_NZ") */ - case 0x00001809: /* (Loc,"en_IE") */ - { - if(!(*lpTimeFmtEnumProc)(L"h:mm:ss tt")) return TRUE; - if(!(*lpTimeFmtEnumProc)(L"HH:mm:ss")) return TRUE; - if(!(*lpTimeFmtEnumProc)(L"H:mm:ss")) return TRUE; - return TRUE; - } - - case 0x00001c09: /* (Loc,"en_ZA") */ - case 0x00002809: /* (Loc,"en_BZ") */ - case 0x00002c09: /* (Loc,"en_TT") */ - { - if(!(*lpTimeFmtEnumProc)(L"h:mm:ss tt")) return TRUE; - if(!(*lpTimeFmtEnumProc)(L"hh:mm:ss tt")) return TRUE; - return TRUE; - } - - default: /* default to US style "en_US" */ - { - if(!(*lpTimeFmtEnumProc)(L"h:mm:ss tt")) return TRUE; - if(!(*lpTimeFmtEnumProc)(L"hh:mm:ss tt")) return TRUE; - if(!(*lpTimeFmtEnumProc)(L"H:mm:ss")) return TRUE; - if(!(*lpTimeFmtEnumProc)(L"HH:mm:ss")) return TRUE; - return TRUE; - } - } } /****************************************************************************** @@ -1940,7 +1957,7 @@ static BOOL NLS_EnumCalendarInfoAW(void *calinfoproc, LCID locale, if (opt == NULL) { SetLastError(ERROR_NOT_ENOUGH_MEMORY); - goto NLS_EnumCalendarInfoAW_Cleanup; + goto cleanup; } if (GetLocaleInfoW(locale, LOCALE_IOPTIONALCALENDAR, opt, optSz)) iter = opt; @@ -1967,14 +1984,14 @@ static BOOL NLS_EnumCalendarInfoAW(void *calinfoproc, LCID locale, if (bufSz >= newSz) { ERR("Buffer resizing disorder: was %d, requested %d.\n", bufSz, newSz); - goto NLS_EnumCalendarInfoAW_Cleanup; + goto cleanup; } bufSz = newSz; WARN("Buffer too small; resizing to %d bytes.\n", bufSz); buf = HeapReAlloc(GetProcessHeap(), 0, buf, bufSz); if (buf == NULL) - goto NLS_EnumCalendarInfoAW_Cleanup; - } else goto NLS_EnumCalendarInfoAW_Cleanup; + goto cleanup; + } else goto cleanup; } } while (!ret); @@ -2008,7 +2025,7 @@ static BOOL NLS_EnumCalendarInfoAW(void *calinfoproc, LCID locale, } } -NLS_EnumCalendarInfoAW_Cleanup: +cleanup: HeapFree(GetProcessHeap(), 0, opt); HeapFree(GetProcessHeap(), 0, buf); return ret; @@ -2016,12 +2033,14 @@ NLS_EnumCalendarInfoAW_Cleanup: /****************************************************************************** * EnumCalendarInfoA [KERNEL32.@] + * + * See EnumCalendarInfoAW. */ BOOL WINAPI EnumCalendarInfoA( CALINFO_ENUMPROCA calinfoproc,LCID locale, CALID calendar,CALTYPE caltype ) { - FIXME("(%p,0x%04lx,0x%08lx,0x%08lx),stub!\n",calinfoproc,locale,calendar,caltype); - return NLS_EnumCalendarInfoAW(calinfoproc, locale, calendar, caltype, FALSE, FALSE); + TRACE("(%p,0x%08x,0x%08x,0x%08x)\n", calinfoproc, locale, calendar, caltype); + return NLS_EnumCalendarInfoAW(calinfoproc, locale, calendar, caltype, FALSE, FALSE); } /****************************************************************************** diff --git a/dll/win32/kernel32/misc/profile.c b/dll/win32/kernel32/misc/profile.c index e327029f378..57805aa11dd 100644 --- a/dll/win32/kernel32/misc/profile.c +++ b/dll/win32/kernel32/misc/profile.c @@ -84,25 +84,6 @@ static RTL_CRITICAL_SECTION PROFILE_CritSect = { &critsect_debug, -1, 0, 0, 0, 0 static const char hex[16] = "0123456789ABCDEF"; -static __inline WCHAR *memchrW( const WCHAR *ptr, WCHAR ch, size_t n ) -{ - const WCHAR *end; - for (end = ptr + n; ptr < end; ptr++) - if (*ptr == ch) - return (WCHAR *)(ULONG_PTR)ptr; - return NULL; -} - -static __inline WCHAR *memrchrW( const WCHAR *ptr, WCHAR ch, size_t n ) -{ - const WCHAR *end; - WCHAR *ret = NULL; - for (end = ptr + n; ptr < end; ptr++) - if (*ptr == ch) - ret = (WCHAR *)(ULONG_PTR)ptr; - return ret; -} - /*********************************************************************** * PROFILE_CopyEntry * diff --git a/dll/win32/kernel32/misc/stubs.c b/dll/win32/kernel32/misc/stubs.c index c852f34d1f9..030f07c30d6 100644 --- a/dll/win32/kernel32/misc/stubs.c +++ b/dll/win32/kernel32/misc/stubs.c @@ -958,17 +958,6 @@ SetThreadStackGuarantee(IN OUT PULONG StackSizeInBytes) return FALSE; } -HANDLE -WINAPI -ReOpenFile(IN HANDLE hOriginalFile, - IN DWORD dwDesiredAccess, - IN DWORD dwShareMode, - IN DWORD dwFlags) -{ - STUB; - return INVALID_HANDLE_VALUE; -} - BOOL WINAPI SetProcessWorkingSetSizeEx(IN HANDLE hProcess, @@ -1259,3 +1248,134 @@ UnregisterConsoleIME(VOID) STUB; return FALSE; } + +/* + * @unimplemented + */ +BOOL +WINAPI +BaseCheckRunApp(IN DWORD Unknown1, + IN DWORD Unknown2, + IN DWORD Unknown3, + IN DWORD Unknown4, + IN DWORD Unknown5, + IN DWORD Unknown6, + IN DWORD Unknown7, + IN DWORD Unknown8, + IN DWORD Unknown9, + IN DWORD Unknown10) +{ + STUB; + return FALSE; +} + +/* + * @unimplemented + */ +BOOL +WINAPI +BasepCheckWinSaferRestrictions(IN DWORD Unknown1, + IN DWORD Unknown2, + IN DWORD Unknown3, + IN DWORD Unknown4, + IN DWORD Unknown5, + IN DWORD Unknown6) +{ + STUB; + return FALSE; +} + +/* + * @unimplemented + */ +BOOL +WINAPI +NumaVirtualQueryNode(IN DWORD Unknown1, + IN DWORD Unknown2, + IN DWORD Unknown3, + IN DWORD Unknown4) +{ + STUB; + return FALSE; +} + +/* + * @unimplemented + */ +HANDLE +WINAPI +ReOpenFile(IN HANDLE hOriginalFile, + IN DWORD dwDesiredAccess, + IN DWORD dwShareMode, + IN DWORD dwFlags) +{ + STUB; + return INVALID_HANDLE_VALUE; +} + +/* + * @unimplemented + */ +BOOL +WINAPI +SetLastConsoleEventActive(VOID) +{ + STUB; + return FALSE; +} + +/* + * @unimplemented + */ +BOOL +WINAPI +SetConsoleCommandHistoryMode(IN DWORD dwMode) +{ + STUB; + return FALSE; +} + +/* + * @unimplemented + */ +BOOL +WINAPI +SetLocalPrimaryComputerNameA(IN DWORD Unknown1, + IN DWORD Unknown2) +{ + STUB; + return FALSE; +} + +/* + * @unimplemented + */ +BOOL +WINAPI +SetLocalPrimaryComputerNameW(IN DWORD Unknown1, + IN DWORD Unknown2) +{ + STUB; + return FALSE; +} + +/* + * @unimplemented + */ +VOID +WINAPI +SetTermsrvAppInstallMode(IN BOOL bInstallMode) +{ + STUB; +} + +/* + * @unimplemented + */ +BOOL +WINAPI +TermsrvAppInstallMode(VOID) +{ + STUB; + return FALSE; +} diff --git a/dll/win32/kernel32/misc/version.c b/dll/win32/kernel32/misc/version.c index cba61e387f3..bb9288e930f 100644 --- a/dll/win32/kernel32/misc/version.c +++ b/dll/win32/kernel32/misc/version.c @@ -9,10 +9,9 @@ #include #include - -#include - -WINE_DEFAULT_DEBUG_CHANNEL(kernel32Ver); +#define NDEBUG +#include +static ULONG gDebugChannel = kernel32ver; #define UNICODIZE1(x) L##x #define UNICODIZE(x) UNICODIZE1(x) diff --git a/dll/win32/kernel32/nls/cym.nls b/dll/win32/kernel32/nls/cym.nls index b661b5fb551..28df9b24621 100644 Binary files a/dll/win32/kernel32/nls/cym.nls and b/dll/win32/kernel32/nls/cym.nls differ diff --git a/dll/win32/kernel32/nls/lth.nls b/dll/win32/kernel32/nls/lth.nls index a5b32cb51f6..40944c167e4 100644 Binary files a/dll/win32/kernel32/nls/lth.nls and b/dll/win32/kernel32/nls/lth.nls differ diff --git a/dll/win32/kernel32/nls/ukr.nls b/dll/win32/kernel32/nls/ukr.nls index a32aac56359..6620d0e3959 100644 Binary files a/dll/win32/kernel32/nls/ukr.nls and b/dll/win32/kernel32/nls/ukr.nls differ diff --git a/dll/win32/kernel32/process/session.c b/dll/win32/kernel32/process/session.c index 5df4c984a3a..3c61ebec7a6 100644 --- a/dll/win32/kernel32/process/session.c +++ b/dll/win32/kernel32/process/session.c @@ -9,9 +9,9 @@ * 2001-12-07 created */ #include -#include - -WINE_DEFAULT_DEBUG_CHANNEL(kernel32session); +#define NDEBUG +#include +//static ULONG gDebugChannel = kernel32session; not actually used DWORD ActiveConsoleSessionId = 0;