win32ole 1.8.8 → 1.8.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dfff5b9994fea1fd3249f3d80aa265a21cd27f7ddd8d74bc34438f987342f97b
4
- data.tar.gz: cd3953182a81a6bb9bbc5d561bdc800aee603cccda736113cd37785685564bb2
3
+ metadata.gz: eeded5c3c12c689465044f51fcb85120250656bdccd82aed9f361bd49dac58d8
4
+ data.tar.gz: 3544f2afa9b6843d31e44dacc08d9d867751c207389df0d50acb0d1e797b1c01
5
5
  SHA512:
6
- metadata.gz: 984fbc6c59a16d9855982896c1fa1230ec6a68ee90083afe7564fce2e07a8e8c05131dfbc322175858be520da1b109ddc642a262bee7c4bcbad809aaaca01b30
7
- data.tar.gz: a88c069fe37638ffa0749fc113506b96d23c0882e0953c4d4d55583111fc3012c18941b9989500c2645e564cb238f7dd85b35363fbdbf85e8296f94b9c813738
6
+ metadata.gz: ce52dc4fd54fd403a2bc56b50caab5740b669b44268de725168abf8f0793923056f0eac6542535d085dbc3175edc97c0aeb9d817d37b6cfabd1a61efa98689f1
7
+ data.tar.gz: eeff5a7db020796fee5b4e3e699e1b1f777f02af072424b1c7ddeb6aa4bfcb566494efac194a10a10a1ea026070862586fd764ae7c51ae5f6eb9f8bbbf6bbd65
@@ -0,0 +1,7 @@
1
+ # This is a file used by GitHub to ignore the following commits on `git blame`.
2
+ #
3
+ # You can also do the same thing in your local repository with:
4
+ # $ git config --local blame.ignoreRevsFile .git-blame-ignore-revs
5
+
6
+ # Expand tabs
7
+ 0667bd63edb6bffeaa59f7ebc3dbe42b82ac496d
@@ -0,0 +1,6 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: 'github-actions'
4
+ directory: '/'
5
+ schedule:
6
+ interval: 'weekly'
@@ -0,0 +1,30 @@
1
+ name: windows
2
+
3
+ on: [push, pull_request]
4
+
5
+ jobs:
6
+ ruby-versions:
7
+ uses: ruby/actions/.github/workflows/ruby_versions.yml@master
8
+ with:
9
+ engine: cruby
10
+ min_version: 2.6
11
+ versions: '["mswin", "mingw"]'
12
+
13
+ test:
14
+ needs: ruby-versions
15
+ name: build (${{ matrix.ruby }})
16
+ strategy:
17
+ fail-fast: false
18
+ matrix:
19
+ ruby: ${{ fromJson(needs.ruby-versions.outputs.versions) }}
20
+ runs-on: windows-latest
21
+ steps:
22
+ - uses: actions/checkout@v4
23
+ - name: Set up Ruby
24
+ uses: ruby/setup-ruby@v1
25
+ with:
26
+ ruby-version: ${{ matrix.ruby }}
27
+ bundler-cache: true # runs 'bundle install' and caches installed gems automatically
28
+ - name: Run test
29
+ run: bundle exec rake
30
+
data/Gemfile CHANGED
@@ -3,5 +3,6 @@ source "https://rubygems.org"
3
3
  # Specify your gem's dependencies in win32ole.gemspec
4
4
  gemspec
5
5
 
6
- gem "rake", "~> 12.0"
7
- gem "minitest", "~> 5.0"
6
+ gem 'rake-compiler'
7
+ gem 'test-unit'
8
+ gem "test-unit-ruby-core"
data/Rakefile CHANGED
@@ -1,10 +1,19 @@
1
1
  require "bundler/gem_tasks"
2
2
  require "rake/testtask"
3
3
 
4
+ name = "win32ole"
5
+
6
+ require 'rake/extensiontask'
7
+ extask = Rake::ExtensionTask.new(name) do |x|
8
+ x.lib_dir << "/#{RUBY_VERSION}/#{x.platform}"
9
+ end
4
10
  Rake::TestTask.new(:test) do |t|
5
- t.libs << "test"
11
+ t.libs << extask.lib_dir
12
+ t.libs << "test/lib"
6
13
  t.libs << "lib"
14
+ t.ruby_opts << "-rhelper"
7
15
  t.test_files = FileList["test/**/test_*.rb"]
8
16
  end
9
17
 
10
18
  task :default => :test
19
+ task :test => :compile
@@ -1032,8 +1032,8 @@ module IXMLDOMDocument
1032
1032
  end
1033
1033
 
1034
1034
  # VOID save
1035
- # save the document to a specified desination
1036
- # VARIANT arg0 --- desination [IN]
1035
+ # save the document to a specified destination
1036
+ # VARIANT arg0 --- destination [IN]
1037
1037
  def save(arg0)
1038
1038
  ret = _invoke(64, [arg0], [VT_VARIANT])
1039
1039
  @lastargs = WIN32OLE::ARGV
@@ -6224,8 +6224,8 @@ class Microsoft_XMLDOM_1_0 # DOMDocument
6224
6224
  end
6225
6225
 
6226
6226
  # VOID save
6227
- # save the document to a specified desination
6228
- # VARIANT arg0 --- desination [IN]
6227
+ # save the document to a specified destination
6228
+ # VARIANT arg0 --- destination [IN]
6229
6229
  def save(arg0)
6230
6230
  ret = @dispatch._invoke(64, [arg0], [VT_VARIANT])
6231
6231
  @lastargs = WIN32OLE::ARGV
@@ -6831,8 +6831,8 @@ class Microsoft_FreeThreadedXMLDOM_1_0 # DOMFreeThreadedDocument
6831
6831
  end
6832
6832
 
6833
6833
  # VOID save
6834
- # save the document to a specified desination
6835
- # VARIANT arg0 --- desination [IN]
6834
+ # save the document to a specified destination
6835
+ # VARIANT arg0 --- destination [IN]
6836
6836
  def save(arg0)
6837
6837
  ret = @dispatch._invoke(64, [arg0], [VT_VARIANT])
6838
6838
  @lastargs = WIN32OLE::ARGV
@@ -27,7 +27,7 @@
27
27
  const IID IID_IMultiLanguage2 = {0xDCCFC164, 0x2B38, 0x11d2, {0xB7, 0xEC, 0x00, 0xC0, 0x4F, 0x8F, 0x5D, 0x9A}};
28
28
  #endif
29
29
 
30
- #define WIN32OLE_VERSION "1.8.8"
30
+ #define WIN32OLE_VERSION "1.8.10"
31
31
 
32
32
  typedef HRESULT (STDAPICALLTYPE FNCOCREATEINSTANCEEX)
33
33
  (REFCLSID, IUnknown*, DWORD, COSERVERINFO*, DWORD, MULTI_QI*);
@@ -454,12 +454,12 @@ vtdate2rbtime(double date)
454
454
  double sec;
455
455
  VariantTimeToSystemTime(date, &st);
