msvcrt: Add support for multibyte characters in _Strftime.
Signed-off-by: Piotr Caban <piotr@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
7dfb21a9db
commit
d6948bf356
|
@ -746,6 +746,16 @@ static void test_strftime(void)
|
||||||
ok(retA == 17, "expected 17, got %ld\n", retA);
|
ok(retA == 17, "expected 17, got %ld\n", retA);
|
||||||
ok(!strcmp(bufA, "02/30/70 00:00:00"), "got %s\n", bufA);
|
ok(!strcmp(bufA, "02/30/70 00:00:00"), "got %s\n", bufA);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(!setlocale(LC_ALL, "Japanese_Japan.932")) {
|
||||||
|
win_skip("Japanese_Japan.932 locale not available\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* test with multibyte character */
|
||||||
|
retA = strftime(bufA, 256, "\x82%c", gmt_tm);
|
||||||
|
ok(retA == 3, "expected 3, got %ld\n", retA);
|
||||||
|
ok(!strcmp(bufA, "\x82%c"), "got %s\n", bufA);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void test_asctime(void)
|
static void test_asctime(void)
|
||||||
|
|
|
@ -1078,6 +1078,11 @@ MSVCRT_size_t CDECL _Strftime(char *str, MSVCRT_size_t max, const char *format,
|
||||||
|
|
||||||
for(ret=0; *format && ret<max; format++) {
|
for(ret=0; *format && ret<max; format++) {
|
||||||
if(*format != '%') {
|
if(*format != '%') {
|
||||||
|
if(MSVCRT_isleadbyte((unsigned char)*format)) {
|
||||||
|
str[ret++] = *(format++);
|
||||||
|
if(ret == max) continue;
|
||||||
|
if(!str[ret]) goto einval_error;
|
||||||
|
}
|
||||||
str[ret++] = *format;
|
str[ret++] = *format;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue