Piotr Caban : msvcp90: Added _Locinfo::_Addcats partial implementation.
Module: wine Branch: master Commit: bff3f0cd3c75253c6163e6e698026c7948d94e8b URL: http://source.winehq.org/git/wine.git/?a=commit;h=bff3f0cd3c75253c6163e6e698... Author: Piotr Caban <piotr(a)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(a)_Locinfo@std@@SAAEAV12(a)PEAV12@HPEBD(a)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(a)_Locinfo@std@@QAEAAV12(a)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(a)_Locinfo@std@@QBE?AU_Collvec@@XZ */
participants (1)
-
Alexandre Julliard