ruby-changes:8239
From: suke <ko1@a...>
Date: Mon, 13 Oct 2008 09:03:28 +0900 (JST)
Subject: [ruby-changes:8239] Ruby:r19767 (trunk): * ext/win32ole/win32ole.c (load_conv_function51932): support
suke 2008-10-13 09:03:11 +0900 (Mon, 13 Oct 2008) New Revision: 19767 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=19767 Log: * ext/win32ole/win32ole.c (load_conv_function51932): support CP51932 on cygwin and mingw32. thanks to arton. * test/win32ole/test_win32ole.rb (test_cp51932): ditto. Modified files: trunk/ChangeLog trunk/ext/win32ole/win32ole.c trunk/test/win32ole/test_win32ole.rb Index: ChangeLog =================================================================== --- ChangeLog (revision 19766) +++ ChangeLog (revision 19767) @@ -1,3 +1,10 @@ +Mon Oct 13 08:59:08 2008 Masaki Suketa <masaki.suketa@n...> + + * ext/win32ole/win32ole.c (load_conv_function51932): support + CP51932 on cygwin and mingw32. thanks to arton. + + * test/win32ole/test_win32ole.rb (test_cp51932): ditto. + Mon Oct 13 07:54:00 2008 Yukihiro Matsumoto <matz@r...> * ruby.c (proc_options): add -U command line option to specify Index: ext/win32ole/win32ole.c =================================================================== --- ext/win32ole/win32ole.c (revision 19766) +++ ext/win32ole/win32ole.c (revision 19767) @@ -82,6 +82,15 @@ #define V_UINTREF(X) V_UNION(X, puintVal) #endif +/* + * unfortunately IID_IMultiLanguage2 is not included in any libXXX.a + * in Cygwin(mingw32). + */ +#if defined(__CYGWIN__) || defined(__MINGW32__) +#undef IID_IMultiLanguage2 +const IID IID_IMultiLanguage2 = {0xDCCFC164, 0x2B38, 0x11d2, {0xB7, 0xEC, 0x00, 0xC0, 0x4F, 0x8F, 0x5D, 0x9A}}; +#endif + #define OLE_RELEASE(X) (X) ? ((X)->lpVtbl->Release(X)) : 0 #define OLE_ADDREF(X) (X) ? ((X)->lpVtbl->AddRef(X)) : 0 @@ -119,7 +128,7 @@ #define WC2VSTR(x) ole_wc2vstr((x), TRUE) -#define WIN32OLE_VERSION "1.3.5" +#define WIN32OLE_VERSION "1.3.6" typedef HRESULT (STDAPICALLTYPE FNCOCREATEINSTANCEEX) (REFCLSID, IUnknown*, DWORD, COSERVERINFO*, DWORD, MULTI_QI*); @@ -965,15 +974,8 @@ HRESULT hr; void *p; if (!pIMultiLanguage2) { -#ifdef _MSC_VER hr = CoCreateInstance(&CLSID_CMultiLanguage, NULL, CLSCTX_INPROC_SERVER, &IID_IMultiLanguage2, &p); -#else - /* - * unfortunately, fail to link IID_IMultiLanguage2 on Cygwin or mingw32. - */ - hr = E_FAIL; -#endif if (FAILED(hr)) { rb_raise(eWIN32OLERuntimeError, "fail to load convert function for CP51932"); } Index: test/win32ole/test_win32ole.rb =================================================================== --- test/win32ole/test_win32ole.rb (revision 19766) +++ test/win32ole/test_win32ole.rb (revision 19767) @@ -365,21 +365,13 @@ cp = WIN32OLE.codepage begin obj = WIN32OLE_VARIANT.new([0x3042].pack("U*").force_encoding("UTF-8")) - # mswin32 ruby only supports CP51932 - if /mswin/ =~ RUBY_PLATFORM - begin - WIN32OLE.codepage = 51932 - rescue - end - if WIN32OLE.codepage == 51932 - assert_equal("\xA4\xA2".force_encoding("CP51932"), obj.value) - end - else - # cygwin, mingw32 ruby does not support CP51932 - assert_raise(WIN32OLERuntimeError) { - WIN32OLE.codepage = 51932 - } + begin + WIN32OLE.codepage = 51932 + rescue end + if WIN32OLE.codepage == 51932 + assert_equal("\xA4\xA2".force_encoding("CP51932"), obj.value) + end ensure WIN32OLE.codepage = cp end -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/