Commit in reactos/lib/kernel32/misc on MAIN
lang.c+61-1061.16 -> 1.17
cleanup of the unicode mess (im)ported from wine

reactos/lib/kernel32/misc
lang.c 1.16 -> 1.17
diff -u -r1.16 -r1.17
--- lang.c	2 May 2004 15:47:34 -0000	1.16
+++ lang.c	3 May 2004 16:59:59 -0000	1.17
@@ -1,4 +1,4 @@
-/* $Id: lang.c,v 1.16 2004/05/02 15:47:34 weiden Exp $
+/* $Id: lang.c,v 1.17 2004/05/03 16:59:59 weiden Exp $
  *
  * COPYRIGHT: See COPYING in the top level directory
  * PROJECT  : ReactOS user mode libraries
@@ -463,11 +463,11 @@
     CodePageInfo->DefaultChar[0] = '?';
     for (i = 1; i < MAX_DEFAULTCHAR; i++)
 	{
-	CodePageInfo->DefaultChar[i] = '\0';
+	CodePageInfo->DefaultChar[i] = 0;
 	}
     for (i = 0; i < MAX_LEADBYTES; i++)
 	{
-	CodePageInfo->LeadByte[i] = '\0';
+	CodePageInfo->LeadByte[i] = 0;
 	}
 
     return TRUE;
@@ -621,96 +621,57 @@
 
 const WCHAR *RosGetLocaleValueName( DWORD lctype )
 {
-    static const WCHAR iCalendarTypeW[] = {'i','C','a','l','e','n','d','a','r','T','y','p','e',0};
-    static const WCHAR iCountryW[] = {'i','C','o','u','n','t','r','y',0};
-    static const WCHAR iCurrDigitsW[] = {'i','C','u','r','r','D','i','g','i','t','s',0};
-    static const WCHAR iCurrencyW[] = {'i','C','u','r','r','e','n','c','y',0};
-    static const WCHAR iDateW[] = {'i','D','a','t','e',0};
-    static const WCHAR iDigitsW[] = {'i','D','i','g','i','t','s',0};
-    static const WCHAR iFirstDayOfWeekW[] = {'i','F','i','r','s','t','D','a','y','O','f','W','e','e','k',0};
-    static const WCHAR iFirstWeekOfYearW[] = {'i','F','i','r','s','t','W','e','e','k','O','f','Y','e','a','r',0};
-    static const WCHAR iLDateW[] = {'i','L','D','a','t','e',0};
-    static const WCHAR iLZeroW[] = {'i','L','Z','e','r','o',0};
-    static const WCHAR iMeasureW[] = {'i','M','e','a','s','u','r','e',0};
-    static const WCHAR iNegCurrW[] = {'i','N','e','g','C','u','r','r',0};
-    static const WCHAR iNegNumberW[] = {'i','N','e','g','N','u','m','b','e','r',0};
-    static const WCHAR iPaperSizeW[] = {'i','P','a','p','e','r','S','i','z','e',0};
-    static const WCHAR iTLZeroW[] = {'i','T','L','Z','e','r','o',0};
-    static const WCHAR iTimeW[] = {'i','T','i','m','e',0};
-    static const WCHAR s1159W[] = {'s','1','1','5','9',0};
-    static const WCHAR s2359W[] = {'s','2','3','5','9',0};
-    static const WCHAR sCountryW[] = {'s','C','o','u','n','t','r','y',0};
-    static const WCHAR sCurrencyW[] = {'s','C','u','r','r','e','n','c','y',0};
-    static const WCHAR sDateW[] = {'s','D','a','t','e',0};
-    static const WCHAR sDecimalW[] = {'s','D','e','c','i','m','a','l',0};
-    static const WCHAR sGroupingW[] = {'s','G','r','o','u','p','i','n','g',0};
-    static const WCHAR sLanguageW[] = {'s','L','a','n','g','u','a','g','e',0};
-    static const WCHAR sListW[] = {'s','L','i','s','t',0};
-    static const WCHAR sLongDateW[] = {'s','L','o','n','g','D','a','t','e',0};
-    static const WCHAR sMonDecimalSepW[] = {'s','M','o','n','D','e','c','i','m','a','l','S','e','p',0};
-    static const WCHAR sMonGroupingW[] = {'s','M','o','n','G','r','o','u','p','i','n','g',0};
-    static const WCHAR sMonThousandSepW[] = {'s','M','o','n','T','h','o','u','s','a','n','d','S','e','p',0};
-    static const WCHAR sNegativeSignW[] = {'s','N','e','g','a','t','i','v','e','S','i','g','n',0};
-    static const WCHAR sPositiveSignW[] = {'s','P','o','s','i','t','i','v','e','S','i','g','n',0};
-    static const WCHAR sShortDateW[] = {'s','S','h','o','r','t','D','a','t','e',0};
-    static const WCHAR sThousandW[] = {'s','T','h','o','u','s','a','n','d',0};
-    static const WCHAR sTimeFormatW[] = {'s','T','i','m','e','F','o','r','m','a','t',0};
-    static const WCHAR sTimeW[] = {'s','T','i','m','e',0};
-    static const WCHAR sYearMonthW[] = {'s','Y','e','a','r','M','o','n','t','h',0};
-
     switch (lctype & ~LOCALE_LOCALEINFOFLAGSMASK)
     {
     /* These values are used by SetLocaleInfo and GetLocaleInfo, and
      * the values are stored in the registry, confirmed under Windows.
      */