456
456
  v = rb_funcall(rb_cTime, rb_intern("new"), 6,
457
- RB_INT2FIX(st.wYear),
458
- RB_INT2FIX(st.wMonth),
459
- RB_INT2FIX(st.wDay),
460
- RB_INT2FIX(st.wHour),
461
- RB_INT2FIX(st.wMinute),
462
- RB_INT2FIX(st.wSecond));
457
+ RB_INT2FIX(st.wYear),
458
+ RB_INT2FIX(st.wMonth),
459
+ RB_INT2FIX(st.wDay),
460
+ RB_INT2FIX(st.wHour),
461
+ RB_INT2FIX(st.wMinute),
462
+ RB_INT2FIX(st.wSecond));
463
463
  st.wYear = RB_FIX2INT(rb_funcall(v, rb_intern("year"), 0));
464
464
  st.wMonth = RB_FIX2INT(rb_funcall(v, rb_intern("month"), 0));
465
465
  st.wDay = RB_FIX2INT(rb_funcall(v, rb_intern("mday"), 0));
@@ -507,6 +507,7 @@ static UINT ole_encoding2cp(rb_encoding *enc)
507
507
  ENC_MACHING_CP(enc, "GB2312", 20936);
508
508
  ENC_MACHING_CP(enc, "GBK", 936);
509
509
  ENC_MACHING_CP(enc, "IBM437", 437);
510
+ ENC_MACHING_CP(enc, "IBM720", 720);
510
511
  ENC_MACHING_CP(enc, "IBM737", 737);
511
512
  ENC_MACHING_CP(enc, "IBM775", 775);
512
513
  ENC_MACHING_CP(enc, "IBM852", 852);
@@ -567,16 +568,16 @@ load_conv_function51932(void)
567
568
  void *p;
568
569
  if (!pIMultiLanguage) {
569
570
  #if defined(HAVE_TYPE_IMULTILANGUAGE2)
570
- hr = CoCreateInstance(&CLSID_CMultiLanguage, NULL, CLSCTX_INPROC_SERVER,
571
- &IID_IMultiLanguage2, &p);
571
+ hr = CoCreateInstance(&CLSID_CMultiLanguage, NULL, CLSCTX_INPROC_SERVER,
572
+ &IID_IMultiLanguage2, &p);
572
573
  #elif defined(HAVE_TYPE_IMULTILANGUAGE)
573
- hr = CoCreateInstance(&CLSID_CMultiLanguage, NULL, CLSCTX_INPROC_SERVER,
574
- &IID_IMultiLanguage, &p);
574
+ hr = CoCreateInstance(&CLSID_CMultiLanguage, NULL, CLSCTX_INPROC_SERVER,
575
+ &IID_IMultiLanguage, &p);
575
576
  #endif
576
- if (FAILED(hr)) {
577
- failed_load_conv51932();
578
- }
579
- pIMultiLanguage = p;
577
+ if (FAILED(hr)) {
578
+ failed_load_conv51932();
579
+ }
580
+ pIMultiLanguage = p;
580
581
  }
581
582
  }
582
583
  #define need_conv_function51932() (load_conv_function51932(), 1)
@@ -623,7 +624,7 @@ ole_init_cp(void)
623
624
  rb_encoding *encdef;
624
625
  encdef = rb_default_internal_encoding();
625
626
  if (!encdef) {
626
- encdef = rb_default_external_encoding();
627
+ encdef = rb_default_external_encoding();
627
628
  }
628
629
  cp = ole_encoding2cp(encdef);
629
630
  set_ole_codepage(cp);
@@ -649,38 +650,38 @@ ole_cp2encoding(UINT cp)
649
650
  int idx;
650
651
 
651
652
  if (!code_page_installed(cp)) {
652
- switch(cp) {
653
- case CP_ACP:
654
- cp = GetACP();
655
- break;
656
- case CP_OEMCP:
657
- cp = GetOEMCP();
658
- break;
659
- case CP_MACCP:
660
- case CP_THREAD_ACP:
661
- if (!pGetCPInfoEx) {
662
- pGetCPInfoEx = (BOOL (*)(UINT, DWORD, struct myCPINFOEX *))
663
- GetProcAddress(GetModuleHandle("kernel32"), "GetCPInfoEx");
664
- if (!pGetCPInfoEx) {
665
- pGetCPInfoEx = (void*)-1;
666
- }
667
- }
668
- buf = ALLOCA_N(struct myCPINFOEX, 1);
669
- ZeroMemory(buf, sizeof(struct myCPINFOEX));
670
- if (pGetCPInfoEx == (void*)-1 || !pGetCPInfoEx(cp, 0, buf)) {
671
- rb_raise(eWIN32OLERuntimeError, "cannot map codepage to encoding.");
672
- break; /* never reach here */
673
- }
674
- cp = buf->CodePage;
675
- break;
676
- case CP_SYMBOL:
677
- case CP_UTF7:
678
- case CP_UTF8:
679
- break;
680
- case 51932:
681
- load_conv_function51932();
682
- break;
683
- default:
653
+ switch(cp) {
654
+ case CP_ACP:
655
+ cp = GetACP();
656
+ break;
657
+ case CP_OEMCP:
658
+ cp = GetOEMCP();
659
+ break;
660
+ case CP_MACCP:
661
+ case CP_THREAD_ACP:
662
+ if (!pGetCPInfoEx) {
663
+ pGetCPInfoEx = (BOOL (*)(UINT, DWORD, struct myCPINFOEX *))
664
+ GetProcAddress(GetModuleHandle("kernel32"), "GetCPInfoEx");
665
+ if (!pGetCPInfoEx) {
666
+ pGetCPInfoEx = (void*)-1;
667
+ }
668
+ }
669
+ buf = ALLOCA_N(struct myCPINFOEX, 1);
670
+ ZeroMemory(buf, sizeof(struct myCPINFOEX));
671
+ if (pGetCPInfoEx == (void*)-1 || !pGetCPInfoEx(cp, 0, buf)) {
672
+ rb_raise(eWIN32OLERuntimeError, "cannot map codepage to encoding.");
673
+ break; /* never reach here */
674
+ }
675
+ cp = buf->CodePage;
676
+ break;
677
+ case CP_SYMBOL:
678
+ case CP_UTF7:
679
+ case CP_UTF8:
680
+ break;
681
+ case 51932:
682
+ load_conv_function51932();
683
+ break;
684
+ default:
684
685
  rb_raise(eWIN32OLERuntimeError, "codepage should be WIN32OLE::CP_ACP, WIN32OLE::CP_OEMCP, WIN32OLE::CP_MACCP, WIN32OLE::CP_THREAD_ACP, WIN32OLE::CP_SYMBOL, WIN32OLE::CP_UTF7, WIN32OLE::CP_UTF8, or installed codepage.");
685
686
  break;
686
687
  }
@@ -689,7 +690,7 @@ ole_cp2encoding(UINT cp)
689
690
  enc_name = rb_sprintf("CP%d", cp);
690
691
  idx = rb_enc_find_index(enc_cstr = StringValueCStr(enc_name));
691
692
  if (idx < 0)
692
- idx = rb_define_dummy_encoding(enc_cstr);
693
+ idx = rb_define_dummy_encoding(enc_cstr);
693
694
  return rb_enc_from_index(idx);
694
695
  }
695
696
 
@@ -699,14 +700,14 @@ ole_ml_wc2mb_conv0(LPWSTR pw, LPSTR pm, UINT *size)
699
700
  {
700
701
  DWORD dw = 0;
701
702
  return pIMultiLanguage->lpVtbl->ConvertStringFromUnicode(pIMultiLanguage,
702
- &dw, cWIN32OLE_cp, pw, NULL, pm, size);
703
+ &dw, cWIN32OLE_cp, pw, NULL, pm, size);
703
704
  }
