Module: wine Branch: master Commit: fe90fdfebd1dee2681a8b7555220cb536e072c75 URL: https://source.winehq.org/git/wine.git/?a=commit;h=fe90fdfebd1dee2681a8b7555...
Author: Piotr Caban piotr@codeweavers.com Date: Wed Aug 15 12:49:05 2018 +0200
msvcp90: Add time_get<char>::do_get_year implementation.
Signed-off-by: Piotr Caban piotr@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/msvcp90/locale.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-)
diff --git a/dlls/msvcp90/locale.c b/dlls/msvcp90/locale.c index 656aa65..b506c9e 100644 --- a/dlls/msvcp90/locale.c +++ b/dlls/msvcp90/locale.c @@ -10216,8 +10216,24 @@ istreambuf_iterator_char* __thiscall time_get_char_do_get_year(const time_get_ch istreambuf_iterator_char *ret, istreambuf_iterator_char s, istreambuf_iterator_char e, ios_base *base, int *err, struct tm *t) { - FIXME("(%p %p %p %p %p) stub\n", this, ret, base, err, t); - return NULL; + int year; + + TRACE("(%p %p %p %p %p)\n", this, ret, base, err, t); + + /* The function supports only dates from [1900-2035] range */ + *err |= time_get_char__Getint(this, &s, &e, 0, 2035, &year); + if (!(*err & IOSTATE_failbit)) + { + if (year >= 1900) + year -= 1900; + if (year > 135) + *err |= IOSTATE_failbit; + else + t->tm_year = year; + } + + *ret = s; + return ret; }
/* ?get_year@?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QBE?AV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@V32@0AAVios_base@2@AAHPAUtm@@@Z */