Ignore:
Timestamp:
Jul 22, 1999, 5:42:18 PM (26 years ago)
Author:
sandervl
Message:

Przemysˆaw Dobrowolski GetLocaleInfoA/W changes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/kernel32/lang.cpp

    r247 r367  
    1 /* $Id: lang.cpp,v 1.9 1999-06-29 17:23:47 sandervl Exp $ */
    2 
    31/*
    42 * Win32 language API functions for OS/2
     
    64 * Copyright 1998 Sander van Leeuwen
    75 * Copyright 1998 Patrick Haller
    8  *
     6 * Copyright 1999 Przemyslaw Dobrowolski
    97 *
    108 * Project Odin Software License can be found in LICENSE.TXT
     
    1412#include <winnls.h>
    1513#include <stdlib.h>
     14#include <stdio.h>
    1615#include <string.h>
    1716#include <winos2def.h>
    1817#include "unicode.h"
    1918
    20 
    2119//******************************************************************************
    2220//******************************************************************************
     
    5452  return(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
    5553}
    56 //******************************************************************************
    57 //******************************************************************************
     54
     55/*****************************************************************************
     56 * Name      : DWORD GetLocaleInfoA
     57 * Purpose   : The GetLocaleInfoA function returns specific locale information
     58 * Parameters: LCID   lcid    locale identifier
     59 *             LCTYPE LCType  type of information
     60 *             LPSTR  buf     address of buffer for information
     61 *             int    len     size of buffer
     62 * Variables :
     63 * Result    : size of target buffer
     64 * Remark    : In this version LOCALE_SYSTEM_DEFAULT == LOCALE_USER_DEFAULT
     65 *             look into GetLocaleInfoW
     66 *
     67 * Status    : TESTED
     68 *
     69 * Author    : Przemyslaw Dobrowolski [Tue, 1999/07/21 12:18]
     70 *****************************************************************************/
    5871int WIN32API GetLocaleInfoA(LCID lcid, LCTYPE LCType, LPSTR buf, int len)
    5972{
    60   COUNTRYCODE  Country    = {0};
    61   COUNTRYINFO  CtryInfo   = {0};
    62   ULONG        ulInfoLen  = 0;
    63 
    64   dprintf(("KERNEL32:  OS2GetLocaleInfoA: Not complete!\n"));
     73  LPWSTR lpWStr;
     74  int    ret_len;
     75
    6576  if (len && (! buf) )
    6677  {
     
    6980  }
    7081
    71   // Only standard. TODO: Use os2.ini PM_National section
    72   DosQueryCtryInfo(sizeof(CtryInfo), &Country, &CtryInfo, &ulInfoLen);
    73 
    74   LCType &= ~(LOCALE_NOUSEROVERRIDE|LOCALE_USE_CP_ACP);
    75 
    76   switch(LCType)
     82  dprintf(("KERNEL32:  OS2GetLocaleInfoA lcID=%d,lcType=%x,buf=%X,len=%d\n",lcid,LCType,buf,len));
     83
     84  if (buf)
     85    lpWStr=(LPWSTR)malloc(len*(sizeof(WCHAR)));
     86  else
     87    lpWStr=NULL; // Query for buffer size
     88
     89  ret_len=GetLocaleInfoW(lcid, LCType, lpWStr, len);
     90
     91  if (buf)
    7792  {
    78     case LOCALE_SDECIMAL:
    79       if(buf) *buf = CtryInfo.szDecimal[0];
    80       return 1;
    81     case LOCALE_SDATE:
    82       if(buf) *buf = CtryInfo.szDateSeparator[0];
    83       return 1;
    84     case LOCALE_STIME:
    85       if(buf) *buf = CtryInfo.szTimeSeparator[0];
    86       return 1;
    87     case LOCALE_STHOUSAND:
    88       if(buf) *buf = CtryInfo.szThousandsSeparator[0];
    89       return 1;
    90     case LOCALE_SCURRENCY:
    91       if(len > strlen(CtryInfo.szCurrency))
    92       {
    93         strcpy(buf, CtryInfo.szCurrency);
    94         return (strlen(buf) + 1);
    95       }
    96       else
    97         break;
    98     case LOCALE_SSHORTDATE:
    99       if(CtryInfo.fsDateFmt == 0)
    100       {
    101         if(len > 8)
    102         {
    103           strcpy(buf, "MMXddXyy");
    104           buf[2] = buf[5] = CtryInfo.szDateSeparator[0];
    105           return 9;
    106         }
    107         else
    108           break;
    109       }
    110       else if(CtryInfo.fsDateFmt == 1)
    111       {
    112         if(len > 8)
    113         {
    114           strcpy(buf, "ddXMMXyy");
    115           buf[2] = buf[5] = CtryInfo.szDateSeparator[0];
    116           return 9;
    117         }
    118         else
    119           break;
    120       }
    121       else /* if(CtryInfo.fsDateFmt == 2) */
    122       {
    123         if(len > 8)
    124         {
    125           strcpy(buf, "yyXMMXdd");
    126           buf[2] = buf[5] = CtryInfo.szDateSeparator[0];
    127           return 9;
    128         }
    129         else
    130           break;
    131       }
    132     case LOCALE_STIMEFORMAT:
    133       if(CtryInfo.fsTimeFmt == 0)
    134       {
    135         if(len > 8)
    136         {
    137           strcpy(buf, "HHXmmXss");
    138           buf[2] = buf[5] = CtryInfo.szTimeSeparator[0];
    139           return 9;
    140         }
    141         else
    142           break;
    143       }
    144       else /* if(CtryInfo.fsTimeFmt == 1) */
    145       {
    146         if(len > 8)
    147         {
    148           strcpy(buf, "HHXmmXss");
    149           buf[2] = buf[5] = CtryInfo.szTimeSeparator[0];
    150           return 9;
    151         }
    152         else
    153           break;
    154       }
    155     case LOCALE_S1159:
    156       if(CtryInfo.fsTimeFmt == 0)
    157       {
    158         if(len > 2)
    159         {
    160           strcpy(buf, "AM");
    161           return 3;
    162         }
    163         else
    164           break;
    165       }
    166       if(buf) *buf = 0;
    167       return 1;
    168     case LOCALE_S2359:
    169       if(CtryInfo.fsTimeFmt == 0)
    170       {
    171         if(len > 2)
    172         {
    173           strcpy(buf, "PM");
    174           return 3;
    175         }
    176         else
    177           break;
    178       }
    179       if(buf) *buf = 0;
    180       return 1;
    181 /***
    182     LOCALE_SABBREVMONTHNAME11:
    183     LOCALE_SABBREVMONTHNAME12:
    184     LOCALE_SABBREVMONTHNAME13:
    185     LOCALE_SPOSITIVESIGN:
    186     LOCALE_SNEGATIVESIGN:
    187     LOCALE_IPOSSIGNPOSN:
    188     LOCALE_INEGSIGNPOSN:
    189     LOCALE_IPOSSYMPRECEDES:
    190     LOCALE_IPOSSEPBYSPACE:
    191     LOCALE_INEGSYMPRECEDES:
    192     LOCALE_INEGSEPBYSPACE:
    193     LOCALE_FONTSIGNATURE:
    194     LOCALE_SISO639LANGNAME:
    195     LOCALE_SISO3166CTRYNAME:
    196 ***/
    197     default:
    198       dprintf(("KERNEL32:  OS2GetLocaleInfoA: LCType %d not yet supported\n", LCType));
    199       if(buf) *buf = '1';
    200       return(1);
     93    UnicodeToAscii(lpWStr,buf);
     94    free(lpWStr);
    20195  }
    20296
    203   // a 'break' in 'switch(LCType)': buffer too small
    204   SetLastError(ERROR_INSUFFICIENT_BUFFER);
    205   return 0;
    206 
    207 }
    208 //******************************************************************************
    209 //******************************************************************************
     97  dprintf(("KERNEL32:  OS2GetLocaleInfoA returned %d\n",len));
     98
     99  return (ret_len);
     100}
     101//******************************************************************************
     102//******************************************************************************
     103static BOOL LocaleFromUniStr(LPWSTR lpUniStr, LPWSTR wbuf, ULONG *pLen)
     104{
     105  if (wbuf)
     106  {
     107    if (*pLen > UniStrlen(lpUniStr))
     108      UniStrcpy(wbuf,lpUniStr);
     109    else
     110    {
     111      SetLastError(ERROR_INSUFFICIENT_BUFFER);
     112      *pLen=0;
     113      return FALSE;
     114    }
     115  }
     116
     117  *pLen=UniStrlen(lpUniStr)+1; // + null terminator
     118
     119  return TRUE;
     120}
     121//******************************************************************************
     122//******************************************************************************
     123static BOOL LocaleFromUniChar(WCHAR wcUniChar, LPWSTR wbuf, ULONG *pLen)
     124{
     125  if (wbuf)
     126  {
     127    if (*pLen > sizeof(WCHAR))
     128    {
     129      wbuf[0]=(WCHAR)'0'+wcUniChar;
     130      wbuf[1]=0;
     131    }
     132    else
     133    {
     134      SetLastError(ERROR_INSUFFICIENT_BUFFER);
     135      *pLen=0;
     136      return FALSE;
     137    }
     138  }
     139
     140  *pLen=2;
     141
     142  return TRUE;
     143}
     144
     145/*****************************************************************************
     146 * Name      : DWORD GetLocaleInfoW
     147 * Purpose   : The GetLocaleInfoW function returns specific locale information
     148 * Parameters: LCID   lcid    locale identifier
     149 *             LCTYPE LCType  type of information
     150 *             LPSTRW wbuf    address of buffer for information
     151 *             int    len     size of buffer
     152 * Variables :
     153 * Result    : size of target buffer
     154 * Remark    : In this version LOCALE_SYSTEM_DEFAULT == LOCALE_USER_DEFAULT
     155 *
     156 * LOCALE_STHOUSAND   - with some languages returns OS/2 separator not Windows!
     157 * LOCALE_IMEASURE    - return '0' like English US
     158 * LOCALE_INEGNUMBER  - return '1' like English US
     159 * LOCALE_ICURRDIGITS - return '2' like English US
     160 * LOCALE_IDATE are identical as LOCALE_ILDATE (must be fixed?)
     161 * LOCALE_SGROUPING and
     162 * LOCALE_SMONGROUPING are tested only with Polish & English languages
     163 * LOCALE_SMONTHNAME13 and
     164 * LOCALE_SABBERVMONTHNAME13 - returns empty string like English US
     165 * LOCALE_FONTSIGNATURE - return empty string like English US
     166 *
     167 * Status    : FULLY TESTED
     168 *
     169 * Author    : Przemyslaw Dobrowolski [Tue, 1999/07/22 17:07]
     170 *****************************************************************************/
    210171int WIN32API GetLocaleInfoW(LCID lcid, LCTYPE LCType, LPWSTR wbuf, int len)
    211172{
    212   WORD wlen;
    213   char *abuf;
    214 
    215   dprintf(("KERNEL32:  OS2GetLocaleInfoW\n"));
     173  LocaleObject    locale_object = NULL;
     174  struct UniLconv *puni_lconv = NULL;
     175  WCHAR           *pInfoItem;
     176  int             rc;
     177  COUNTRYCODE     Country    = {0};
     178  COUNTRYINFO     CtryInfo   = {0};
     179  ULONG           ulInfoLen  = 0;
     180
     181  dprintf(("KERNEL32:  OS2GetLocaleInfoW lcID=%d,lcType=%x,wbuf=%X,len=%d\n",lcid,LCType,wbuf,len));
     182
    216183  if (len && (! wbuf) )
    217184  {
     
    219186    return 0;
    220187  }
    221   abuf = (char *) malloc(len);
    222   wlen = GetLocaleInfoA(lcid, LCType, abuf, len);
    223 
    224   if (wlen && len)  // no check of wbuf length !!
    225     AsciiToUnicodeN(abuf, wbuf, wlen);
    226 
    227   free(abuf);
    228   return wlen;
    229 }
     188
     189  if (wbuf) *wbuf==0;
     190
     191  rc=UniCreateLocaleObject(UNI_UCS_STRING_POINTER,(UniChar *)L"", &locale_object);
     192
     193  if ( rc == ULS_SUCCESS )
     194  {
     195    UniQueryLocaleInfo(locale_object, &puni_lconv);
     196
     197    DosQueryCtryInfo(sizeof(COUNTRYINFO), &Country, &CtryInfo, &ulInfoLen);
     198
     199    ulInfoLen = len; // Now we use this variable as returned length info
     200
     201    LCType &= ~(LOCALE_NOUSEROVERRIDE|LOCALE_USE_CP_ACP);
     202
     203    switch(LCType)
     204    {
     205      case LOCALE_SDECIMAL:
     206        LocaleFromUniStr(puni_lconv->decimal_point,wbuf,&ulInfoLen);
     207        break;
     208
     209      case LOCALE_IMEASURE: // Fixme!
     210        // only like English US
     211        LocaleFromUniChar(0,wbuf,&ulInfoLen);
     212        break;
     213
     214      case LOCALE_INEGNUMBER: // Fixme!
     215        // only like English US
     216        LocaleFromUniChar(1,wbuf,&ulInfoLen);
     217        break;
     218
     219      case LOCALE_ICURRDIGITS:// Fixme!
     220        // only like English US
     221        LocaleFromUniChar(2,wbuf,&ulInfoLen);
     222        break;
     223
     224       case LOCALE_STHOUSAND:
     225        LocaleFromUniStr(puni_lconv->thousands_sep,wbuf,&ulInfoLen);
     226        break;
     227
     228      case LOCALE_SGROUPING: // tested only with Polish & English
     229        if (wbuf)
     230        {
     231          if (puni_lconv->grouping)
     232          {
     233            if (len >= 3*sizeof(WCHAR))
     234            {
     235              wbuf[0]='0'+*puni_lconv->grouping;
     236              wbuf[1]=(WCHAR)';';
     237              wbuf[2]=(WCHAR)'0';
     238              wbuf[3]=0;
     239              ulInfoLen=4;
     240            }
     241            else
     242            {
     243              SetLastError(ERROR_INSUFFICIENT_BUFFER);
     244              break;
     245            }
     246          }
     247          else
     248          {
     249            wbuf[0]=20; // Windows return space!!
     250            ulInfoLen=2;
     251          }
     252        }
     253        else
     254            ulInfoLen=2;
     255        break;
     256
     257      case LOCALE_SMONGROUPING: // tested only with Polish & English
     258        if (wbuf)
     259        {
     260          if (puni_lconv->mon_grouping)
     261          {
     262            if (len >= 3*sizeof(WCHAR))
     263            {
     264              wbuf[0]='0'+*puni_lconv->mon_grouping;
     265              wbuf[1]=(WCHAR)';';
     266              wbuf[2]=(WCHAR)'0';
     267              wbuf[3]=0;
     268              ulInfoLen=4;
     269            }
     270            else
     271            {
     272              SetLastError(ERROR_INSUFFICIENT_BUFFER);
     273              break;
     274            }
     275          }
     276          else
     277          {
     278            wbuf[0]=20; // Windows return space!!
     279            ulInfoLen=2;
     280          }
     281        }
     282        else
     283            ulInfoLen=2;
     284        break;
     285
     286
     287      case LOCALE_SCURRENCY:
     288        LocaleFromUniStr(puni_lconv->currency_symbol,wbuf,&ulInfoLen);
     289        break;
     290
     291      case LOCALE_SMONDECIMALSEP:
     292        LocaleFromUniStr(puni_lconv->mon_decimal_point,wbuf,&ulInfoLen);
     293        break;
     294
     295      case LOCALE_SMONTHOUSANDSEP:
     296        LocaleFromUniStr(puni_lconv->mon_thousands_sep,wbuf,&ulInfoLen);
     297        break;
     298
     299      case LOCALE_SPOSITIVESIGN:
     300        LocaleFromUniStr(puni_lconv->positive_sign,wbuf,&ulInfoLen);
     301        break;
     302
     303      case LOCALE_SNEGATIVESIGN:
     304        LocaleFromUniStr(puni_lconv->negative_sign,wbuf,&ulInfoLen);
     305        break;
     306
     307      case LOCALE_IPOSSIGNPOSN:
     308        LocaleFromUniChar(puni_lconv->p_sign_posn,wbuf,&ulInfoLen);
     309        break;
     310
     311      case LOCALE_INEGSIGNPOSN:
     312        LocaleFromUniChar(puni_lconv->n_sign_posn,wbuf,&ulInfoLen);
     313        break;
     314
     315      case LOCALE_IPOSSYMPRECEDES:
     316        LocaleFromUniChar(puni_lconv->p_cs_precedes,wbuf,&ulInfoLen);
     317        break;
     318
     319      case LOCALE_IPOSSEPBYSPACE:
     320        LocaleFromUniChar(puni_lconv->p_sep_by_space,wbuf,&ulInfoLen);
     321        break;
     322
     323      case LOCALE_INEGSYMPRECEDES:
     324        LocaleFromUniChar(puni_lconv->n_cs_precedes,wbuf,&ulInfoLen);
     325        break;
     326
     327      case LOCALE_INEGSEPBYSPACE:
     328        LocaleFromUniChar(puni_lconv->n_sep_by_space,wbuf,&ulInfoLen);
     329        break;
     330
     331      case LOCALE_S1159:
     332        UniQueryLocaleItem(locale_object, AM_STR,&pInfoItem);
     333        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     334        UniFreeMem(pInfoItem);
     335        break;
     336
     337      case LOCALE_S2359:
     338        UniQueryLocaleItem(locale_object, PM_STR,&pInfoItem);
     339        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     340        UniFreeMem(pInfoItem);
     341        break;
     342
     343      case LOCALE_IDEFAULTLANGUAGE:
     344      case LOCALE_ILANGUAGE:
     345        UniQueryLocaleItem(locale_object, XWINLOCALE,&pInfoItem);
     346        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     347        UniFreeMem(pInfoItem);
     348        break;
     349
     350      case LOCALE_INEGCURR:
     351        UniQueryLocaleItem(locale_object, INEGCURR,&pInfoItem);
     352        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     353        UniFreeMem(pInfoItem);
     354        break;
     355
     356      case LOCALE_ICURRENCY:
     357        UniQueryLocaleItem(locale_object, ICURRENCY,&pInfoItem);
     358        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     359        UniFreeMem(pInfoItem);
     360        break;
     361
     362
     363
     364      case LOCALE_SNATIVELANGNAME:
     365      case LOCALE_SLANGUAGE:
     366        UniQueryLocaleItem(locale_object, SLANGUAGE,&pInfoItem);
     367        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     368        UniFreeMem(pInfoItem);
     369        break;
     370
     371      case LOCALE_SABBREVLANGNAME:
     372        UniQueryLocaleItem(locale_object, SABBREVLANGNAME,&pInfoItem);
     373        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     374        UniFreeMem(pInfoItem);
     375        break;
     376
     377      case LOCALE_IDEFAULTCOUNTRY:
     378      case LOCALE_ICOUNTRY:
     379        UniQueryLocaleItem(locale_object, ICOUNTRY,&pInfoItem);
     380        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     381        UniFreeMem(pInfoItem);
     382        break;
     383
     384      case LOCALE_SENGLANGUAGE:
     385        UniQueryLocaleItem(locale_object, SENGLANGUAGE,&pInfoItem);
     386        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     387        UniFreeMem(pInfoItem);
     388        break;
     389
     390      case LOCALE_SENGCOUNTRY:
     391      case LOCALE_SCOUNTRY:
     392        UniQueryLocaleItem(locale_object, SENGCOUNTRYNAME,&pInfoItem);
     393        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     394        UniFreeMem(pInfoItem);
     395        break;
     396
     397      case LOCALE_SABBREVCTRYNAME:
     398        UniQueryLocaleItem(locale_object, SABBREVCTRYNAME,&pInfoItem);
     399        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     400        UniFreeMem(pInfoItem);
     401        break;
     402
     403      case LOCALE_SNATIVECTRYNAME:
     404        UniQueryLocaleItem(locale_object, SCOUNTRY,&pInfoItem);
     405        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     406        UniFreeMem(pInfoItem);
     407        break;
     408
     409      case LOCALE_SNATIVEDIGITS:
     410        UniQueryLocaleItem(locale_object, SNATIVEDIGITS,&pInfoItem);
     411        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     412        UniFreeMem(pInfoItem);
     413        break;
     414
     415
     416      case LOCALE_IDEFAULTCODEPAGE:
     417        UniQueryLocaleItem(locale_object, ICODEPAGE,&pInfoItem);
     418        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     419        UniFreeMem(pInfoItem);
     420        break;
     421
     422      case LOCALE_IDEFAULTANSICODEPAGE:
     423        UniQueryLocaleItem(locale_object, IANSICODEPAGE,&pInfoItem);
     424        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     425        UniFreeMem(pInfoItem);
     426        break;
     427
     428      case LOCALE_IDEFAULTMACCODEPAGE:
     429        UniQueryLocaleItem(locale_object, IMACCODEPAGE,&pInfoItem);
     430        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     431        UniFreeMem(pInfoItem);
     432        break;
     433
     434      case LOCALE_SLIST:
     435        UniQueryLocaleItem(locale_object, LISTSEP,&pInfoItem);
     436        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     437        UniFreeMem(pInfoItem);
     438        break;
     439
     440      case LOCALE_SINTLSYMBOL:
     441        UniQueryLocaleItem(locale_object, SINTLSYMBOL,&pInfoItem);
     442        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     443        UniFreeMem(pInfoItem);
     444        break;
     445
     446      case LOCALE_SDAYNAME7:
     447        UniQueryLocaleItem(locale_object, DAY_1,&pInfoItem);
     448        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     449        UniFreeMem(pInfoItem);
     450        break;
     451
     452      case LOCALE_SDAYNAME1:
     453        UniQueryLocaleItem(locale_object, DAY_2,&pInfoItem);
     454        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     455        UniFreeMem(pInfoItem);
     456        break;
     457
     458      case LOCALE_SDAYNAME2:
     459        UniQueryLocaleItem(locale_object, DAY_3,&pInfoItem);
     460        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     461        UniFreeMem(pInfoItem);
     462        break;
     463
     464      case LOCALE_SDAYNAME3:
     465        UniQueryLocaleItem(locale_object, DAY_4,&pInfoItem);
     466        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     467        UniFreeMem(pInfoItem);
     468        break;
     469
     470      case LOCALE_SDAYNAME4:
     471        UniQueryLocaleItem(locale_object, DAY_5,&pInfoItem);
     472        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     473        UniFreeMem(pInfoItem);
     474        break;
     475
     476      case LOCALE_SDAYNAME5:
     477        UniQueryLocaleItem(locale_object, DAY_6,&pInfoItem);
     478        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     479        UniFreeMem(pInfoItem);
     480        break;
     481
     482      case LOCALE_SDAYNAME6:
     483        UniQueryLocaleItem(locale_object, DAY_7,&pInfoItem);
     484        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     485        UniFreeMem(pInfoItem);
     486        break;
     487
     488      case LOCALE_SABBREVDAYNAME7:
     489        UniQueryLocaleItem(locale_object, ABDAY_1,&pInfoItem);
     490        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     491        UniFreeMem(pInfoItem);
     492        break;
     493
     494      case LOCALE_SABBREVDAYNAME1:
     495        UniQueryLocaleItem(locale_object, ABDAY_2,&pInfoItem);
     496        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     497        UniFreeMem(pInfoItem);
     498        break;
     499
     500      case LOCALE_SABBREVDAYNAME2:
     501        UniQueryLocaleItem(locale_object, ABDAY_3,&pInfoItem);
     502        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     503        UniFreeMem(pInfoItem);
     504        break;
     505
     506      case LOCALE_SABBREVDAYNAME3:
     507        UniQueryLocaleItem(locale_object, ABDAY_4,&pInfoItem);
     508        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     509        UniFreeMem(pInfoItem);
     510        break;
     511
     512      case LOCALE_SABBREVDAYNAME4:
     513        UniQueryLocaleItem(locale_object, ABDAY_5,&pInfoItem);
     514        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     515        UniFreeMem(pInfoItem);
     516        break;
     517
     518      case LOCALE_SABBREVDAYNAME5:
     519        UniQueryLocaleItem(locale_object, ABDAY_6,&pInfoItem);
     520        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     521        UniFreeMem(pInfoItem);
     522        break;
     523
     524      case LOCALE_SABBREVDAYNAME6:
     525        UniQueryLocaleItem(locale_object, ABDAY_7,&pInfoItem);
     526        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     527        UniFreeMem(pInfoItem);
     528        break;
     529
     530      case LOCALE_SMONTHNAME1:
     531        UniQueryLocaleItem(locale_object, MON_1,&pInfoItem);
     532        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     533        UniFreeMem(pInfoItem);
     534        break;
     535
     536      case LOCALE_SMONTHNAME2:
     537        UniQueryLocaleItem(locale_object, MON_2,&pInfoItem);
     538        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     539        UniFreeMem(pInfoItem);
     540        break;
     541
     542      case LOCALE_SMONTHNAME3:
     543        UniQueryLocaleItem(locale_object, MON_3,&pInfoItem);
     544        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     545        UniFreeMem(pInfoItem);
     546        break;
     547
     548      case LOCALE_SMONTHNAME4:
     549        UniQueryLocaleItem(locale_object, MON_4,&pInfoItem);
     550        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     551        UniFreeMem(pInfoItem);
     552        break;
     553
     554      case LOCALE_SMONTHNAME5:
     555        UniQueryLocaleItem(locale_object, MON_5,&pInfoItem);
     556        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     557        UniFreeMem(pInfoItem);
     558        break;
     559
     560      case LOCALE_SMONTHNAME6:
     561        UniQueryLocaleItem(locale_object, MON_6,&pInfoItem);
     562        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     563        UniFreeMem(pInfoItem);
     564        break;
     565
     566      case LOCALE_SMONTHNAME7:
     567        UniQueryLocaleItem(locale_object, MON_7,&pInfoItem);
     568        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     569        UniFreeMem(pInfoItem);
     570        break;
     571
     572      case LOCALE_SMONTHNAME8:
     573        UniQueryLocaleItem(locale_object, MON_8,&pInfoItem);
     574        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     575        UniFreeMem(pInfoItem);
     576        break;
     577
     578      case LOCALE_SMONTHNAME9:
     579        UniQueryLocaleItem(locale_object, MON_9,&pInfoItem);
     580        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     581        UniFreeMem(pInfoItem);
     582        break;
     583
     584      case LOCALE_SMONTHNAME10:
     585        UniQueryLocaleItem(locale_object, MON_10,&pInfoItem);
     586        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     587        UniFreeMem(pInfoItem);
     588        break;
     589
     590      case LOCALE_SMONTHNAME11:
     591        UniQueryLocaleItem(locale_object, MON_11,&pInfoItem);
     592        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     593        UniFreeMem(pInfoItem);
     594        break;
     595
     596      case LOCALE_SMONTHNAME12:
     597        UniQueryLocaleItem(locale_object, MON_12,&pInfoItem);
     598        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     599        UniFreeMem(pInfoItem);
     600        break;
     601
     602      case LOCALE_FONTSIGNATURE: // FixMe!!!
     603      case LOCALE_SABBREVMONTHNAME13:
     604      case LOCALE_SMONTHNAME13:
     605        LocaleFromUniStr((LPWSTR)L"\0",wbuf,&ulInfoLen);
     606        break;
     607
     608      case LOCALE_SABBREVMONTHNAME1:
     609        UniQueryLocaleItem(locale_object, ABMON_1,&pInfoItem);
     610        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     611        UniFreeMem(pInfoItem);
     612        break;
     613
     614      case LOCALE_SABBREVMONTHNAME2:
     615        UniQueryLocaleItem(locale_object, ABMON_2,&pInfoItem);
     616        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     617        UniFreeMem(pInfoItem);
     618        break;
     619
     620      case LOCALE_SABBREVMONTHNAME3:
     621        UniQueryLocaleItem(locale_object, ABMON_3,&pInfoItem);
     622        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     623        UniFreeMem(pInfoItem);
     624        break;
     625
     626      case LOCALE_SABBREVMONTHNAME4:
     627        UniQueryLocaleItem(locale_object, ABMON_4,&pInfoItem);
     628        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     629        UniFreeMem(pInfoItem);
     630        break;
     631
     632      case LOCALE_SABBREVMONTHNAME5:
     633        UniQueryLocaleItem(locale_object, ABMON_5,&pInfoItem);
     634        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     635        UniFreeMem(pInfoItem);
     636        break;
     637
     638      case LOCALE_SABBREVMONTHNAME6:
     639        UniQueryLocaleItem(locale_object, ABMON_6,&pInfoItem);
     640        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     641        UniFreeMem(pInfoItem);
     642        break;
     643
     644      case LOCALE_SABBREVMONTHNAME7:
     645        UniQueryLocaleItem(locale_object, ABMON_7,&pInfoItem);
     646        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     647        UniFreeMem(pInfoItem);
     648        break;
     649
     650      case LOCALE_SABBREVMONTHNAME8:
     651        UniQueryLocaleItem(locale_object, ABMON_8,&pInfoItem);
     652        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     653        UniFreeMem(pInfoItem);
     654        break;
     655
     656      case LOCALE_SABBREVMONTHNAME9:
     657        UniQueryLocaleItem(locale_object, ABMON_9,&pInfoItem);
     658        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     659        UniFreeMem(pInfoItem);
     660        break;
     661
     662      case LOCALE_SABBREVMONTHNAME10:
     663        UniQueryLocaleItem(locale_object, ABMON_10,&pInfoItem);
     664        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     665        UniFreeMem(pInfoItem);
     666        break;
     667
     668      case LOCALE_SABBREVMONTHNAME11:
     669        UniQueryLocaleItem(locale_object, ABMON_11,&pInfoItem);
     670        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     671        UniFreeMem(pInfoItem);
     672        break;
     673
     674      case LOCALE_SABBREVMONTHNAME12:
     675        UniQueryLocaleItem(locale_object, ABMON_12,&pInfoItem);
     676        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     677        UniFreeMem(pInfoItem);
     678        break;
     679
     680      case LOCALE_SDATE:
     681        UniQueryLocaleItem(locale_object, DATESEP,&pInfoItem);
     682        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     683        UniFreeMem(pInfoItem);
     684        break;
     685
     686    case LOCALE_STIME:
     687        UniQueryLocaleItem(locale_object, TIMESEP,&pInfoItem);
     688        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     689        UniFreeMem(pInfoItem);
     690        break;
     691
     692    case LOCALE_IDATE:
     693    case LOCALE_ILDATE:
     694        LocaleFromUniChar(CtryInfo.fsDateFmt,wbuf,&ulInfoLen);
     695        break;
     696
     697      case LOCALE_ITIME:
     698        UniQueryLocaleItem(locale_object, TIMESEP,&pInfoItem);
     699        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     700        UniFreeMem(pInfoItem);
     701        break;
     702
     703      case LOCALE_SSHORTDATE:
     704        UniQueryLocaleItem(locale_object, WSHORTDATE,&pInfoItem);
     705        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     706        UniFreeMem(pInfoItem);
     707        break;
     708
     709      case LOCALE_SLONGDATE:
     710        UniQueryLocaleItem(locale_object, WLONGDATE,&pInfoItem);
     711        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     712        UniFreeMem(pInfoItem);
     713        break;
     714
     715
     716      case LOCALE_STIMEFORMAT:
     717        UniQueryLocaleItem(locale_object, WTIMEFORMAT,&pInfoItem);
     718        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     719        UniFreeMem(pInfoItem);
     720        break;
     721
     722      case LOCALE_SISO639LANGNAME:
     723        UniQueryLocaleItem(locale_object, SISO639LANGNAME,&pInfoItem);
     724        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     725        UniFreeMem(pInfoItem);
     726        break;
     727
     728      case LOCALE_SISO3166CTRYNAME:
     729        UniQueryLocaleItem(locale_object, SISO3166CTRYNAME,&pInfoItem);
     730        LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen);
     731        UniFreeMem(pInfoItem);
     732        break;
     733
     734    default:
     735      dprintf(("KERNEL32:  OS2GetLocaleInfoW: LCType %X not yet supported\n", LCType));
     736      if (wbuf)
     737      {
     738        wbuf[0] = (WCHAR) '1';
     739        wbuf[1] = 0;
     740      }
     741      ulInfoLen=2;
     742      break;
     743
     744    }
     745    UniFreeLocaleInfo(puni_lconv);
     746    UniFreeLocaleObject(locale_object);
     747  }
     748  else
     749    return (0);
     750
     751  dprintf(("KERNEL32:  OS2GetLocaleInfoW returned %d\n",ulInfoLen));
     752
     753  return (ulInfoLen);
     754}
     755
    230756//******************************************************************************
    231757//******************************************************************************
     
    417943  return (0);
    418944}
    419 
    420 
Note: See TracChangeset for help on using the changeset viewer.