704
705
  #define ole_ml_wc2mb_conv(pw, pm, size, onfailure) do { \
705
- HRESULT hr = ole_ml_wc2mb_conv0(pw, pm, &size); \
706
- if (FAILED(hr)) { \
707
- onfailure; \
708
- ole_raise(hr, eWIN32OLERuntimeError, "fail to convert Unicode to CP%d", cWIN32OLE_cp); \
709
- } \
706
+ HRESULT hr = ole_ml_wc2mb_conv0(pw, pm, &size); \
707
+ if (FAILED(hr)) { \
708
+ onfailure; \
709
+ ole_raise(hr, eWIN32OLERuntimeError, "fail to convert Unicode to CP%d", cWIN32OLE_cp); \
710
+ } \
710
711
  } while (0)
711
712
  #endif
712
713
 
@@ -719,11 +720,11 @@ ole_wc2mb_alloc(LPWSTR pw, char *(alloc)(UINT size, void *arg), void *arg)
719
720
  UINT size = 0;
720
721
  if (conv_51932(cWIN32OLE_cp)) {
721
722
  #ifndef pIMultiLanguage
722
- ole_ml_wc2mb_conv(pw, NULL, size, {});
723
- pm = alloc(size, arg);
724
- if (size) ole_ml_wc2mb_conv(pw, pm, size, xfree(pm));
725
- pm[size] = '\0';
726
- return pm;
723
+ ole_ml_wc2mb_conv(pw, NULL, size, {});
724
+ pm = alloc(size, arg);
725
+ if (size) ole_ml_wc2mb_conv(pw, pm, size, xfree(pm));
726
+ pm[size] = '\0';
727
+ return pm;
727
728
  #endif
728
729
  }
729
730
  size = ole_wc2mb_conv(pw, NULL, 0);
@@ -815,8 +816,8 @@ ole_initialize(void)
815
816
  HRESULT hr;
816
817
 
817
818
  if(!g_uninitialize_hooked) {
818
- rb_add_event_hook(ole_uninitialize_hook, RUBY_EVENT_THREAD_END, Qnil);
819
- g_uninitialize_hooked = TRUE;
819
+ rb_add_event_hook(ole_uninitialize_hook, RUBY_EVENT_THREAD_END, Qnil);
820
+ g_uninitialize_hooked = TRUE;
820
821
  }
821
822
 
822
823
  if(g_ole_initialized == FALSE) {
@@ -910,21 +911,21 @@ ole_mb2wc(char *pm, int len, UINT cp)
910
911
 
911
912
  if (conv_51932(cp)) {
912
913
  #ifndef pIMultiLanguage
913
- DWORD dw = 0;
914
- UINT n = len;
915
- HRESULT hr = pIMultiLanguage->lpVtbl->ConvertStringToUnicode(pIMultiLanguage,
916
- &dw, cp, pm, &n, NULL, &size);
917
- if (FAILED(hr)) {
914
+ DWORD dw = 0;
915
+ UINT n = len;
916
+ HRESULT hr = pIMultiLanguage->lpVtbl->ConvertStringToUnicode(pIMultiLanguage,
917
+ &dw, cp, pm, &n, NULL, &size);
918
+ if (FAILED(hr)) {
918
919
  ole_raise(hr, eWIN32OLERuntimeError, "fail to convert CP%d to Unicode", cp);
919
- }
920
- pw = SysAllocStringLen(NULL, size);
921
- n = len;
922
- hr = pIMultiLanguage->lpVtbl->ConvertStringToUnicode(pIMultiLanguage,
923
- &dw, cp, pm, &n, pw, &size);
924
- if (FAILED(hr)) {
920
+ }
921
+ pw = SysAllocStringLen(NULL, size);
922
+ n = len;
923
+ hr = pIMultiLanguage->lpVtbl->ConvertStringToUnicode(pIMultiLanguage,
924
+ &dw, cp, pm, &n, pw, &size);
925
+ if (FAILED(hr)) {
925
926
  ole_raise(hr, eWIN32OLERuntimeError, "fail to convert CP%d to Unicode", cp);
926
- }
927
- return pw;
927
+ }
928
+ return pw;
928
929
  #endif
929
930
  }
930
931
  size = MultiByteToWideChar(cp, 0, pm, len, NULL, 0);
@@ -994,7 +995,7 @@ ole_val2variant_ex(VALUE val, VARIANT *var, VARTYPE vt)
994
995
  }
995
996
  return;
996
997
  }
997
- #if (_MSC_VER >= 1300) || defined(__CYGWIN__) || defined(__MINGW32__)
998
+ #if (defined(_MSC_VER) && (_MSC_VER >= 1300)) || defined(__CYGWIN__) || defined(__MINGW32__)
998
999
  switch(vt & ~VT_BYREF) {
999
1000
  case VT_I8:
1000
1001
  V_VT(var) = VT_I8;
@@ -1008,7 +1009,7 @@ ole_val2variant_ex(VALUE val, VARIANT *var, VARTYPE vt)
1008
1009
  ole_val2variant2(val, var);
1009
1010
  break;
1010
1011
  }
1011
- #else /* (_MSC_VER >= 1300) || defined(__CYGWIN__) || defined(__MINGW32__) */
1012
+ #else /* (defined(_MSC_VER) && (_MSC_VER >= 1300)) || defined(__CYGWIN__) || defined(__MINGW32__) */
1012
1013
  ole_val2variant2(val, var);
1013
1014
  #endif
1014
1015
  }
@@ -1062,7 +1063,7 @@ get_ptr_of_variant(VARIANT *pvar)
1062
1063
  case VT_R8:
1063
1064
  return &V_R8(pvar);
1064
1065
  break;
1065
- #if (_MSC_VER >= 1300) || defined(__CYGWIN__) || defined(__MINGW32__)
1066
+ #if (defined(_MSC_VER) && (_MSC_VER >= 1300)) || defined(__CYGWIN__) || defined(__MINGW32__)
1066
1067
  case VT_I8:
1067
1068
  return &V_I8(pvar);
1068
1069
  break;
@@ -1549,10 +1550,10 @@ ole_variant2val(VARIANT *pvar)
1549
1550
  obj = RB_INT2NUM((long)V_UINT(pvar));
1550
1551
  break;
1551
1552
 
1552
- #if (_MSC_VER >= 1300) || defined(__CYGWIN__) || defined(__MINGW32__)
1553
+ #if (defined(_MSC_VER) && (_MSC_VER >= 1300)) || defined(__CYGWIN__) || defined(__MINGW32__)
1553
1554
  case VT_I8:
1554
1555
  if(V_ISBYREF(pvar))
