Module: wine Branch: master Commit: bff3f0cd3c75253c6163e6e698026c7948d94e8b URL: http://source.winehq.org/git/wine.git/?a=commit;h=bff3f0cd3c75253c6163e6e698...
Author: Piotr Caban piotr@codeweavers.com Date: Tue Dec 6 12:49:01 2011 +0100
msvcp90: Added _Locinfo::_Addcats partial implementation.
---
dlls/msvcp90/locale.c | 27 +++++++++++++++++++++++---- 1 files changed, 23 insertions(+), 4 deletions(-)
diff --git a/dlls/msvcp90/locale.c b/dlls/msvcp90/locale.c index 2614724..0cc0c58 100644 --- a/dlls/msvcp90/locale.c +++ b/dlls/msvcp90/locale.c @@ -814,8 +814,28 @@ void __thiscall _Locinfo_dtor(_Locinfo *this) /* ?_Locinfo_Addcats@_Locinfo@std@@SAAEAV12@PEAV12@HPEBD@Z */ _Locinfo* __cdecl _Locinfo__Locinfo_Addcats(_Locinfo *locinfo, int category, const char *locstr) { - FIXME("%p %d %s) stub\n", locinfo, category, locstr); - return NULL; + const char *locale = NULL; + + /* This function is probably modifying more global objects */ + FIXME("(%p %d %s) semi-stub\n", locinfo, category, locstr); + if(!locstr) + throw_exception(EXCEPTION_RUNTIME_ERROR, "bad locale name"); + + _Lockit_ctor_locktype(&locinfo->lock, _LOCK_LOCALE); + MSVCP_basic_string_char_dtor(&locinfo->newlocname); + + if(category) + locale = setlocale(LC_ALL, locstr); + else + locale = setlocale(LC_ALL, NULL); + + if(locale) + MSVCP_basic_string_char_ctor_cstr(&locinfo->newlocname, locale); + else + MSVCP_basic_string_char_ctor_cstr(&locinfo->newlocname, "*"); + _Lockit_dtor(&locinfo->lock); + + return locinfo; }
/* ?_Addcats@_Locinfo@std@@QAEAAV12@HPBD@Z */ @@ -823,8 +843,7 @@ _Locinfo* __cdecl _Locinfo__Locinfo_Addcats(_Locinfo *locinfo, int category, con DEFINE_THISCALL_WRAPPER(_Locinfo__Addcats, 12) _Locinfo* __thiscall _Locinfo__Addcats(_Locinfo *this, int category, const char *locstr) { - FIXME("(%p %d %s) stub\n", this, category, locstr); - return NULL; + return _Locinfo__Locinfo_Addcats(this, category, locstr); }
/* ?_Getcoll@_Locinfo@std@@QBE?AU_Collvec@@XZ */