Changeset 176 for trunk/src/kernel32/lang.cpp
- Timestamp:
- Jun 24, 1999, 10:47:40 AM (26 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/kernel32/lang.cpp
r100 r176 1 /* $Id: lang.cpp,v 1.4 1999-06-10 20:47:52 phaller Exp $ */ 2 3 /* 4 * 5 * Project Odin Software License can be found in LICENSE.TXT 6 * 7 */ 1 /* $Id: lang.cpp,v 1.5 1999-06-24 08:47:40 sandervl Exp $ */ 2 8 3 /* 9 4 * Win32 language API functions for OS/2 … … 11 6 * Copyright 1998 Sander van Leeuwen 12 7 * Copyright 1998 Patrick Haller 8 * 9 * 10 * Project Odin Software License can be found in LICENSE.TXT 13 11 * 14 12 */ 15 13 #include <os2win.h> 16 14 #include <winnls.h> 15 #include <stdlib.h> 16 #include <string.h> 17 #include <winos2def.h> 17 18 #include "unicode.h" 18 19 … … 54 55 } 55 56 //****************************************************************************** 56 //TODO: Not complete (far from actually)!! 57 //****************************************************************************** 58 int WIN32API GetLocaleInfoA(LCID lcid, LCTYPE LCType, LPSTR lpLCData, int cchData) 59 { 57 //****************************************************************************** 58 int WIN32API GetLocaleInfoA(LCID lcid, LCTYPE LCType, LPSTR buf, int len) 59 { 60 COUNTRYCODE Country = {0}; 61 COUNTRYINFO CtryInfo = {0}; 62 ULONG ulInfoLen = 0; 63 60 64 dprintf(("KERNEL32: OS2GetLocaleInfoA: Not complete!\n")); 61 if(cchData == 0) 62 return(1); 63 *lpLCData = '1'; 64 return(1); 65 } 66 //****************************************************************************** 67 //****************************************************************************** 68 int WIN32API GetLocaleInfoW(LCID lcid, LCTYPE LCType, LPWSTR lpLCData, int cchData) 69 { 70 dprintf(("KERNEL32: OS2GetLocaleInfoA: Not complete!\n")); 71 if(cchData == 0) 72 return(1*sizeof(USHORT)); 73 *lpLCData = (USHORT)'1'; 74 return(sizeof(USHORT)); 65 if (len && (! buf) ) 66 { 67 SetLastError(ERROR_INSUFFICIENT_BUFFER); 68 return 0; 69 } 70 // Only standard. TODO: Use os2.ini PM_National section 71 DosQueryCtryInfo(sizeof(CtryInfo), &Country, &CtryInfo, &ulInfoLen); 72 73 LCType &= ~(LOCALE_NOUSEROVERRIDE|LOCALE_USE_CP_ACP); 74 75 switch(LCType) 76 { 77 case LOCALE_SDECIMAL: 78 *buf = CtryInfo.szDecimal[0]; 79 return 1; 80 case LOCALE_SDATE: 81 *buf = CtryInfo.szDateSeparator[0]; 82 return 1; 83 case LOCALE_STIME: 84 *buf = CtryInfo.szTimeSeparator[0]; 85 return 1; 86 case LOCALE_STHOUSAND: 87 *buf = CtryInfo.szThousandsSeparator[0]; 88 return 1; 89 case LOCALE_SCURRENCY: 90 if(len > strlen(CtryInfo.szCurrency)) 91 { 92 strcpy(buf, CtryInfo.szCurrency); 93 return (strlen(buf) + 1); 94 } 95 else 96 break; 97 case LOCALE_SSHORTDATE: 98 if(CtryInfo.fsDateFmt == 0) 99 { 100 if(len > 8) 101 { 102 strcpy(buf, "MMXddXyy"); 103 buf[2] = buf[5] = CtryInfo.szDateSeparator[0]; 104 return 9; 105 } 106 else 107 break; 108 } 109 else if(CtryInfo.fsDateFmt == 1) 110 { 111 if(len > 8) 112 { 113 strcpy(buf, "ddXMMXyy"); 114 buf[2] = buf[5] = CtryInfo.szDateSeparator[0]; 115 return 9; 116 } 117 else 118 break; 119 } 120 else /* if(CtryInfo.fsDateFmt == 2) */ 121 { 122 if(len > 8) 123 { 124 strcpy(buf, "yyXMMXdd"); 125 buf[2] = buf[5] = CtryInfo.szDateSeparator[0]; 126 return 9; 127 } 128 else 129 break; 130 } 131 case LOCALE_STIMEFORMAT: 132 if(CtryInfo.fsTimeFmt == 0) 133 { 134 if(len > 8) 135 { 136 strcpy(buf, "HHXmmXss"); 137 buf[2] = buf[5] = CtryInfo.szTimeSeparator[0]; 138 return 9; 139 } 140 else 141 break; 142 } 143 else /* if(CtryInfo.fsTimeFmt == 1) */ 144 { 145 if(len > 8) 146 { 147 strcpy(buf, "HHXmmXss"); 148 buf[2] = buf[5] = CtryInfo.szTimeSeparator[0]; 149 return 9; 150 } 151 else 152 break; 153 } 154 case LOCALE_S1159: 155 if(CtryInfo.fsTimeFmt == 0) 156 { 157 if(len > 2) 158 { 159 strcpy(buf, "AM"); 160 return 3; 161 } 162 else 163 break; 164 } 165 *buf = 0; 166 return 1; 167 case LOCALE_S2359: 168 if(CtryInfo.fsTimeFmt == 0) 169 { 170 if(len > 2) 171 { 172 strcpy(buf, "PM"); 173 return 3; 174 } 175 else 176 break; 177 } 178 *buf = 0; 179 return 1; 180 /*** 181 LOCALE_SABBREVMONTHNAME11: 182 LOCALE_SABBREVMONTHNAME12: 183 LOCALE_SABBREVMONTHNAME13: 184 LOCALE_SPOSITIVESIGN: 185 LOCALE_SNEGATIVESIGN: 186 LOCALE_IPOSSIGNPOSN: 187 LOCALE_INEGSIGNPOSN: 188 LOCALE_IPOSSYMPRECEDES: 189 LOCALE_IPOSSEPBYSPACE: 190 LOCALE_INEGSYMPRECEDES: 191 LOCALE_INEGSEPBYSPACE: 192 LOCALE_FONTSIGNATURE: 193 LOCALE_SISO639LANGNAME: 194 LOCALE_SISO3166CTRYNAME: 195 ***/ 196 default: 197 dprintf(("KERNEL32: OS2GetLocaleInfoA: LCType %d not yet supported\n", LCType)); 198 *buf = '1'; 199 return(1); 200 } 201 202 // a 'break' in 'switch(LCType)': buffer too small 203 SetLastError(ERROR_INSUFFICIENT_BUFFER); 204 return 0; 205 206 } 207 //****************************************************************************** 208 //****************************************************************************** 209 int WIN32API GetLocaleInfoW(LCID lcid, LCTYPE LCType, LPWSTR wbuf, int len) 210 { 211 WORD wlen; 212 char *abuf; 213 214 dprintf(("KERNEL32: OS2GetLocaleInfoW\n")); 215 if (len && (! wbuf) ) 216 { 217 SetLastError(ERROR_INSUFFICIENT_BUFFER); 218 return 0; 219 } 220 abuf = (char *) malloc(len); 221 wlen = GetLocaleInfoA(lcid, LCType, abuf, len); 222 223 if (wlen && len) // no check of wbuf length !! 224 AsciiToUnicodeN(abuf, wbuf, wlen); 225 226 free(abuf); 227 return wlen; 75 228 } 76 229 //******************************************************************************
Note:
See TracChangeset
for help on using the changeset viewer.