1555
- #if (_MSC_VER >= 1300) || defined(__CYGWIN__) || defined(__MINGW32__)
1556
+ #if (defined(_MSC_VER) && (_MSC_VER >= 1300)) || defined(__CYGWIN__) || defined(__MINGW32__)
1556
1557
  #ifdef V_I8REF
1557
1558
  obj = I8_2_NUM(*V_I8REF(pvar));
1558
1559
  #endif
@@ -1564,7 +1565,7 @@ ole_variant2val(VARIANT *pvar)
1564
1565
  break;
1565
1566
  case VT_UI8:
1566
1567
  if(V_ISBYREF(pvar))
1567
- #if (_MSC_VER >= 1300) || defined(__CYGWIN__) || defined(__MINGW32__)
1568
+ #if (defined(_MSC_VER) && (_MSC_VER >= 1300)) || defined(__CYGWIN__) || defined(__MINGW32__)
1568
1569
  #ifdef V_UI8REF
1569
1570
  obj = UI8_2_NUM(*V_UI8REF(pvar));
1570
1571
  #endif
@@ -1574,7 +1575,7 @@ ole_variant2val(VARIANT *pvar)
1574
1575
  else
1575
1576
  obj = UI8_2_NUM(V_UI8(pvar));
1576
1577
  break;
1577
- #endif /* (_MSC_VER >= 1300) || defined(__CYGWIN__) || defined(__MINGW32__) */
1578
+ #endif /* (defined(_MSC_VER) && (_MSC_VER >= 1300)) || defined(__CYGWIN__) || defined(__MINGW32__) */
1578
1579
 
1579
1580
  case VT_R4:
1580
1581
  if(V_ISBYREF(pvar))
@@ -1736,11 +1737,11 @@ reg_get_val(HKEY hkey, const char *subkey)
1736
1737
  if (err == ERROR_SUCCESS) {
1737
1738
  pbuf[size] = '\0';
1738
1739
  if (dwtype == REG_EXPAND_SZ) {
1739
- char* pbuf2 = (char *)pbuf;
1740
- DWORD len = ExpandEnvironmentStrings(pbuf2, NULL, 0);
1741
- pbuf = ALLOC_N(char, len + 1);
1742
- ExpandEnvironmentStrings(pbuf2, pbuf, len + 1);
1743
- free(pbuf2);
1740
+ char* pbuf2 = (char *)pbuf;
1741
+ DWORD len = ExpandEnvironmentStrings(pbuf2, NULL, 0);
1742
+ pbuf = ALLOC_N(char, len + 1);
1743
+ ExpandEnvironmentStrings(pbuf2, pbuf, len + 1);
1744
+ free(pbuf2);
1744
1745
  }
1745
1746
  val = rb_str_new2((char *)pbuf);
1746
1747
  }
@@ -2521,12 +2522,12 @@ fole_initialize(int argc, VALUE *argv, VALUE self)
2521
2522
  OLE_RELEASE(pIClassFactory2);
2522
2523
  }
2523
2524
  }
2524
- pDispatch = p;
2525
2525
  if(FAILED(hr)) {
2526
2526
  ole_raise(hr, eWIN32OLERuntimeError,
2527
2527
  "failed to create WIN32OLE object from `%s'",
2528
2528
  StringValuePtr(svr_name));
2529
2529
  }
2530
+ pDispatch = p;
2530
2531
 
2531
2532
  ole_set_member(self, pDispatch);
2532
2533
  return self;
@@ -2554,7 +2555,7 @@ hash2named_arg(VALUE key, VALUE val, VALUE pop)
2554
2555
  rb_raise(rb_eTypeError, "wrong argument type (expected String or Symbol)");
2555
2556
  }
2556
2557
  if (RB_TYPE_P(key, T_SYMBOL)) {
2557
- key = rb_sym2str(key);
2558
+ key = rb_sym2str(key);
2558
2559
  }
2559
2560
 
2560
2561
  /* pNamedArgs[0] is <method name>, so "index + 1" */
@@ -2618,10 +2619,10 @@ ole_invoke(int argc, VALUE *argv, VALUE self, USHORT wFlags, BOOL is_bracket)
2618
2619
 
2619
2620
  rb_scan_args(argc, argv, "1*", &cmd, &paramS);
2620
2621
  if(!RB_TYPE_P(cmd, T_STRING) && !RB_TYPE_P(cmd, T_SYMBOL) && !is_bracket) {
2621
- rb_raise(rb_eTypeError, "method is wrong type (expected String or Symbol)");
2622
+ rb_raise(rb_eTypeError, "method is wrong type (expected String or Symbol)");
2622
2623
  }
2623
2624
  if (RB_TYPE_P(cmd, T_SYMBOL)) {
2624
- cmd = rb_sym2str(cmd);
2625
+ cmd = rb_sym2str(cmd);
2625
2626
  }
2626
2627
  pole = oledata_get_struct(self);
2627
2628
  if(!pole->pDispatch) {
@@ -2630,7 +2631,7 @@ ole_invoke(int argc, VALUE *argv, VALUE self, USHORT wFlags, BOOL is_bracket)
2630
2631
  if (is_bracket) {
2631
2632
  DispID = DISPID_VALUE;
2632
2633
  argc += 1;
2633
- rb_ary_unshift(paramS, cmd);
2634
+ rb_ary_unshift(paramS, cmd);
2634
2635
  } else {
2635
2636
  wcmdname = ole_vstr2wc(cmd);
2636
2637
  hr = pole->pDispatch->lpVtbl->GetIDsOfNames( pole->pDispatch, &IID_NULL,
@@ -2651,7 +2652,7 @@ ole_invoke(int argc, VALUE *argv, VALUE self, USHORT wFlags, BOOL is_bracket)
2651
2652
  /*------------------------------------------
2652
2653
  hash object ==> named dispatch parameters
2653
2654
  --------------------------------------------*/
2654
- cNamedArgs = rb_long2int(RHASH_SIZE(param));
2655
+ cNamedArgs = rb_long2int((long)RHASH_SIZE(param));
2655
2656
  op.dp.cArgs = cNamedArgs + argc - 2;
2656
2657
  op.pNamedArgs = ALLOCA_N(OLECHAR*, cNamedArgs + 1);
2657
2658
  op.dp.rgvarg = ALLOCA_N(VARIANTARG, op.dp.cArgs);
@@ -3638,7 +3639,7 @@ fole_respond_to(VALUE self, VALUE method)
3638
3639
  pole = oledata_get_struct(self);
3639
3640
  wcmdname = ole_vstr2wc(method);
3640
3641
  hr = pole->pDispatch->lpVtbl->GetIDsOfNames( pole->pDispatch, &IID_NULL,
3641
- &wcmdname, 1, cWIN32OLE_lcid, &DispID);
3642
+ &wcmdname, 1, cWIN32OLE_lcid, &DispID);
3642
3643
  SysFreeString(wcmdname);
3643
3644
  return SUCCEEDED(hr) ? Qtrue : Qfalse;
3644
3645
  }
@@ -3752,7 +3753,7 @@ ole_typedesc2val(ITypeInfo *pTypeInfo, TYPEDESC *pTypeDesc, VALUE typedetails)
3752
3753
  case VT_UI4:
3753
3754
  typestr = rb_str_new2("UI4");
3754
3755
  break;
3755
- #if (_MSC_VER >= 1300) || defined(__CYGWIN__) || defined(__MINGW32__)
3756
+ #if (defined(_MSC_VER) && (_MSC_VER >= 1300)) || defined(__CYGWIN__) || defined(__MINGW32__)
3756
3757
  case VT_I8:
3757
3758
  typestr = rb_str_new2("I8");
3758
3759
  break;
@@ -3962,6 +3963,7 @@ check_nano_server(void)
3962
3963
  }