-    case LOCALE_ICALENDARTYPE:    return iCalendarTypeW;
-    case LOCALE_ICURRDIGITS:      return iCurrDigitsW;
-    case LOCALE_ICURRENCY:        return iCurrencyW;
-    case LOCALE_IDIGITS:          return iDigitsW;
-    case LOCALE_IFIRSTDAYOFWEEK:  return iFirstDayOfWeekW;
-    case LOCALE_IFIRSTWEEKOFYEAR: return iFirstWeekOfYearW;
-    case LOCALE_ILZERO:           return iLZeroW;
-    case LOCALE_IMEASURE:         return iMeasureW;
-    case LOCALE_INEGCURR:         return iNegCurrW;
-    case LOCALE_INEGNUMBER:       return iNegNumberW;
-    case LOCALE_IPAPERSIZE:       return iPaperSizeW;
-    case LOCALE_ITIME:            return iTimeW;
-    case LOCALE_S1159:            return s1159W;
-    case LOCALE_S2359:            return s2359W;
-    case LOCALE_SCURRENCY:        return sCurrencyW;
-    case LOCALE_SDATE:            return sDateW;
-    case LOCALE_SDECIMAL:         return sDecimalW;
-    case LOCALE_SGROUPING:        return sGroupingW;
-    case LOCALE_SLIST:            return sListW;
-    case LOCALE_SLONGDATE:        return sLongDateW;
-    case LOCALE_SMONDECIMALSEP:   return sMonDecimalSepW;
-    case LOCALE_SMONGROUPING:     return sMonGroupingW;
-    case LOCALE_SMONTHOUSANDSEP:  return sMonThousandSepW;
-    case LOCALE_SNEGATIVESIGN:    return sNegativeSignW;
-    case LOCALE_SPOSITIVESIGN:    return sPositiveSignW;
-    case LOCALE_SSHORTDATE:       return sShortDateW;
-    case LOCALE_STHOUSAND:        return sThousandW;
-    case LOCALE_STIME:            return sTimeW;
-    case LOCALE_STIMEFORMAT:      return sTimeFormatW;
-    case LOCALE_SYEARMONTH:       return sYearMonthW;
+    case LOCALE_ICALENDARTYPE:    return L"iCalendarType";
+    case LOCALE_ICURRDIGITS:      return L"iCurrDigits";
+    case LOCALE_ICURRENCY:        return L"iCurrency";
+    case LOCALE_IDIGITS:          return L"iDigits";
+    case LOCALE_IFIRSTDAYOFWEEK:  return L"iFirstDayOfWeek";
+    case LOCALE_IFIRSTWEEKOFYEAR: return L"iFirstWeekOfYear";
+    case LOCALE_ILZERO:           return L"iLZero";
+    case LOCALE_IMEASURE:         return L"iMeasure";
+    case LOCALE_INEGCURR:         return L"iNegCurr";
+    case LOCALE_INEGNUMBER:       return L"iNegNumber";
+    case LOCALE_IPAPERSIZE:       return L"iPaperSize";
+    case LOCALE_ITIME:            return L"iTime";
+    case LOCALE_S1159:            return L"s1159";
+    case LOCALE_S2359:            return L"s2359";
+    case LOCALE_SCURRENCY:        return L"sCurrency";
+    case LOCALE_SDATE:            return L"sDate";
+    case LOCALE_SDECIMAL:         return L"sDecimal";
+    case LOCALE_SGROUPING:        return L"sGrouping";
+    case LOCALE_SLIST:            return L"sList";
+    case LOCALE_SLONGDATE:        return L"sLongDate";
+    case LOCALE_SMONDECIMALSEP:   return L"sMonDecimalSep";
+    case LOCALE_SMONGROUPING:     return L"sMonGrouping";
+    case LOCALE_SMONTHOUSANDSEP:  return L"sMonThousandSep";
+    case LOCALE_SNEGATIVESIGN:    return L"sNegativeSign";
+    case LOCALE_SPOSITIVESIGN:    return L"sPositiveSign";
+    case LOCALE_SSHORTDATE:       return L"sShortDate";
+    case LOCALE_STHOUSAND:        return L"sThousand";
+    case LOCALE_STIME:            return L"sTime";
+    case LOCALE_STIMEFORMAT:      return L"sTimeFormat";
+    case LOCALE_SYEARMONTH:       return L"sYearMonth";
 
     /* The following are not listed under MSDN as supported,
      * but seem to be used and also stored in the registry.
      */
