Piotr Caban : msvcp90: Added _Locinfo::_Addcats partial implementation.

Alexandre Julliard julliard at winehq.org
Tue Dec 6 15:46:18 CST 2011


Module: wine
Branch: master
Commit: bff3f0cd3c75253c6163e6e698026c7948d94e8b
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=bff3f0cd3c75253c6163e6e698026c7948d94e8b

Author: Piotr Caban <piotr at 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 at _Locinfo@std@@SAAEAV12 at PEAV12@HPEBD at 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 at _Locinfo@std@@QAEAAV12 at 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 at _Locinfo@std@@QBE?AU_Collvec@@XZ */




More information about the wine-cvs mailing list