3963
3964
  }
3964
3965
 
3966
+ LCID cWIN32OLE_lcid;
3965
3967
 
3966
3968
  void
3967
3969
  Init_win32ole(void)
@@ -112,8 +112,8 @@ struct oledata {
112
112
  IDispatch *pDispatch;
113
113
  };
114
114
 
115
- VALUE cWIN32OLE;
116
- LCID cWIN32OLE_lcid;
115
+ extern VALUE cWIN32OLE;
116
+ extern LCID cWIN32OLE_lcid;
117
117
 
118
118
  struct oledata *oledata_get_struct(VALUE obj);
119
119
  LPWSTR ole_vstr2wc(VALUE vstr);
@@ -60,6 +60,9 @@ ole_raise(HRESULT hr, VALUE ecs, const char *fmt, ...)
60
60
  rb_exc_raise(rb_exc_new_str(ecs, msg));
61
61
  }
62
62
 
63
+ VALUE eWIN32OLERuntimeError;
64
+ VALUE eWIN32OLEQueryInterfaceError;
65
+
63
66
  void
64
67
  Init_win32ole_error(void)
65
68
  {
@@ -1,8 +1,8 @@
1
1
  #ifndef WIN32OLE_ERROR_H
2
2
  #define WIN32OLE_ERROR_H 1
3
3
 
4
- VALUE eWIN32OLERuntimeError;
5
- VALUE eWIN32OLEQueryInterfaceError;
4
+ extern VALUE eWIN32OLERuntimeError;
5
+ extern VALUE eWIN32OLEQueryInterfaceError;
6
6
  NORETURN(PRINTF_ARGS(void ole_raise(HRESULT hr, VALUE ecs, const char *fmt, ...), 3, 4));
7
7
  void Init_win32ole_error(void);
8
8
 
@@ -200,7 +200,7 @@ STDMETHODIMP EVENTSINK_Invoke(
200
200
  }
201
201
  outargv = Qnil;
202
202
  if (is_outarg == Qtrue) {
203
- outargv = rb_ary_new();
203
+ outargv = rb_ary_new();
204
204
  rb_ary_push(args, outargv);
205
205
  }
206
206
 
@@ -413,15 +413,15 @@ hash2ptr_dispparams(VALUE hash, ITypeInfo *pTypeInfo, DISPID dispid, DISPPARAMS
413
413
  bstrs, pdispparams->cArgs + 1,
414
414
  &len);
415
415
  if (FAILED(hr))
416
- return;
416
+ return;
417
417
 
418
418
  for (i = 0; i < len - 1; i++) {
419
- key = WC2VSTR(bstrs[i + 1]);
419
+ key = WC2VSTR(bstrs[i + 1]);
420
420
  val = rb_hash_aref(hash, RB_UINT2NUM(i));
421
- if (val == Qnil)
422
- val = rb_hash_aref(hash, key);
423
- if (val == Qnil)
424
- val = rb_hash_aref(hash, rb_str_intern(key));
421
+ if (val == Qnil)
422
+ val = rb_hash_aref(hash, key);
423
+ if (val == Qnil)
424
+ val = rb_hash_aref(hash, rb_str_intern(key));
425
425
  pvar = &pdispparams->rgvarg[pdispparams->cArgs-i-1];
426
426
  ole_val2ptr_variant(val, pvar);
427
427
  }
@@ -433,7 +433,7 @@ hash2result(VALUE hash)
433
433
  VALUE ret = Qnil;
434
434
  ret = rb_hash_aref(hash, rb_str_new2("return"));
435
435
  if (ret == Qnil)
436
- ret = rb_hash_aref(hash, rb_str_intern(rb_str_new2("return")));
436
+ ret = rb_hash_aref(hash, rb_str_intern(rb_str_new2("return")));
437
437
  return ret;
438
438
  }
439
439
 