-    case LOCALE_ICOUNTRY:         return iCountryW;
-    case LOCALE_IDATE:            return iDateW;
-    case LOCALE_ILDATE:           return iLDateW;
-    case LOCALE_ITLZERO:          return iTLZeroW;
-    case LOCALE_SCOUNTRY:         return sCountryW;
-    case LOCALE_SLANGUAGE:        return sLanguageW;
+    case LOCALE_ICOUNTRY:         return L"iCountry";
+    case LOCALE_IDATE:            return L"iDate";
+    case LOCALE_ILDATE:           return L"iLDate";
+    case LOCALE_ITLZERO:          return L"iTLZero";
+    case LOCALE_SCOUNTRY:         return L"sCountry";
+    case LOCALE_SLANGUAGE:        return L"sLanguage";
     }
     return NULL;
 }
 
 HKEY RosCreateRegistryKey(void)
 {
-    static const WCHAR intlW[] = {'C','o','n','t','r','o','l',' ','P','a','n','e','l','\\',
-                                  'I','n','t','e','r','n','a','t','i','o','n','a','l',0};
     OBJECT_ATTRIBUTES objAttr;
     UNICODE_STRING nameW;
     HKEY hKey;
@@ -723,7 +684,7 @@
     objAttr.Attributes = 0;
     objAttr.SecurityDescriptor = NULL;
     objAttr.SecurityQualityOfService = NULL;
-    RtlInitUnicodeString( &nameW, intlW );
+    RtlInitUnicodeString( &nameW, L"Control Panel\\International");
 
     if (NtCreateKey( &hKey, KEY_ALL_ACCESS, &objAttr, 0, NULL, 0, NULL ) != STATUS_SUCCESS) hKey = 0;
     NtClose( objAttr.RootDirectory );
@@ -834,7 +795,7 @@
     if (SUBLANGID(liLangID) == SUBLANG_NEUTRAL)
         liLangID = MAKELANGID(PRIMARYLANGID(liLangID), SUBLANG_DEFAULT);
 
-    hModule = GetModuleHandleA( "kernel32.dll" );
+    hModule = GetModuleHandleW( L"kernel32.dll" );
     if (!(hRsrc = FindResourceExW( hModule, RT_STRINGW, (LPCWSTR)((LCType >> 4) + 1), liLangID )))
     {
         SetLastError( ERROR_INVALID_FLAGS );
@@ -866,7 +827,7 @@
 			return 0;
 
         memcpy( chTmp, ch + 1, *ch * sizeof(WCHAR) );
-        chTmp[*ch] = 0;
+        chTmp[*ch] = L'\0';
         uiNum = wcstol( chTmp, &chEnd, 10 );
 
         if (!*chEnd)
@@ -1086,16 +1047,16 @@
 
 	while( *lpFormat )
 	{
-		if (*lpFormat == (WCHAR) '\'')
+		if (*lpFormat == L'\'')
 		{
 			lpFormat++;
 
 			while(*lpFormat)
 			{
-				if (*lpFormat == (WCHAR) '\'')
+				if (*lpFormat == L'\'')
 				{
 					lpFormat++;
-					if(*lpFormat != (WCHAR) '\'')
+					if(*lpFormat != L'\'')
 						break;
 				}
 				if (!cchTime)
@@ -1116,12 +1077,11 @@
 				*lpFormat++;
 			}
 		}
-		else if(*lpFormat=='H' || *lpFormat=='h' || *lpFormat=='m' || *lpFormat=='s' || *lpFormat=='t' )
+		else if(*lpFormat==L'H' || *lpFormat==L'h' || *lpFormat==L'm' || *lpFormat==L's' || *lpFormat==L't' )
 		{
 			int nCount, nBufLen;
-			int nType = *lpFormat;
+			WCHAR nType = *lpFormat;
 			WCHAR Buffer[40];
-			char ch[16];
 
 			bDrop = FALSE;
 
@@ -1132,50 +1092,43 @@
 
 			switch(nType)
 			{
-			case 'h':
+			case L'h':
 				{
 					if(!(dwFlags & TIME_FORCE24HOURFORMAT))
 					{
-						sprintf( ch, "%.*d", nCount > 2 ? 2 : nCount,
+						swprintf( Buffer, L"%.*d", nCount > 2 ? 2 : nCount,
 							lpTime->wHour == 0 ? 12 : (lpTime->wHour - 1) % 12 + 1);
-						
-		                MultiByteToWideChar( CP_ACP, 0, ch, -1, Buffer, sizeof(Buffer) / sizeof(WCHAR) );
-
 						break;
 					}
 				}
-			case 'H':
+			case L'H':
 				{
-					sprintf( ch, "%.*d", nCount > 2 ? 2 : nCount, lpTime->wHour );
-					MultiByteToWideChar( CP_ACP, 0, ch, -1, Buffer, sizeof(Buffer)/sizeof(WCHAR) );
-					
+					swprintf( Buffer, L"%.*d", nCount > 2 ? 2 : nCount, lpTime->wHour );
 					break;
 				}
-			case 'm':
+			case L'm':
 				{
 					if(!(dwFlags & TIME_NOMINUTESORSECONDS))
 					{
-						sprintf( ch, "%.*d", nCount > 2 ? 2 : nCount, lpTime->wMinute );
-						MultiByteToWideChar( CP_ACP, 0, ch, -1, Buffer, sizeof(Buffer) / sizeof(WCHAR) );
+						swprintf( Buffer, L"%.*d", nCount > 2 ? 2 : nCount, lpTime->wMinute );
 					}
 					else
 						nPos = nLastFormatPos;
 
 					break;
 				}
-			case 's':
+			case L's':
 				{
 					if(!(dwFlags & (TIME_NOSECONDS|TIME_NOMINUTESORSECONDS)))
 					{
-					    sprintf( ch, "%.*d", nCount > 2 ? 2 : nCount, lpTime->wSecond );
-						MultiByteToWideChar( CP_ACP, 0, ch, -1, Buffer, sizeof(Buffer) / sizeof(WCHAR) );				
+					    swprintf( Buffer, L"%.*d", nCount > 2 ? 2 : nCount, lpTime->wSecond );				
 					}
 					else
 						nPos = nLastFormatPos;
 
 					break;
 				}
-			case 't':
+			case L't':
 				{
 					if(!(dwFlags & TIME_NOTIMEMARKER))
 					{
@@ -1239,7 +1192,7 @@
 			return 0;
 		}
 		else
-			lpTimeStr[nPos] = '\0';
+			lpTimeStr[nPos] = L'\0';
 	}
 
 	nPos++;
@@ -1293,8 +1246,10 @@
 		SetLastError(ERROR_INVALID_PARAMETER);
         return 0;
     }
-
-	return RosGetTimeFormat(Locale, dwFlags, lpTime, lpFormat, lpTimeStr, cchTime);
+	INT x;
+	x = RosGetTimeFormat(Locale, dwFlags, lpTime, lpFormat, lpTimeStr, cchTime);
+	DbgPrint("lpTimeStr: %ws ; format: %ws\n", lpTimeStr, lpFormat);
+	return x;
 }
 
 
CVSspam 0.2.8