Author: akhaldi Date: Fri Nov 27 20:11:02 2015 New Revision: 70160
URL: http://svn.reactos.org/svn/reactos?rev=70160&view=rev Log: [KERNEL32] Sync lcformat.c with Wine Staging 1.7.55. CORE-10536
Modified: trunk/reactos/dll/win32/kernel32/winnls/string/lcformat.c trunk/reactos/media/doc/README.WINE
Modified: trunk/reactos/dll/win32/kernel32/winnls/string/lcformat.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/kernel32/winnls/s... ============================================================================== --- trunk/reactos/dll/win32/kernel32/winnls/string/lcformat.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/kernel32/winnls/string/lcformat.c [iso-8859-1] Fri Nov 27 20:11:02 2015 @@ -3,7 +3,7 @@ * * Copyright 1995 Martin von Loewis * Copyright 1998 David Lee Lambert - * Copyright 2000 Julio Câ©sar Gâ°zquez + * Copyright 2000 Julio César Gázquez * Copyright 2003 Jon Griffiths * Copyright 2005 Dmitry Timoshkov * @@ -713,7 +713,7 @@ } cchWritten++; /* Include terminating NUL */
- TRACE("returning length=%d, ouput=%s\n", cchWritten, debugstr_w(lpStr)); + TRACE("returning length=%d, output=%s\n", cchWritten, debugstr_w(lpStr)); return cchWritten;
overrun: @@ -1663,6 +1663,98 @@ * alternate calendars is determined. */
+enum enum_callback_type { + CALLBACK_ENUMPROC, + CALLBACK_ENUMPROCEX, + CALLBACK_ENUMPROCEXEX +}; + +struct enumdateformats_context { + enum enum_callback_type type; /* callback kind */ + union { + DATEFMT_ENUMPROCW callback; /* user callback pointer */ + DATEFMT_ENUMPROCEXW callbackex; + DATEFMT_ENUMPROCEXEX callbackexex; + } u; + LCID lcid; /* locale of interest */ + DWORD flags; + LPARAM lParam; + BOOL unicode; /* A vs W callback type, only for regular and Ex callbacks */ +}; + +/****************************************************************************** + * NLS_EnumDateFormats <internal> + * Enumerates date formats for a specified locale. + * + * PARAMS + * ctxt [I] enumeration context, see 'struct enumdateformats_context' + * + * RETURNS + * Success: TRUE. + * Failure: FALSE. Use GetLastError() to determine the cause. + */ +static BOOL NLS_EnumDateFormats(const struct enumdateformats_context *ctxt) +{ + WCHAR bufW[256]; + char bufA[256]; + LCTYPE lctype; + CALID cal_id; + INT ret; + + if (!ctxt->u.callback) + { + SetLastError(ERROR_INVALID_PARAMETER); + return FALSE; + } + + if (!GetLocaleInfoW(ctxt->lcid, LOCALE_ICALENDARTYPE|LOCALE_RETURN_NUMBER, (LPWSTR)&cal_id, sizeof(cal_id)/sizeof(WCHAR))) + return FALSE; + + switch (ctxt->flags & ~LOCALE_USE_CP_ACP) + { + case 0: + case DATE_SHORTDATE: + lctype = LOCALE_SSHORTDATE; + break; + case DATE_LONGDATE: + lctype = LOCALE_SLONGDATE; + break; + case DATE_YEARMONTH: + lctype = LOCALE_SYEARMONTH; + break; + default: + FIXME("Unknown date format (0x%08x)\n", ctxt->flags); + SetLastError(ERROR_INVALID_PARAMETER); + return FALSE; + } + + lctype |= ctxt->flags & LOCALE_USE_CP_ACP; + if (ctxt->unicode) + ret = GetLocaleInfoW(ctxt->lcid, lctype, bufW, sizeof(bufW)/sizeof(bufW[0])); + else + ret = GetLocaleInfoA(ctxt->lcid, lctype, bufA, sizeof(bufA)/sizeof(bufA[0])); + + if (ret) + { + switch (ctxt->type) + { + case CALLBACK_ENUMPROC: + ctxt->u.callback(ctxt->unicode ? bufW : (WCHAR*)bufA); + break; + case CALLBACK_ENUMPROCEX: + ctxt->u.callbackex(ctxt->unicode ? bufW : (WCHAR*)bufA, cal_id); + break; + case CALLBACK_ENUMPROCEXEX: + ctxt->u.callbackexex(bufW, cal_id, ctxt->lParam); + break; + default: + ; + } + } + + return TRUE; +} + /************************************************************************** * EnumDateFormatsExA (KERNEL32.@) * @@ -1671,197 +1763,155 @@ */ BOOL WINAPI EnumDateFormatsExA(DATEFMT_ENUMPROCEXA proc, LCID lcid, DWORD flags) { - CALID cal_id; - char buf[256]; - - if (!proc) + struct enumdateformats_context ctxt; + + ctxt.type = CALLBACK_ENUMPROCEX; + ctxt.u.callbackex = (DATEFMT_ENUMPROCEXW)proc; + ctxt.lcid = lcid; + ctxt.flags = flags; + ctxt.unicode = FALSE; + + return NLS_EnumDateFormats(&ctxt); +} + +/************************************************************************** + * EnumDateFormatsExW (KERNEL32.@) + */ +BOOL WINAPI EnumDateFormatsExW(DATEFMT_ENUMPROCEXW proc, LCID lcid, DWORD flags) +{ + struct enumdateformats_context ctxt; + + ctxt.type = CALLBACK_ENUMPROCEX; + ctxt.u.callbackex = proc; + ctxt.lcid = lcid; + ctxt.flags = flags; + ctxt.unicode = TRUE; + + return NLS_EnumDateFormats(&ctxt); +} + +/************************************************************************** + * 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) +{ + struct enumdateformats_context ctxt; + + ctxt.type = CALLBACK_ENUMPROC; + ctxt.u.callback = (DATEFMT_ENUMPROCW)proc; + ctxt.lcid = lcid; + ctxt.flags = flags; + ctxt.unicode = FALSE; + + return NLS_EnumDateFormats(&ctxt); +} + +/************************************************************************** + * EnumDateFormatsW (KERNEL32.@) + */ +BOOL WINAPI EnumDateFormatsW(DATEFMT_ENUMPROCW proc, LCID lcid, DWORD flags) +{ + struct enumdateformats_context ctxt; + + ctxt.type = CALLBACK_ENUMPROC; + ctxt.u.callback = proc; + ctxt.lcid = lcid; + ctxt.flags = flags; + ctxt.unicode = TRUE; + + return NLS_EnumDateFormats(&ctxt); +} + +struct enumtimeformats_context { + enum enum_callback_type type; /* callback kind */ + union { + TIMEFMT_ENUMPROCW callback; /* user callback pointer */ + TIMEFMT_ENUMPROCEX callbackex; + } u; + LCID lcid; /* locale of interest */ + DWORD flags; + LPARAM lParam; + BOOL unicode; /* A vs W callback type, only for regular and Ex callbacks */ +}; + +static BOOL NLS_EnumTimeFormats(struct enumtimeformats_context *ctxt) +{ + WCHAR bufW[256]; + char bufA[256]; + LCTYPE lctype; + INT ret; + + if (!ctxt->u.callback) { 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) + switch (ctxt->flags & ~LOCALE_USE_CP_ACP) { case 0: - case DATE_SHORTDATE: - if (GetLocaleInfoA(lcid, LOCALE_SSHORTDATE | (flags & LOCALE_USE_CP_ACP), buf, 256)) - proc(buf, cal_id); + lctype = LOCALE_STIMEFORMAT; break; - - case DATE_LONGDATE: - if (GetLocaleInfoA(lcid, LOCALE_SLONGDATE | (flags & LOCALE_USE_CP_ACP), buf, 256)) - proc(buf, cal_id); + case TIME_NOSECONDS: + lctype = LOCALE_SSHORTTIME; break; - - 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", flags); + FIXME("Unknown time format (%d)\n", ctxt->flags); SetLastError(ERROR_INVALID_PARAMETER); return FALSE; } + + lctype |= ctxt->flags & LOCALE_USE_CP_ACP; + if (ctxt->unicode) + ret = GetLocaleInfoW(ctxt->lcid, lctype, bufW, sizeof(bufW)/sizeof(bufW[0])); + else + ret = GetLocaleInfoA(ctxt->lcid, lctype, bufA, sizeof(bufA)/sizeof(bufA[0])); + + if (ret) + { + switch (ctxt->type) + { + case CALLBACK_ENUMPROC: + ctxt->u.callback(ctxt->unicode ? bufW : (WCHAR*)bufA); + break; + case CALLBACK_ENUMPROCEX: + ctxt->u.callbackex(bufW, ctxt->lParam); + break; + default: + ; + } + } + 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.@) + * EnumTimeFormatsA (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); +BOOL WINAPI EnumTimeFormatsA(TIMEFMT_ENUMPROCA proc, LCID lcid, DWORD flags) +{ + struct enumtimeformats_context ctxt; + + /* EnumTimeFormatsA doesn't support flags, EnumTimeFormatsW does. */ + if (flags & ~LOCALE_USE_CP_ACP) + { + SetLastError(ERROR_INVALID_FLAGS); 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; -} - -/************************************************************************** - * EnumDateFormatsW (KERNEL32.@) - */ -BOOL WINAPI EnumDateFormatsW(DATEFMT_ENUMPROCW proc, LCID lcid, DWORD flags) -{ - WCHAR buf[256]; - - if (!proc) - { - SetLastError(ERROR_INVALID_PARAMETER); - 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); - break; - - case DATE_LONGDATE: - if (GetLocaleInfoW(lcid, LOCALE_SLONGDATE | (flags & LOCALE_USE_CP_ACP), buf, 256)) - proc(buf); - break; - - 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", 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 proc, LCID lcid, DWORD flags) -{ - char buf[256]; - - if (!proc) - { - SetLastError(ERROR_INVALID_PARAMETER); - return FALSE; - } - - switch (flags & ~LOCALE_USE_CP_ACP) - { - case 0: - if (GetLocaleInfoA(lcid, LOCALE_STIMEFORMAT | (flags & LOCALE_USE_CP_ACP), buf, 256)) - proc(buf); - break; - - default: - FIXME("Unknown time format (%d)\n", flags); - SetLastError(ERROR_INVALID_PARAMETER); - return FALSE; - } - return TRUE; + ctxt.type = CALLBACK_ENUMPROC; + ctxt.u.callback = (TIMEFMT_ENUMPROCW)proc; + ctxt.lcid = lcid; + ctxt.flags = flags; + ctxt.unicode = FALSE; + + return NLS_EnumTimeFormats(&ctxt); }
/************************************************************************** @@ -1869,49 +1919,37 @@ */ BOOL WINAPI EnumTimeFormatsW(TIMEFMT_ENUMPROCW proc, LCID lcid, DWORD flags) { - WCHAR buf[256]; - - if (!proc) - { - SetLastError(ERROR_INVALID_PARAMETER); - return FALSE; - } - - switch (flags & ~LOCALE_USE_CP_ACP) - { - case 0: - if (GetLocaleInfoW(lcid, LOCALE_STIMEFORMAT | (flags & LOCALE_USE_CP_ACP), buf, 256)) - proc(buf); - break; - - default: - FIXME("Unknown time format (%d)\n", flags); - SetLastError(ERROR_INVALID_PARAMETER); - return FALSE; - } - return TRUE; -} + struct enumtimeformats_context ctxt; + + ctxt.type = CALLBACK_ENUMPROC; + ctxt.u.callback = proc; + ctxt.lcid = lcid; + ctxt.flags = flags; + ctxt.unicode = TRUE; + + return NLS_EnumTimeFormats(&ctxt); +} + +struct enumcalendar_context { + enum enum_callback_type type; /* callback kind */ + union { + CALINFO_ENUMPROCW callback; /* user callback pointer */ + CALINFO_ENUMPROCEXW callbackex; + CALINFO_ENUMPROCEXEX callbackexex; + } u; + LCID lcid; /* locale of interest */ + CALID calendar; /* specific calendar or ENUM_ALL_CALENDARS */ + CALTYPE caltype; /* calendar information type */ + LPARAM lParam; /* user input parameter passed to callback, for ExEx case only */ + BOOL unicode; /* A vs W callback type, only for regular and Ex callbacks */ +};
/****************************************************************************** - * NLS_EnumCalendarInfoAW <internal> + * NLS_EnumCalendarInfo <internal> * Enumerates calendar information for a specified locale. * * PARAMS - * calinfoproc [I] Pointer to the callback - * locale [I] The locale for which to retrieve calendar information. - * This parameter can be a locale identifier created by the - * MAKELCID macro, or one of the following values: - * LOCALE_SYSTEM_DEFAULT - * Use the default system locale. - * LOCALE_USER_DEFAULT - * Use the default user locale. - * calendar [I] The calendar for which information is requested, or - * ENUM_ALL_CALENDARS. - * caltype [I] The type of calendar information to be returned. Note - * that only one CALTYPE value can be specified per call - * of this function, except where noted. - * unicode [I] Specifies if the callback expects a unicode string. - * ex [I] Specifies if the callback needs the calendar identifier. + * ctxt [I] enumeration context, see 'struct enumcalendar_context' * * RETURNS * Success: TRUE. @@ -1926,14 +1964,14 @@ * TODO * The above note should be respected by GetCalendarInfoA. */ -static BOOL NLS_EnumCalendarInfoAW(void *calinfoproc, LCID locale, - CALID calendar, CALTYPE caltype, BOOL unicode, BOOL ex ) +static BOOL NLS_EnumCalendarInfo(const struct enumcalendar_context *ctxt) { WCHAR *buf, *opt = NULL, *iter = NULL; + CALID calendar = ctxt->calendar; BOOL ret = FALSE; int bufSz = 200; /* the size of the buffer */
- if (calinfoproc == NULL) + if (ctxt->u.callback == NULL) { SetLastError(ERROR_INVALID_PARAMETER); return FALSE; @@ -1948,7 +1986,7 @@
if (calendar == ENUM_ALL_CALENDARS) { - int optSz = GetLocaleInfoW(locale, LOCALE_IOPTIONALCALENDAR, NULL, 0); + int optSz = GetLocaleInfoW(ctxt->lcid, LOCALE_IOPTIONALCALENDAR, NULL, 0); if (optSz > 1) { opt = HeapAlloc(GetProcessHeap(), 0, optSz * sizeof(WCHAR)); @@ -1957,28 +1995,30 @@ SetLastError(ERROR_NOT_ENOUGH_MEMORY); goto cleanup; } - if (GetLocaleInfoW(locale, LOCALE_IOPTIONALCALENDAR, opt, optSz)) + if (GetLocaleInfoW(ctxt->lcid, LOCALE_IOPTIONALCALENDAR, opt, optSz)) iter = opt; } - calendar = NLS_GetLocaleNumber(locale, LOCALE_ICALENDARTYPE); + calendar = NLS_GetLocaleNumber(ctxt->lcid, LOCALE_ICALENDARTYPE); }
while (TRUE) /* loop through calendars */ { do /* loop until there's no error */ { - if (unicode) - ret = GetCalendarInfoW(locale, calendar, caltype, buf, bufSz / sizeof(WCHAR), NULL); - else ret = GetCalendarInfoA(locale, calendar, caltype, (CHAR*)buf, bufSz / sizeof(CHAR), NULL); + if (ctxt->caltype & CAL_RETURN_NUMBER) + ret = GetCalendarInfoW(ctxt->lcid, calendar, ctxt->caltype, NULL, bufSz / sizeof(WCHAR), (LPDWORD)buf); + else if (ctxt->unicode) + ret = GetCalendarInfoW(ctxt->lcid, calendar, ctxt->caltype, buf, bufSz / sizeof(WCHAR), NULL); + else ret = GetCalendarInfoA(ctxt->lcid, calendar, ctxt->caltype, (CHAR*)buf, bufSz / sizeof(CHAR), NULL);
if (!ret) { if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) { /* so resize it */ int newSz; - if (unicode) - newSz = GetCalendarInfoW(locale, calendar, caltype, NULL, 0, NULL) * sizeof(WCHAR); - else newSz = GetCalendarInfoA(locale, calendar, caltype, NULL, 0, NULL) * sizeof(CHAR); + if (ctxt->unicode) + newSz = GetCalendarInfoW(ctxt->lcid, calendar, ctxt->caltype, NULL, 0, NULL) * sizeof(WCHAR); + else newSz = GetCalendarInfoA(ctxt->lcid, calendar, ctxt->caltype, NULL, 0, NULL) * sizeof(CHAR); if (bufSz >= newSz) { ERR("Buffer resizing disorder: was %d, requested %d.\n", bufSz, newSz); @@ -1998,10 +2038,20 @@ * we must check for Ex, but we don't care about Unicode * because the buffer is already in the correct format. */ - if (ex) { - ret = ((CALINFO_ENUMPROCEXW)calinfoproc)(buf, calendar); - } else - ret = ((CALINFO_ENUMPROCW)calinfoproc)(buf); + switch (ctxt->type) + { + case CALLBACK_ENUMPROC: + ret = ctxt->u.callback(buf); + break; + case CALLBACK_ENUMPROCEX: + ret = ctxt->u.callbackex(buf, calendar); + break; + case CALLBACK_ENUMPROCEXEX: + ret = ctxt->u.callbackexex(buf, calendar, NULL, ctxt->lParam); + break; + default: + ; + }
if (!ret) { /* the callback told to stop */ ret = TRUE; @@ -2031,50 +2081,82 @@
/****************************************************************************** * EnumCalendarInfoA [KERNEL32.@] - * - * See EnumCalendarInfoAW. */ BOOL WINAPI EnumCalendarInfoA( CALINFO_ENUMPROCA calinfoproc,LCID locale, CALID calendar,CALTYPE caltype ) { + struct enumcalendar_context ctxt; + TRACE("(%p,0x%08x,0x%08x,0x%08x)\n", calinfoproc, locale, calendar, caltype); - return NLS_EnumCalendarInfoAW(calinfoproc, locale, calendar, caltype, FALSE, FALSE); + + ctxt.type = CALLBACK_ENUMPROC; + ctxt.u.callback = (CALINFO_ENUMPROCW)calinfoproc; + ctxt.lcid = locale; + ctxt.calendar = calendar; + ctxt.caltype = caltype; + ctxt.lParam = 0; + ctxt.unicode = FALSE; + return NLS_EnumCalendarInfo(&ctxt); }
/****************************************************************************** * EnumCalendarInfoW [KERNEL32.@] - * - * See EnumCalendarInfoAW. */ BOOL WINAPI EnumCalendarInfoW( CALINFO_ENUMPROCW calinfoproc,LCID locale, CALID calendar,CALTYPE caltype ) { + struct enumcalendar_context ctxt; + TRACE("(%p,0x%08x,0x%08x,0x%08x)\n", calinfoproc, locale, calendar, caltype); - return NLS_EnumCalendarInfoAW(calinfoproc, locale, calendar, caltype, TRUE, FALSE); + + ctxt.type = CALLBACK_ENUMPROC; + ctxt.u.callback = calinfoproc; + ctxt.lcid = locale; + ctxt.calendar = calendar; + ctxt.caltype = caltype; + ctxt.lParam = 0; + ctxt.unicode = TRUE; + return NLS_EnumCalendarInfo(&ctxt); }
/****************************************************************************** * EnumCalendarInfoExA [KERNEL32.@] - * - * See EnumCalendarInfoAW. */ BOOL WINAPI EnumCalendarInfoExA( CALINFO_ENUMPROCEXA calinfoproc,LCID locale, CALID calendar,CALTYPE caltype ) { + struct enumcalendar_context ctxt; + TRACE("(%p,0x%08x,0x%08x,0x%08x)\n", calinfoproc, locale, calendar, caltype); - return NLS_EnumCalendarInfoAW(calinfoproc, locale, calendar, caltype, FALSE, TRUE); + + ctxt.type = CALLBACK_ENUMPROCEX; + ctxt.u.callbackex = (CALINFO_ENUMPROCEXW)calinfoproc; + ctxt.lcid = locale; + ctxt.calendar = calendar; + ctxt.caltype = caltype; + ctxt.lParam = 0; + ctxt.unicode = FALSE; + return NLS_EnumCalendarInfo(&ctxt); }
/****************************************************************************** * EnumCalendarInfoExW [KERNEL32.@] - * - * See EnumCalendarInfoAW. */ BOOL WINAPI EnumCalendarInfoExW( CALINFO_ENUMPROCEXW calinfoproc,LCID locale, CALID calendar,CALTYPE caltype ) { + struct enumcalendar_context ctxt; + TRACE("(%p,0x%08x,0x%08x,0x%08x)\n", calinfoproc, locale, calendar, caltype); - return NLS_EnumCalendarInfoAW(calinfoproc, locale, calendar, caltype, TRUE, TRUE); + + ctxt.type = CALLBACK_ENUMPROCEX; + ctxt.u.callbackex = calinfoproc; + ctxt.lcid = locale; + ctxt.calendar = calendar; + ctxt.caltype = caltype; + ctxt.lParam = 0; + ctxt.unicode = TRUE; + return NLS_EnumCalendarInfo(&ctxt); }
/*********************************************************************
Modified: trunk/reactos/media/doc/README.WINE URL: http://svn.reactos.org/svn/reactos/trunk/reactos/media/doc/README.WINE?rev=7... ============================================================================== --- trunk/reactos/media/doc/README.WINE [iso-8859-1] (original) +++ trunk/reactos/media/doc/README.WINE [iso-8859-1] Fri Nov 27 20:11:02 2015 @@ -276,7 +276,7 @@ reactos/dll/win32/kernel32/winnls/string/collation.c # Synced to WineStaging-1.7.55 reactos/dll/win32/kernel32/winnls/string/format_msg.c # Synced to WineStaging-1.7.55 reactos/dll/win32/kernel32/winnls/string/lang.c # Synced in r52754 - reactos/dll/win32/kernel32/winnls/string/lcformat.c # Synced in r52754 + reactos/dll/win32/kernel32/winnls/string/lcformat.c # Synced to WineStaging-1.7.55 reactos/dll/win32/kernel32/winnls/string/nls.c # Synced in r52754 reactos/dll/win32/kernel32/winnls/string/sortkey.c # Synced to WineStaging-1.7.37