@@ -610,7 +610,7 @@ find_coclass(
610
610
 
611
611
  hr = pTypeInfo->lpVtbl->GetContainingTypeLib(pTypeInfo, &pTypeLib, NULL);
612
612
  if (FAILED(hr)) {
613
- return hr;
613
+ return hr;
614
614
  }
615
615
  count = pTypeLib->lpVtbl->GetTypeInfoCount(pTypeLib);
616
616
  for (i = 0; i < count && !found; i++) {
@@ -1264,7 +1264,8 @@ Init_win32ole_event(void)
1264
1264
  ary_ole_event = rb_ary_new();
1265
1265
  rb_gc_register_mark_object(ary_ole_event);
1266
1266
  id_events = rb_intern("events");
1267
- cWIN32OLE_EVENT = rb_define_class("WIN32OLE_EVENT", rb_cObject);
1267
+ cWIN32OLE_EVENT = rb_define_class_under(cWIN32OLE, "Event", rb_cObject);
1268
+ rb_define_const(rb_cObject, "WIN32OLE_EVENT", cWIN32OLE_EVENT);
1268
1269
  rb_define_singleton_method(cWIN32OLE_EVENT, "message_loop", fev_s_msg_loop, 0);
1269
1270
  rb_define_alloc_func(cWIN32OLE_EVENT, fev_s_allocate);
1270
1271
  rb_define_method(cWIN32OLE_EVENT, "initialize", fev_initialize, -1);
@@ -437,7 +437,7 @@ ole_method_invoke_kind(ITypeInfo *pTypeInfo, UINT method_index)
437
437
 
438
438
  /*
439
439
  * call-seq:
440
- * WIN32OLE_MTHOD#invkind
440
+ * WIN32OLE_METHOD#invkind
441
441
  *
442
442
  * Returns the method invoke kind.
443
443
  * tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Workbooks')
@@ -923,9 +923,12 @@ folemethod_inspect(VALUE self)
923
923
  return default_inspect(self, "WIN32OLE_METHOD");
924
924
  }
925
925
 
926
+ VALUE cWIN32OLE_METHOD;
927
+
926
928
  void Init_win32ole_method(void)
927
929
  {
928
- cWIN32OLE_METHOD = rb_define_class("WIN32OLE_METHOD", rb_cObject);
930
+ cWIN32OLE_METHOD = rb_define_class_under(cWIN32OLE, "Method", rb_cObject);
931
+ rb_define_const(rb_cObject, "WIN32OLE_METHOD", cWIN32OLE_METHOD);
929
932
  rb_define_alloc_func(cWIN32OLE_METHOD, folemethod_s_allocate);
930
933
  rb_define_method(cWIN32OLE_METHOD, "initialize", folemethod_initialize, 2);
931
934
  rb_define_method(cWIN32OLE_METHOD, "name", folemethod_name, 0);
@@ -7,7 +7,7 @@ struct olemethoddata {
7
7
  UINT index;
8
8
  };
9
9
 
10
- VALUE cWIN32OLE_METHOD;
10
+ extern VALUE cWIN32OLE_METHOD;
11
11
  VALUE folemethod_s_allocate(VALUE klass);
12
12
  VALUE ole_methods_from_typeinfo(ITypeInfo *pTypeInfo, int mask);
13
13
  VALUE create_win32ole_method(ITypeInfo *pTypeInfo, VALUE name);
@@ -422,7 +422,8 @@ foleparam_inspect(VALUE self)
422
422
  void
423
423
  Init_win32ole_param(void)
424
424
  {
425
- cWIN32OLE_PARAM = rb_define_class("WIN32OLE_PARAM", rb_cObject);
425
+ cWIN32OLE_PARAM = rb_define_class_under(cWIN32OLE, "Param", rb_cObject);
426
+ rb_define_const(rb_cObject, "WIN32OLE_PARAM", cWIN32OLE_PARAM);
426
427
  rb_define_alloc_func(cWIN32OLE_PARAM, foleparam_s_allocate);
427
428
  rb_define_method(cWIN32OLE_PARAM, "initialize", foleparam_initialize, 2);
428
429
  rb_define_method(cWIN32OLE_PARAM, "name", foleparam_name, 0);
@@ -589,10 +589,13 @@ folerecord_inspect(VALUE self)
589
589
  field);
590
590
  }
591
591
 
592
+ VALUE cWIN32OLE_RECORD;
593
+
592
594
  void
593
595
  Init_win32ole_record(void)
594
596
  {
595
- cWIN32OLE_RECORD = rb_define_class("WIN32OLE_RECORD", rb_cObject);
597
+ cWIN32OLE_RECORD = rb_define_class_under(cWIN32OLE, "Record", rb_cObject);
598
+ rb_define_const(rb_cObject, "WIN32OLE_RECORD", cWIN32OLE_RECORD);
596
599
  rb_define_alloc_func(cWIN32OLE_RECORD, folerecord_s_allocate);
597
600
  rb_define_method(cWIN32OLE_RECORD, "initialize", folerecord_initialize, 2);
598
601
  rb_define_method(cWIN32OLE_RECORD, "to_h", folerecord_to_h, 0);
@@ -1,7 +1,7 @@
1
1
  #ifndef WIN32OLE_RECORD_H
2
2
  #define WIN32OLE_RECORD_H 1
3
3
 
4
- VALUE cWIN32OLE_RECORD;
4
+ extern VALUE cWIN32OLE_RECORD;
5
5
  void ole_rec2variant(VALUE rec, VARIANT *var);
6
6
  void olerecord_set_ivar(VALUE obj, IRecordInfo *pri, void *prec);
7
7
  VALUE create_win32ole_record(IRecordInfo *pri, void *prec);
@@ -56,7 +56,7 @@ static const rb_data_type_t oletype_datatype = {
56
56
  /*
57
57
  * Document-class: WIN32OLE_TYPE
58
58
  *
59
- * <code>WIN32OLE_TYPE</code> objects represent OLE type libarary information.
59
+ * <code>WIN32OLE_TYPE</code> objects represent OLE type library information.
60
60
  */
61
61
 
62
62
  static void
@@ -883,9 +883,12 @@ foletype_inspect(VALUE self)
883
883
  return default_inspect(self, "WIN32OLE_TYPE");
884
884
  }
885
885
 
886
+ VALUE cWIN32OLE_TYPE;
887
+
886
888
  void Init_win32ole_type(void)
887
889
  {
888
- cWIN32OLE_TYPE = rb_define_class("WIN32OLE_TYPE", rb_cObject);
890
+ cWIN32OLE_TYPE = rb_define_class_under(cWIN32OLE, "Type", rb_cObject);
891
+ rb_define_const(rb_cObject, "WIN32OLE_TYPE", cWIN32OLE_TYPE);
889
892
  rb_define_singleton_method(cWIN32OLE_TYPE, "ole_classes", foletype_s_ole_classes, 1);
890
893
  rb_define_singleton_method(cWIN32OLE_TYPE, "typelibs", foletype_s_typelibs, 0);
891
894
  rb_define_singleton_method(cWIN32OLE_TYPE, "progids", foletype_s_progids, 0);
@@ -1,6 +1,6 @@
1
1
  #ifndef WIN32OLE_TYPE_H
2
2
  #define WIN32OLE_TYPE_H 1
3
- VALUE cWIN32OLE_TYPE;
3
+ extern VALUE cWIN32OLE_TYPE;
4
4
  VALUE create_win32ole_type(ITypeInfo *pTypeInfo, VALUE name);
5
5
  ITypeInfo *itypeinfo(VALUE self);
6
6
  VALUE ole_type_from_itypeinfo(ITypeInfo *pTypeInfo);
@@ -285,7 +285,7 @@ oletypelib_get_libattr(ITypeLib *pTypeLib, TLIBATTR **ppTLibAttr)
285
285
  hr = pTypeLib->lpVtbl->GetLibAttr(pTypeLib, ppTLibAttr);
286
286
  if (FAILED(hr)) {
287
287
  ole_raise(hr, eWIN32OLERuntimeError,
288
- "failed to get library attribute(TLIBATTR) from ITypeLib");
288
+ "failed to get library attribute(TLIBATTR) from ITypeLib");
289
289
  }
290
290
  }
291
291
 
@@ -588,13 +588,13 @@ foletypelib_path(VALUE self)
588
588
  pTypeLib = itypelib(self);
589
589
  oletypelib_get_libattr(pTypeLib, &pTLibAttr);
590
590
  hr = QueryPathOfRegTypeLib(&pTLibAttr->guid,
591
- pTLibAttr->wMajorVerNum,
592
- pTLibAttr->wMinorVerNum,
593
- lcid,
594
- &bstr);
591
+ pTLibAttr->wMajorVerNum,
592
+ pTLibAttr->wMinorVerNum,
593
+ lcid,
594
+ &bstr);
595
595
  if (FAILED(hr)) {
596
- pTypeLib->lpVtbl->ReleaseTLibAttr(pTypeLib, pTLibAttr);
597
- ole_raise(hr, eWIN32OLERuntimeError, "failed to QueryPathOfRegTypeTypeLib");
596
+ pTypeLib->lpVtbl->ReleaseTLibAttr(pTypeLib, pTLibAttr);
597
+ ole_raise(hr, eWIN32OLERuntimeError, "failed to QueryPathOfRegTypeTypeLib");
598
598
  }
599
599
 
600
600
  pTypeLib->lpVtbl->ReleaseTLibAttr(pTypeLib, pTLibAttr);
@@ -722,7 +722,7 @@ typelib_file_from_typelib(VALUE ole)
722
722
  if (ver == Qnil)
723
723
  break;
724
724
  err = reg_open_vkey(hclsid, ver, &hversion);
725
- if (err != ERROR_SUCCESS || fver > atof(StringValuePtr(ver)))
725
+ if (err != ERROR_SUCCESS || fver > atof(StringValuePtr(ver)))
726
726
  continue;
