[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]