Changeset 3461 for trunk/src/kernel32/unicode.cpp
- Timestamp:
- Apr 29, 2000, 8:26:59 PM (25 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/kernel32/unicode.cpp
r2803 r3461 1 /* $Id: unicode.cpp,v 1.2 2 2000-02-16 14:25:45sandervl Exp $ */1 /* $Id: unicode.cpp,v 1.23 2000-04-29 18:26:59 sandervl Exp $ */ 2 2 3 3 /* … … 77 77 */ 78 78 INT WINAPI MultiByteToWideChar(UINT page, DWORD flags, 79 LPCSTR src, INT srclen,80 79 LPCSTR src, INT srclen, 80 LPWSTR dst, INT dstlen) 81 81 { 82 82 int ret; 83 83 84 dprintf2(("MultiByteToWideChar: %d %x (%s %d) (%x %d)", page, flags, src, srclen, dst, dstlen)); 84 85 if (srclen == -1) 85 srclen = lstrlenA(src)+1;86 srclen = lstrlenA(src)+1; 86 87 if (!dstlen || !dst) 87 return srclen;88 return srclen; 88 89 89 90 ret = srclen; 90 91 while (srclen && dstlen) { 91 *dst = (WCHAR)(unsigned char)*src;92 dst++; src++;93 dstlen--; srclen--;92 *dst = (WCHAR)(unsigned char)*src; 93 dst++; src++; 94 dstlen--; srclen--; 94 95 } 95 96 if (!dstlen && srclen) { 96 SetLastError(ERROR_INSUFFICIENT_BUFFER);97 return 0;97 SetLastError(ERROR_INSUFFICIENT_BUFFER); 98 return 0; 98 99 } 99 100 return ret; … … 141 142 int dont_copy= (dstlen==0); 142 143 144 dprintf2(("WideCharToMultiByte: %d %x (%x %d) (%x %d)", page, flags, src, srclen, dst, dstlen)); 145 143 146 if ((!src) || ((!dst) && (!dont_copy)) ) 144 { SetLastError(ERROR_INVALID_PARAMETER); 145 return 0; 147 { 148 SetLastError(ERROR_INVALID_PARAMETER); 149 return 0; 146 150 } 147 151 … … 161 165 while(srclen && (dont_copy || dstlen)) 162 166 { 163 if(!dont_copy){164 if(*src<256)165 *dst = *src;166 else167 {168 /* ??? The WC_DEFAULTCHAR flag only gets used in169 * combination with the WC_COMPOSITECHECK flag or at170 * least this is what it seems from using the function171 * on NT4.0 in combination with reading the documentation.172 */173 *dst = defchar ? *defchar : '?';174 if(used)*used=1;175 }176 dstlen--;177 dst++;178 179 count++;180 srclen--;181 if((!*src) && care_for_eos) {182 eos = 1;183 break;184 }185 src++;167 if(!dont_copy){ 168 if(*src<256) 169 *dst = *src; 170 else 171 { 172 /* ??? The WC_DEFAULTCHAR flag only gets used in 173 * combination with the WC_COMPOSITECHECK flag or at 174 * least this is what it seems from using the function 175 * on NT4.0 in combination with reading the documentation. 176 */ 177 *dst = defchar ? *defchar : '?'; 178 if(used)*used=1; 179 } 180 dstlen--; 181 dst++; 182 } 183 count++; 184 srclen--; 185 if((!*src) && care_for_eos) { 186 eos = 1; 187 break; 188 } 189 src++; 186 190 } 187 191 if (dont_copy) 188 return count;192 return count; 189 193 190 194 if (!eos && srclen > 0) { 191 SetLastError(ERROR_INSUFFICIENT_BUFFER);192 return 0;195 SetLastError(ERROR_INSUFFICIENT_BUFFER); 196 return 0; 193 197 } 194 198 return count;
Note:
See TracChangeset
for help on using the changeset viewer.