727
727
  fver = atof(StringValuePtr(ver));
728
728
  typelib = reg_get_val(hversion, NULL);
@@ -822,10 +822,13 @@ foletypelib_inspect(VALUE self)
822
822
  return default_inspect(self, "WIN32OLE_TYPELIB");
823
823
  }
824
824
 
825
+ VALUE cWIN32OLE_TYPELIB;
826
+
825
827
  void
826
828
  Init_win32ole_typelib(void)
827
829
  {
828
- cWIN32OLE_TYPELIB = rb_define_class("WIN32OLE_TYPELIB", rb_cObject);
830
+ cWIN32OLE_TYPELIB = rb_define_class_under(cWIN32OLE, "Typelib", rb_cObject);
831
+ rb_define_const(rb_cObject, "WIN32OLE_TYPELIB", cWIN32OLE_TYPELIB);
829
832
  rb_define_singleton_method(cWIN32OLE_TYPELIB, "typelibs", foletypelib_s_typelibs, 0);
830
833
  rb_define_alloc_func(cWIN32OLE_TYPELIB, foletypelib_s_allocate);
831
834
  rb_define_method(cWIN32OLE_TYPELIB, "initialize", foletypelib_initialize, -2);
@@ -1,7 +1,7 @@
1
1
  #ifndef WIN32OLE_TYPELIB_H
2
2
  #define WIN32OLE_TYPELIB_H 1
3
3
 
4
- VALUE cWIN32OLE_TYPELIB;
4
+ extern VALUE cWIN32OLE_TYPELIB;
5
5
 
6
6
  void Init_win32ole_typelib(void);
7
7
  ITypeLib * itypelib(VALUE self);
@@ -365,9 +365,13 @@ folevariable_inspect(VALUE self)
365
365
  return make_inspect("WIN32OLE_VARIABLE", detail);
366
366
  }
367
367
 
368
+ VALUE cWIN32OLE_VARIABLE;
369
+
368
370
  void Init_win32ole_variable(void)
369
371
  {
370
- cWIN32OLE_VARIABLE = rb_define_class("WIN32OLE_VARIABLE", rb_cObject);
372
+ cWIN32OLE_VARIABLE = rb_define_class_under(cWIN32OLE, "Variable", rb_cObject);
373
+ rb_define_const(rb_cObject, "WIN32OLE_VARIABLE", cWIN32OLE_VARIABLE);
374
+ rb_undef_alloc_func(cWIN32OLE_VARIABLE);
371
375
  rb_define_method(cWIN32OLE_VARIABLE, "name", folevariable_name, 0);
372
376
  rb_define_method(cWIN32OLE_VARIABLE, "ole_type", folevariable_ole_type, 0);
373
377
  rb_define_method(cWIN32OLE_VARIABLE, "ole_type_detail", folevariable_ole_type_detail, 0);
@@ -1,7 +1,7 @@
1
1
  #ifndef WIN32OLE_VARIABLE_H
2
2
  #define WIN32OLE_VARIABLE_H 1
3
3
 
4
- VALUE cWIN32OLE_VARIABLE;
4
+ extern VALUE cWIN32OLE_VARIABLE;
5
5
  VALUE create_win32ole_variable(ITypeInfo *pTypeInfo, UINT index, VALUE name);
6
6
  void Init_win32ole_variable(void);
7
7
 
@@ -94,7 +94,7 @@ ole_val2olevariantdata(VALUE val, VARTYPE vt, struct olevariantdata *pvar)
94
94
  }
95
95
  }
96
96
  }
97
- #if (_MSC_VER >= 1300) || defined(__CYGWIN__) || defined(__MINGW32__)
97
+ #if (defined(_MSC_VER) && (_MSC_VER >= 1300)) || defined(__CYGWIN__) || defined(__MINGW32__)
98
98
  } else if ( (vt & ~VT_BYREF) == VT_I8 || (vt & ~VT_BYREF) == VT_UI8) {
99
99
  ole_val2variant_ex(val, &(pvar->realvar), (vt & ~VT_BYREF));
100
100
  ole_val2variant_ex(val, &(pvar->var), (vt & ~VT_BYREF));
@@ -202,7 +202,7 @@ ole_set_byref(VARIANT *realvar, VARIANT *var, VARTYPE vt)
202
202
  V_R8REF(var) = &V_R8(realvar);
203
203
  break;
204
204
 
205
- #if (_MSC_VER >= 1300) || defined(__CYGWIN__) || defined(__MINGW32__)
205
+ #if (defined(_MSC_VER) && (_MSC_VER >= 1300)) || defined(__CYGWIN__) || defined(__MINGW32__)
206
206
  #ifdef V_I8REF
207
207
  case VT_I8:
208
208
  V_I8REF(var) = &V_I8(realvar);
@@ -371,7 +371,7 @@ check_type_val2variant(VALUE val)
371
371
  * Win32OLE converts Ruby object into OLE variant automatically when
372
372
  * invoking OLE methods. If OLE method requires the argument which is
373
373
  * different from the variant by automatic conversion of Win32OLE, you
374
- * can convert the specfied variant type by using WIN32OLE_VARIANT class.
374
+ * can convert the specified variant type by using WIN32OLE_VARIANT class.
375
375
  *
376
376
  * param = WIN32OLE_VARIANT.new(10, WIN32OLE::VARIANT::VT_R4)
377
377
  * oleobj.method(param)
@@ -689,11 +689,14 @@ ole_variant2variant(VALUE val, VARIANT *var)
689
689
  VariantCopy(var, &(pvar->var));
690
690
  }
691
691
 
692
+ VALUE cWIN32OLE_VARIANT;
693
+
692
694
  void
693
695
  Init_win32ole_variant(void)
694
696
  {
695
697
  #undef rb_intern
696
- cWIN32OLE_VARIANT = rb_define_class("WIN32OLE_VARIANT", rb_cObject);
698
+ cWIN32OLE_VARIANT = rb_define_class_under(cWIN32OLE, "Variant", rb_cObject);
699
+ rb_define_const(rb_cObject, "WIN32OLE_VARIANT", cWIN32OLE_VARIANT);
697
700
  rb_define_alloc_func(cWIN32OLE_VARIANT, folevariant_s_allocate);
698
701
  rb_define_singleton_method(cWIN32OLE_VARIANT, "array", folevariant_s_array, 2);
699
702
  rb_define_method(cWIN32OLE_VARIANT, "initialize", folevariant_initialize, -2);
@@ -1,7 +1,7 @@
1
1
  #ifndef WIN32OLE_VARIANT_H
2
2
  #define WIN32OLE_VARIANT_H 1
3
3
 
4
- VALUE cWIN32OLE_VARIANT;
4
+ extern VALUE cWIN32OLE_VARIANT;
5
5
  void ole_variant2variant(VALUE val, VARIANT *var);
6
6
  void Init_win32ole_variant(void);
7
7
 
@@ -1,5 +1,7 @@
1
1
  #include "win32ole.h"
2
2
 
3
+ VALUE mWIN32OLE_VARIANT;
4
+
3
5
  void Init_win32ole_variant_m(void)
4
6
  {
5
7
  /*
@@ -114,7 +116,7 @@ void Init_win32ole_variant_m(void)
114
116
  */
115
117
  rb_define_const(mWIN32OLE_VARIANT, "VT_UI4", RB_INT2FIX(VT_UI4));
116
118
 
117
- #if (_MSC_VER >= 1300) || defined(__CYGWIN__) || defined(__MINGW32__)
119
+ #if (defined(_MSC_VER) && (_MSC_VER >= 1300)) || defined(__CYGWIN__) || defined(__MINGW32__)
118
120
  /*
119
121
  * represents VT_I8 type constant.
120
122
  */
@@ -1,7 +1,7 @@
1
1
  #ifndef WIN32OLE_VARIANT_M_H
2
2
  #define WIN32OLE_VARIANT_M_H 1
3
3
 
4
- VALUE mWIN32OLE_VARIANT;
4
+ extern VALUE mWIN32OLE_VARIANT;
5
5
  void Init_win32ole_variant_m(void);
6
6
 
7
7
  #endif
@@ -0,0 +1,34 @@
1
+ task "build" => "changelogs"
2
+
3
+ changelog = proc do |output, ver = nil, prev = nil|
4
+ ver &&= Gem::Version.new(ver)
5
+ range = [[prev], [ver, "HEAD"]].map {|ver, branch| ver ? "v#{ver.to_s}" : branch}.compact.join("..")
6
+ IO.popen(%W[git log --format=fuller --topo-order --no-merges #{range}]) do |log|
7
+ line = log.gets
8
+ FileUtils.mkpath(File.dirname(output))
9
+ File.open(output, "wb") do |f|
10
+ f.print "-*- coding: utf-8 -*-\n\n", line
11
+ log.each_line do |line|
12
+ line.sub!(/^(?!:)(?:Author|Commit)?(?:Date)?: /, ' \&')
13
+ line.sub!(/ +$/, '')
14
+ f.print(line)
15
+ end
16
+ end
17
+ end
18
+ end
19
+
20
+ tags = IO.popen(%w[git tag -l v[0-9]*]).grep(/v(.*)/) {$1}
21
+ tags.sort_by! {|tag| tag.scan(/\d+/).map(&:to_i)}
22
+ tags.inject(nil) do |prev, tag|
23
+ task("logs/ChangeLog-#{tag}") {|t| changelog[t.name, tag, prev]}
24
+ tag
25
+ end
26
+
27
+ desc "Make ChangeLog"
28
+ task "ChangeLog", [:ver, :prev] do |t, ver: nil, prev: tags.last|
29
+ changelog[t.name, ver, prev]
30
+ end
31
+
32
+ changelogs = ["ChangeLog", *tags.map {|tag| "logs/ChangeLog-#{tag}"}]
33
+ task "changelogs" => changelogs
34
+ CLOBBER.concat(changelogs) << "logs"
@@ -0,0 +1,5 @@
1
+ task "build" => "date_epoch"
2
+
3
+ task "date_epoch" do
4
+ ENV["SOURCE_DATE_EPOCH"] = IO.popen(%W[git -C #{__dir__} log -1 --format=%ct], &:read).chomp
5
+ end
@@ -0,0 +1,45 @@
1
+ class << (helper = Bundler::GemHelper.instance)
2
+ SOURCE_PATH = "ext/stringio/stringio.c"
3
+ def update_source_version
4
+ path = SOURCE_PATH
5
+ File.open(path, "r+b") do |f|
6
+ d = f.read
7
+ if d.sub!(/^#define\s+STRINGIO_VERSION\s+\K".*"/) {version.to_s.dump}
8
+ f.rewind
9
+ f.truncate(0)
10
+ f.print(d)
11
+ end
12
+ end
13
+ end
14
+
15
+ def commit_bump
16
+ sh(%W[git commit -m bump\ up\ to\ #{gemspec.version}
17
+ #{SOURCE_PATH}])
18
+ end
19
+
20
+ def version=(v)
21
+ gemspec.version = v
22
+ update_source_version
23
+ commit_bump
24
+ end
25
+ end
26
+
27
+ major, minor, teeny = helper.gemspec.version.segments
28
+
29
+ task "bump:teeny" do
30
+ helper.version = Gem::Version.new("#{major}.#{minor}.#{teeny+1}")
31
+ end
32
+
33
+ task "bump:minor" do
34
+ helper.version = Gem::Version.new("#{major}.#{minor+1}.0")
35
+ end
36
+
37
+ task "bump:major" do
38
+ helper.version = Gem::Version.new("#{major+1}.0.0")
39
+ end
40
+
41
+ task "bump" => "bump:teeny"
42
+
43
+ task "tag" do
44
+ helper.__send__(:tag_version)
45
+ end
data/win32ole.gemspec CHANGED
@@ -1,6 +1,16 @@
1
+ source_version = ["", "ext/win32ole/"].find do |dir|
2
+ begin
3
+ break File.open(File.join(__dir__, "#{dir}win32ole.c")) {|f|
4
+ f.gets("\n#define WIN32OLE_VERSION ")
5
+ f.gets[/\s*"(.+)"/, 1]
6
+ }
7
+ rescue Errno::ENOENT
8
+ end
9
+ end
10
+
1
11
  Gem::Specification.new do |spec|
2
12
  spec.name = "win32ole"
3
- spec.version = "1.8.8"
13
+ spec.version = source_version
4
14
  spec.authors = ["Masaki Suketa"]
5
15
  spec.email = ["suke@ruby-lang.org"]
6
16
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: win32ole
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.8
4
+ version: 1.8.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Masaki Suketa
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-12-03 00:00:00.000000000 Z
11
+ date: 2023-11-07 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Provides an interface for OLE Automation in Ruby
14
14
  email:
@@ -17,8 +17,10 @@ executables: []
17
17
  extensions: []
18
18
  extra_rdoc_files: []
19
19
  files:
20
+ - ".git-blame-ignore-revs"
21
+ - ".github/dependabot.yml"
22
+ - ".github/workflows/windows.yml"
20
23
  - ".gitignore"
21
- - ".travis.yml"
22
24
  - Gemfile
23
25
  - LICENSE.txt
24
26
  - README.md
@@ -61,6 +63,9 @@ files:
61
63
  - ext/win32ole/win32ole_variant_m.h
62
64
  - lib/win32ole.rb
63
65
  - lib/win32ole/property.rb
66
+ - rakelib/changelogs.rake
67
+ - rakelib/epoch.rake
68
+ - rakelib/version.rake
64
69
  - win32ole.gemspec
65
70
  homepage: https://github.com/ruby/win32ole
66
71
  licenses:
@@ -84,7 +89,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
84
89
  - !ruby/object:Gem::Version
85
90
  version: '0'
86
91
  requirements: []
87
- rubygems_version: 3.2.0.rc.2
92
+ rubygems_version: 3.5.0.dev
88
93
  signing_key:
89
94
  specification_version: 4
90
95
  summary: Provides an interface for OLE Automation in Ruby
data/.travis.yml DELETED
@@ -1,6 +0,0 @@
1
- ---
2
- language: ruby
3
- cache: bundler
4
- rvm:
5
- - 2.8.0
6
- before_install: gem install bundler -v 2.1.4