exerb 6.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (179) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +8 -0
  3. data/ChangeLog.ja.rd +305 -0
  4. data/README.en.txt +12 -0
  5. data/README.ja.html +143 -0
  6. data/README.ja.txt +6 -0
  7. data/README.md +50 -0
  8. data/Rakefile +205 -0
  9. data/bin/exerb +185 -0
  10. data/bin/mkexy +47 -0
  11. data/doc/LGPL +513 -0
  12. data/doc/class.ja.html +92 -0
  13. data/doc/command.ja.html +109 -0
  14. data/doc/core.ja.html +72 -0
  15. data/doc/example.ja.html +89 -0
  16. data/doc/faq.ja.html +59 -0
  17. data/doc/inside.ja.rd +404 -0
  18. data/doc/license.ja.html +62 -0
  19. data/doc/logo.gif +0 -0
  20. data/doc/misc.ja.html +72 -0
  21. data/doc/navi.gif +0 -0
  22. data/doc/recipe.ja.html +317 -0
  23. data/doc/style.css +187 -0
  24. data/doc/tutorial.ja.html +182 -0
  25. data/example/Makefile +54 -0
  26. data/example/cat_n.rb +14 -0
  27. data/example/exception.rb +9 -0
  28. data/example/ext/Win32API.so +0 -0
  29. data/example/ext/swin.so +0 -0
  30. data/example/msgbox.rb +14 -0
  31. data/example/rubytk.rb +22 -0
  32. data/example/runtime.ico +0 -0
  33. data/example/runtime.rb +19 -0
  34. data/example/vr/clipboard.rb +106 -0
  35. data/example/vr/compat/rubycompat.rb +18 -0
  36. data/example/vr/compat/vrcomctl.rb +12 -0
  37. data/example/vr/compat/vrcontrol.rb +50 -0
  38. data/example/vr/compat/vrmmedia.rb +24 -0
  39. data/example/vr/contrib/inifile.rb +116 -0
  40. data/example/vr/contrib/msgboxconst.rb +55 -0
  41. data/example/vr/contrib/toolbar.rb +371 -0
  42. data/example/vr/contrib/vrctlcolor.rb +110 -0
  43. data/example/vr/contrib/vrhotkey.rb +35 -0
  44. data/example/vr/contrib/vrlistviewex.rb +71 -0
  45. data/example/vr/contrib/vrstdscrollbar.rb +414 -0
  46. data/example/vr/contrib/vrwincomponent.rb +54 -0
  47. data/example/vr/dragdropformat.rb +209 -0
  48. data/example/vr/rscutil.rb +168 -0
  49. data/example/vr/sysmod.rb +249 -0
  50. data/example/vr/vractivex.rb +56 -0
  51. data/example/vr/vrclipboard.rb +53 -0
  52. data/example/vr/vrcomctl.rb +1819 -0
  53. data/example/vr/vrcontrol.rb +1374 -0
  54. data/example/vr/vrdde.rb +623 -0
  55. data/example/vr/vrddrop.rb +190 -0
  56. data/example/vr/vrdialog.rb +406 -0
  57. data/example/vr/vrhandler.rb +195 -0
  58. data/example/vr/vrlayout.old.rb +209 -0
  59. data/example/vr/vrlayout.rb +173 -0
  60. data/example/vr/vrlayout2.rb +340 -0
  61. data/example/vr/vrmargin.rb +141 -0
  62. data/example/vr/vrmgdlayout.rb +381 -0
  63. data/example/vr/vrmmedia.rb +287 -0
  64. data/example/vr/vrolednd.rb +192 -0
  65. data/example/vr/vrowndraw.rb +108 -0
  66. data/example/vr/vrrichedit.rb +366 -0
  67. data/example/vr/vrtimer.rb +148 -0
  68. data/example/vr/vrtooltip.rb +273 -0
  69. data/example/vr/vrtray.rb +143 -0
  70. data/example/vr/vrtvitem.rb +118 -0
  71. data/example/vr/vrtwopane.rb +223 -0
  72. data/example/vr/vruby.rb +1051 -0
  73. data/example/vr/winconst.rb +158 -0
  74. data/example/vruby.rb +38 -0
  75. data/exerb.gemspec +26 -0
  76. data/extconf.rb +7 -0
  77. data/lib/exerb/archive.rb +143 -0
  78. data/lib/exerb/config.rb +51 -0
  79. data/lib/exerb/error.rb +15 -0
  80. data/lib/exerb/executable.rb +68 -0
  81. data/lib/exerb/file_table.rb +189 -0
  82. data/lib/exerb/mkexy.rb +81 -0
  83. data/lib/exerb/name_table.rb +120 -0
  84. data/lib/exerb/recipe.rb +465 -0
  85. data/lib/exerb/resource.rb +190 -0
  86. data/lib/exerb/resource/base.rb +29 -0
  87. data/lib/exerb/resource/binary.rb +31 -0
  88. data/lib/exerb/resource/dialog.rb +30 -0
  89. data/lib/exerb/resource/group_icon.rb +85 -0
  90. data/lib/exerb/resource/icon.rb +52 -0
  91. data/lib/exerb/resource/version_info.rb +155 -0
  92. data/lib/exerb/resource_library.rb +120 -0
  93. data/lib/exerb/utility.rb +95 -0
  94. data/lib/exerb/utility2.rb +122 -0
  95. data/lib/exerb/version.rb +13 -0
  96. data/lib/exerb/win32/const/resource.rb +51 -0
  97. data/lib/exerb/win32/icon_file.rb +78 -0
  98. data/lib/exerb/win32/pe_file.rb +59 -0
  99. data/lib/exerb/win32/resource_directory.rb +105 -0
  100. data/lib/exerb/win32/resource_directory_root.rb +67 -0
  101. data/lib/exerb/win32/resource_entry.rb +98 -0
  102. data/lib/exerb/win32/struct/base.rb +43 -0
  103. data/lib/exerb/win32/struct/icon_dir_entry.rb +83 -0
  104. data/lib/exerb/win32/struct/icon_header.rb +43 -0
  105. data/lib/exerb/win32/struct/icon_res_entry.rb +48 -0
  106. data/lib/exerb/win32/struct/image_dos_header.rb +73 -0
  107. data/lib/exerb/win32/struct/image_file_header.rb +47 -0
  108. data/lib/exerb/win32/struct/image_nt_headers32.rb +53 -0
  109. data/lib/exerb/win32/struct/image_optional_header32.rb +107 -0
  110. data/lib/exerb/win32/struct/image_resource_data_entry.rb +45 -0
  111. data/lib/exerb/win32/struct/image_resource_directory.rb +47 -0
  112. data/lib/exerb/win32/struct/image_resource_directory_entry.rb +72 -0
  113. data/lib/exerb/win32/struct/image_section_header.rb +53 -0
  114. data/lib/exerb/win32/struct/version_info_block.rb +75 -0
  115. data/lib/exerb/win32/struct/vs_fixed_file_info.rb +62 -0
  116. data/src/exerb/cui.c +48 -0
  117. data/src/exerb/default.rb +1 -0
  118. data/src/exerb/exerb.c +877 -0
  119. data/src/exerb/exerb.h +92 -0
  120. data/src/exerb/gui.c +176 -0
  121. data/src/exerb/module.c +138 -0
  122. data/src/exerb/module.h +7 -0
  123. data/src/exerb/patch.c +27 -0
  124. data/src/exerb/resource.h +22 -0
  125. data/src/exerb/resource.rc +121 -0
  126. data/src/exerb/ruby.ico +0 -0
  127. data/src/exerb/utility.c +263 -0
  128. data/src/exerb/utility.h +33 -0
  129. data/test/alltests.rb +16 -0
  130. data/test/test-argv.rb +26 -0
  131. data/test/test-argv/test-argv.rb +9 -0
  132. data/test/test-argv/test-argv.ret +1 -0
  133. data/test/test-dollarzero.rb +26 -0
  134. data/test/test-dollarzero/test-dollarzero.rb +10 -0
  135. data/test/test-dollarzero/test-dollarzero.ret +2 -0
  136. data/test/test-dot.rb +26 -0
  137. data/test/test-dot/dot.dot.dot.rb +9 -0
  138. data/test/test-dot/dot.dot.rb +9 -0
  139. data/test/test-dot/test-dot.rb +13 -0
  140. data/test/test-dot/test-dot.ret +5 -0
  141. data/test/test-exitcode.rb +28 -0
  142. data/test/test-exitcode/test-exitcode.rb +9 -0
  143. data/test/test-kcode.rb +43 -0
  144. data/test/test-kcode/euc.rb +10 -0
  145. data/test/test-kcode/euc.ret +2 -0
  146. data/test/test-kcode/none.rb +10 -0
  147. data/test/test-kcode/none.ret +2 -0
  148. data/test/test-kcode/sjis.rb +10 -0
  149. data/test/test-kcode/sjis.ret +2 -0
  150. data/test/test-kcode/utf8.rb +10 -0
  151. data/test/test-kcode/utf8.ret +2 -0
  152. data/test/test-loadpath.rb +24 -0
  153. data/test/test-loadpath/test-loadpath.rb +9 -0
  154. data/test/test-nest.rb +18 -0
  155. data/test/test-nest/foo.rb +1 -0
  156. data/test/test-nest/foo/bar.rb +2 -0
  157. data/test/test-nest/foo/foo.rb +1 -0
  158. data/test/test-nest/test-nest.rb +1 -0
  159. data/test/test-nest/test-nest.ret +1 -0
  160. data/test/test-preload.rb +24 -0
  161. data/test/test-preload/test-preload.rb +9 -0
  162. data/test/test-regexp.rb +26 -0
  163. data/test/test-regexp/test-regexp.rb +23 -0
  164. data/test/test-regexp/test-regexp.ret +13 -0
  165. data/test/test-require1.rb +26 -0
  166. data/test/test-require1/require1.rb +9 -0
  167. data/test/test-require1/require2.rb +9 -0
  168. data/test/test-require1/require3.rb +9 -0
  169. data/test/test-require1/require4.rb +9 -0
  170. data/test/test-require1/require5.rb +9 -0
  171. data/test/test-require1/require6.rb +9 -0
  172. data/test/test-require1/test-require1.rb +41 -0
  173. data/test/test-require1/test-require1.ret +27 -0
  174. data/test/test-socket.rb +26 -0
  175. data/test/test-socket/test-socket.rb +7 -0
  176. data/test/test-socket/test-socket.ret +1 -0
  177. data/test/testcase.rb +66 -0
  178. data/vendor/mkexports.rb +167 -0
  179. metadata +352 -0
@@ -0,0 +1,26 @@
1
+
2
+ #==============================================================================#
3
+ # $Id: test-require1.rb,v 1.2 2005/04/15 09:42:52 yuya Exp $
4
+ #==============================================================================#
5
+
6
+ require 'testcase'
7
+
8
+ #==============================================================================#
9
+
10
+ class Require1TestCase < Minitest::Test
11
+ include ExerbTestCase
12
+
13
+ def name2
14
+ return 'test-require1'
15
+ end
16
+
17
+ def test_require
18
+ ret1 = read_result(@name)
19
+ ret2 = execute_exe(@name)
20
+ assert_equal(ret1, ret2)
21
+ end
22
+
23
+ end # Require1TestCase
24
+
25
+ #==============================================================================#
26
+ #==============================================================================#
@@ -0,0 +1,9 @@
1
+
2
+ #==============================================================================#
3
+ # $Id: require1.rb,v 1.1 2003/12/04 14:06:59 yuya Exp $
4
+ #==============================================================================#
5
+
6
+ p([File.basename(__FILE__), $"])
7
+
8
+ #==============================================================================#
9
+ #==============================================================================#
@@ -0,0 +1,9 @@
1
+
2
+ #==============================================================================#
3
+ # $Id: require2.rb,v 1.1 2003/12/04 14:06:59 yuya Exp $
4
+ #==============================================================================#
5
+
6
+ p([File.basename(__FILE__), $"])
7
+
8
+ #==============================================================================#
9
+ #==============================================================================#
@@ -0,0 +1,9 @@
1
+
2
+ #==============================================================================#
3
+ # $Id: require3.rb,v 1.1 2003/12/04 14:06:59 yuya Exp $
4
+ #==============================================================================#
5
+
6
+ p([File.basename(__FILE__), $"])
7
+
8
+ #==============================================================================#
9
+ #==============================================================================#
@@ -0,0 +1,9 @@
1
+
2
+ #==============================================================================#
3
+ # $Id: require4.rb,v 1.1 2003/12/04 14:06:59 yuya Exp $
4
+ #==============================================================================#
5
+
6
+ p([File.basename(__FILE__), $"])
7
+
8
+ #==============================================================================#
9
+ #==============================================================================#
@@ -0,0 +1,9 @@
1
+
2
+ #==============================================================================#
3
+ # $Id: require5.rb,v 1.1 2003/12/04 14:06:59 yuya Exp $
4
+ #==============================================================================#
5
+
6
+ p([File.basename(__FILE__), $"])
7
+
8
+ #==============================================================================#
9
+ #==============================================================================#
@@ -0,0 +1,9 @@
1
+
2
+ #==============================================================================#
3
+ # $Id: require6.rb,v 1.1 2003/12/04 14:06:59 yuya Exp $
4
+ #==============================================================================#
5
+
6
+ p([File.basename(__FILE__), $"])
7
+
8
+ #==============================================================================#
9
+ #==============================================================================#
@@ -0,0 +1,41 @@
1
+
2
+ #==============================================================================#
3
+ # $Id: test-require1.rb,v 1.1 2003/12/04 14:06:59 yuya Exp $
4
+ #==============================================================================#
5
+
6
+ p([File.basename(__FILE__), $"])
7
+
8
+ p(require('require1'))
9
+ p(require('require1.rb'))
10
+
11
+ p([File.basename(__FILE__), $"])
12
+
13
+ p(require('require2.rb'))
14
+ p(require('require2'))
15
+
16
+ p([File.basename(__FILE__), $"])
17
+
18
+ p(require('require3.rb'))
19
+ p(require('require3.rb'))
20
+
21
+ p([File.basename(__FILE__), $"])
22
+
23
+ p(require('require4'))
24
+ p(require('require4'))
25
+
26
+ p([File.basename(__FILE__), $"])
27
+
28
+ p(require('require5.rb'))
29
+ p(require('require5.rb'))
30
+ p(require('require5'))
31
+
32
+ p([File.basename(__FILE__), $"])
33
+
34
+ p(require('require6'))
35
+ p(require('require6'))
36
+ p(require('require6.rb'))
37
+
38
+ p([File.basename(__FILE__), $"])
39
+
40
+ #==============================================================================#
41
+ #==============================================================================#
@@ -0,0 +1,27 @@
1
+ ["test-require1.rb", ["enumerator.so"]]
2
+ ["require1.rb", ["enumerator.so"]]
3
+ true
4
+ false
5
+ ["test-require1.rb", ["enumerator.so", "require1.rb"]]
6
+ ["require2.rb", ["enumerator.so", "require1.rb"]]
7
+ true
8
+ false
9
+ ["test-require1.rb", ["enumerator.so", "require1.rb", "require2.rb"]]
10
+ ["require3.rb", ["enumerator.so", "require1.rb", "require2.rb"]]
11
+ true
12
+ false
13
+ ["test-require1.rb", ["enumerator.so", "require1.rb", "require2.rb", "require3.rb"]]
14
+ ["require4.rb", ["enumerator.so", "require1.rb", "require2.rb", "require3.rb"]]
15
+ true
16
+ false
17
+ ["test-require1.rb", ["enumerator.so", "require1.rb", "require2.rb", "require3.rb", "require4.rb"]]
18
+ ["require5.rb", ["enumerator.so", "require1.rb", "require2.rb", "require3.rb", "require4.rb"]]
19
+ true
20
+ false
21
+ false
22
+ ["test-require1.rb", ["enumerator.so", "require1.rb", "require2.rb", "require3.rb", "require4.rb", "require5.rb"]]
23
+ ["require6.rb", ["enumerator.so", "require1.rb", "require2.rb", "require3.rb", "require4.rb", "require5.rb"]]
24
+ true
25
+ false
26
+ false
27
+ ["test-require1.rb", ["enumerator.so", "require1.rb", "require2.rb", "require3.rb", "require4.rb", "require5.rb", "require6.rb"]]
@@ -0,0 +1,26 @@
1
+
2
+ #==============================================================================#
3
+ # $Id: test-socket.rb,v 1.1 2006/12/29 08:46:25 arton Exp $
4
+ #==============================================================================#
5
+
6
+ require 'testcase'
7
+
8
+ #==============================================================================#
9
+
10
+ class SocketTestCase < Minitest::Test
11
+ include ExerbTestCase
12
+
13
+ def name2
14
+ return 'test-socket'
15
+ end
16
+
17
+ def test_socket
18
+ ret1 = read_result(@name)
19
+ ret2 = execute_exe(@name)
20
+ assert_equal(ret1, ret2)
21
+ end
22
+
23
+ end # ArgvTestCase
24
+
25
+ #==============================================================================#
26
+ #==============================================================================#
@@ -0,0 +1,7 @@
1
+ #==============================================================================#
2
+ # $Id: test-socket.rb,v 1.1 2006/12/29 08:55:54 arton Exp $
3
+ #==============================================================================#
4
+ require 'socket'
5
+ #==============================================================================#
6
+
7
+ p(Socket::SOCK_STREAM)
@@ -0,0 +1,66 @@
1
+
2
+ #==============================================================================#
3
+ # $Id: testcase.rb,v 1.23 2008/06/13 23:53:34 arton Exp $
4
+ #==============================================================================#
5
+ gem 'minitest'
6
+ require 'minitest/autorun'
7
+
8
+ libpath = File.expand_path('../../lib', __FILE__)
9
+ unless $:.include?(libpath)
10
+ $:.unshift(libpath)
11
+ end
12
+
13
+ require 'exerb/recipe'
14
+ require 'exerb/executable'
15
+
16
+ #==============================================================================#
17
+
18
+ module ExerbTestCase
19
+
20
+ def setup
21
+ @name = self.name2
22
+ self.setup_exe
23
+ end
24
+
25
+ def setup_exe
26
+ create_exe(@name)
27
+ end
28
+
29
+ def name2
30
+ raise(NotImplementedError)
31
+ end
32
+
33
+ def create_exe(name, exename = name)
34
+ Dir.chdir(name) {
35
+ ver = RUBY_VERSION.gsub('.','')
36
+ corefile = File.expand_path("../../data/exerb/ruby#{ver}c.exc", __FILE__)
37
+ mkexy = File.expand_path('../../bin/mkexy', __FILE__)
38
+ `#{Gem.ruby} #{mkexy} --old "old_#{exename}.exy" -- -I. "#{exename}.rb"`
39
+ recipe = Exerb::Recipe.load("#{exename}.exy")
40
+ archive = recipe.create_archive()
41
+ executable = Exerb::Executable.read(corefile)
42
+ executable.rsrc.add_archive(archive)
43
+ executable.write("#{exename}.exe")
44
+ }
45
+ end
46
+
47
+ def execute_cmd(cmd)
48
+ return `#{cmd}`.gsub(/\r\n/, "\n")
49
+ end
50
+
51
+ def execute_exe(name, argv = '')
52
+ return execute_cmd("#{name}/#{name}.exe #{argv}")
53
+ end
54
+
55
+ def read_file(filepath)
56
+ return File.open(filepath) { |file| file.read }.gsub(/\r\n/) {"\n"}
57
+ end
58
+
59
+ def read_result(name)
60
+ return read_file("#{name}/#{name}.ret")
61
+ end
62
+
63
+ end # ExerbTestCase
64
+
65
+ #==============================================================================#
66
+ #==============================================================================#
@@ -0,0 +1,167 @@
1
+ $name = $library = $description = nil
2
+
3
+ class Exports
4
+ @@subclass = []
5
+ def self.inherited(klass)
6
+ @@subclass << [/#{klass.name.sub(/.*::/, '').downcase}/i, klass]
7
+ end
8
+
9
+ def self.create(*args, &block)
10
+ platform = RUBY_PLATFORM
11
+ pat, klass = @@subclass.find {|p, k| p =~ platform}
12
+ unless klass
13
+ raise ArgumentError, "unsupported platform: #{platform}"
14
+ end
15
+ klass.new(*args, &block)
16
+ end
17
+
18
+ def self.extract(objs, *rest)
19
+ create(objs).exports(*rest)
20
+ end
21
+
22
+ def self.output(output = $output, &block)
23
+ if output
24
+ open(output, 'wb', &block)
25
+ else
26
+ yield STDOUT
27
+ end
28
+ end
29
+
30
+ def initialize(objs)
31
+ syms = {}
32
+ winapis = {}
33
+ syms["ruby_sysinit_real"] = "ruby_sysinit"
34
+ each_export(objs) do |internal, export|
35
+ syms[internal] = export
36
+ winapis[$1] = internal if /^_?(rb_w32_\w+)(?:@\d+)?$/ =~ internal
37
+ end
38
+ # patch to use RbConfig information (rubyhdrdir)
39
+ incdir = File.join(RbConfig::CONFIG["rubyhdrdir"], "ruby")
40
+ read_substitution(incdir+"/win32.h", syms, winapis)
41
+ read_substitution(incdir+"/subst.h", syms, winapis)
42
+ syms["rb_w32_vsnprintf"] ||= "ruby_vsnprintf"
43
+ syms["rb_w32_snprintf"] ||= "ruby_snprintf"
44
+ @syms = syms
45
+ end
46
+
47
+ def read_substitution(header, syms, winapis)
48
+ IO.foreach(header) do |line|
49
+ if /^#define (\w+)\((.*?)\)\s+(?:\(void\))?(rb_w32_\w+)\((.*?)\)\s*$/ =~ line and
50
+ $2.delete(" ") == $4.delete(" ")
51
+ export, internal = $1, $3
52
+ if syms[internal] or internal = winapis[internal]
53
+ syms[forwarding(internal, export)] = internal
54
+ end
55
+ end
56
+ end
57
+ end
58
+
59
+ def exports(name = $name, library = $library, description = $description)
60
+ exports = []
61
+ if name
62
+ exports << "Name " + name
63
+ elsif library
64
+ exports << "Library " + library
65
+ end
66
+ exports << "Description " + description.dump if description
67
+ exports << "VERSION #{RbConfig::CONFIG['MAJOR']}.#{RbConfig::CONFIG['MINOR']}"
68
+ exports << "EXPORTS" << symbols()
69
+ exports
70
+ end
71
+
72
+ private
73
+ def forwarding(internal, export)
74
+ internal.sub(/^[^@]+/, "\\1#{export}")
75
+ end
76
+
77
+ def each_export(objs)
78
+ end
79
+
80
+ def objdump(objs, &block)
81
+ if objs.empty?
82
+ $stdin.each_line(&block)
83
+ else
84
+ each_line(objs, &block)
85
+ end
86
+ end
87
+
88
+ def symbols()
89
+ @syms.sort.collect {|k, v| v ? v == true ? "#{k} DATA" : "#{k}=#{v}" : k}
90
+ end
91
+ end
92
+
93
+ class Exports::Mswin < Exports
94
+ def each_line(objs, &block)
95
+ IO.popen(%w"dumpbin -symbols -exports" + objs) do |f|
96
+ f.each(&block)
97
+ end
98
+ end
99
+
100
+ def each_export(objs)
101
+ noprefix = ($arch ||= nil and /^(sh|i\d86)/ !~ $arch)
102
+ objs = objs.collect {|s| s.tr('/', '\\')}
103
+ filetype = nil
104
+ objdump(objs) do |l|
105
+ if (filetype = l[/^File Type: (.+)/, 1])..(/^\f/ =~ l)
106
+ case filetype
107
+ when /OBJECT/, /LIBRARY/
108
+ next if /^[[:xdigit:]]+ 0+ UNDEF / =~ l
109
+ next unless /External/ =~ l
110
+ next unless l.sub!(/.*?\s(\(\)\s+)?External\s+\|\s+/, '')
111
+ is_data = !$1
112
+ if noprefix or /^[@_]/ =~ l
113
+ next if /(?!^)@.*@/ =~ l || /@[[:xdigit:]]{8,16}$/ =~ l ||
114
+ /^_?(?:Init_|.*_threadptr_|DllMain\b)/ =~ l
115
+ l.sub!(/^[@_]/, '') if /@\d+$/ !~ l
116
+ elsif !l.sub!(/^(\S+) \([^@?\`\']*\)$/, '\1')
117
+ next
118
+ end
119
+ when /DLL/
120
+ next unless l.sub!(/^\s*\d+\s+[[:xdigit:]]+\s+[[:xdigit:]]+\s+/, '')
121
+ else
122
+ next
123
+ end
124
+ yield l.strip, is_data
125
+ end
126
+ end
127
+ yield "strcasecmp", "msvcrt.stricmp"
128
+ yield "strncasecmp", "msvcrt.strnicmp"
129
+ end
130
+ end
131
+
132
+ class Exports::Cygwin < Exports
133
+ def self.nm
134
+ @@nm ||= RbConfig::CONFIG["NM"]
135
+ end
136
+
137
+ def exports(*)
138
+ super()
139
+ end
140
+
141
+ def each_line(objs, &block)
142
+ IO.foreach("|#{self.class.nm} --extern --defined #{objs.join(' ')}", &block)
143
+ end
144
+
145
+ def each_export(objs)
146
+ symprefix = RbConfig::CONFIG["SYMBOL_PREFIX"]
147
+ symprefix.strip! if symprefix
148
+ re = /\s(?:(T)|[[:upper:]])\s#{symprefix}((?!Init_|.*_threadptr_|DllMain\b).*)$/
149
+ objdump(objs) do |l|
150
+ next if /@.*@/ =~ l
151
+ yield $2, !$1 if re =~ l
152
+ end
153
+ end
154
+ end
155
+
156
+ class Exports::Mingw < Exports::Cygwin
157
+ def each_export(objs)
158
+ super
159
+ yield "strcasecmp", "_stricmp"
160
+ yield "strncasecmp", "_strnicmp"
161
+ end
162
+ end
163
+
164
+ # END {
165
+ # exports = Exports.extract(ARGV)
166
+ # Exports.output {|f| f.puts(*exports)}
167
+ # }
metadata ADDED
@@ -0,0 +1,352 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: exerb
3
+ version: !ruby/object:Gem::Version
4
+ version: 6.0.1
5
+ platform: ruby
6
+ authors:
7
+ - windwiny
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-01-09 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.6'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.6'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.1'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">"
39
+ - !ruby/object:Gem::Version
40
+ version: '0.1'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake-compiler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">"
46
+ - !ruby/object:Gem::Version
47
+ version: '0.1'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">"
53
+ - !ruby/object:Gem::Version
54
+ version: '0.1'
55
+ description: Exerb support for mingw/rubyinstaller. Packaged ruby source files and
56
+ ruby extensions files into a single PE executable file.
57
+ email:
58
+ - windwiny.ubt@gmail.com
59
+ executables:
60
+ - exerb
61
+ - mkexy
62
+ extensions:
63
+ - extconf.rb
64
+ extra_rdoc_files: []
65
+ files:
66
+ - ".gitignore"
67
+ - ChangeLog.ja.rd
68
+ - README.en.txt
69
+ - README.ja.html
70
+ - README.ja.txt
71
+ - README.md
72
+ - Rakefile
73
+ - bin/exerb
74
+ - bin/mkexy
75
+ - doc/LGPL
76
+ - doc/class.ja.html
77
+ - doc/command.ja.html
78
+ - doc/core.ja.html
79
+ - doc/example.ja.html
80
+ - doc/faq.ja.html
81
+ - doc/inside.ja.rd
82
+ - doc/license.ja.html
83
+ - doc/logo.gif
84
+ - doc/misc.ja.html
85
+ - doc/navi.gif
86
+ - doc/recipe.ja.html
87
+ - doc/style.css
88
+ - doc/tutorial.ja.html
89
+ - example/Makefile
90
+ - example/cat_n.rb
91
+ - example/exception.rb
92
+ - example/ext/Win32API.so
93
+ - example/ext/swin.so
94
+ - example/msgbox.rb
95
+ - example/old_cat_n.exy
96
+ - example/old_exception.exy
97
+ - example/old_msgbox.exy
98
+ - example/old_rubytk.exy
99
+ - example/old_runtime.exy
100
+ - example/old_vruby.exy
101
+ - example/rubytk.rb
102
+ - example/runtime.ico
103
+ - example/runtime.rb
104
+ - example/vr/clipboard.rb
105
+ - example/vr/compat/rubycompat.rb
106
+ - example/vr/compat/vrcomctl.rb
107
+ - example/vr/compat/vrcontrol.rb
108
+ - example/vr/compat/vrmmedia.rb
109
+ - example/vr/contrib/inifile.rb
110
+ - example/vr/contrib/msgboxconst.rb
111
+ - example/vr/contrib/toolbar.rb
112
+ - example/vr/contrib/vrctlcolor.rb
113
+ - example/vr/contrib/vrhotkey.rb
114
+ - example/vr/contrib/vrlistviewex.rb
115
+ - example/vr/contrib/vrstdscrollbar.rb
116
+ - example/vr/contrib/vrwincomponent.rb
117
+ - example/vr/dragdropformat.rb
118
+ - example/vr/rscutil.rb
119
+ - example/vr/sysmod.rb
120
+ - example/vr/vractivex.rb
121
+ - example/vr/vrclipboard.rb
122
+ - example/vr/vrcomctl.rb
123
+ - example/vr/vrcontrol.rb
124
+ - example/vr/vrdde.rb
125
+ - example/vr/vrddrop.rb
126
+ - example/vr/vrdialog.rb
127
+ - example/vr/vrhandler.rb
128
+ - example/vr/vrlayout.old.rb
129
+ - example/vr/vrlayout.rb
130
+ - example/vr/vrlayout2.rb
131
+ - example/vr/vrmargin.rb
132
+ - example/vr/vrmgdlayout.rb
133
+ - example/vr/vrmmedia.rb
134
+ - example/vr/vrolednd.rb
135
+ - example/vr/vrowndraw.rb
136
+ - example/vr/vrrichedit.rb
137
+ - example/vr/vrtimer.rb
138
+ - example/vr/vrtooltip.rb
139
+ - example/vr/vrtray.rb
140
+ - example/vr/vrtvitem.rb
141
+ - example/vr/vrtwopane.rb
142
+ - example/vr/vruby.rb
143
+ - example/vr/winconst.rb
144
+ - example/vruby.rb
145
+ - exerb.gemspec
146
+ - extconf.rb
147
+ - lib/exerb/archive.rb
148
+ - lib/exerb/config.rb
149
+ - lib/exerb/error.rb
150
+ - lib/exerb/executable.rb
151
+ - lib/exerb/file_table.rb
152
+ - lib/exerb/mkexy.rb
153
+ - lib/exerb/name_table.rb
154
+ - lib/exerb/recipe.rb
155
+ - lib/exerb/resource.rb
156
+ - lib/exerb/resource/base.rb
157
+ - lib/exerb/resource/binary.rb
158
+ - lib/exerb/resource/dialog.rb
159
+ - lib/exerb/resource/group_icon.rb
160
+ - lib/exerb/resource/icon.rb
161
+ - lib/exerb/resource/version_info.rb
162
+ - lib/exerb/resource_library.rb
163
+ - lib/exerb/utility.rb
164
+ - lib/exerb/utility2.rb
165
+ - lib/exerb/version.rb
166
+ - lib/exerb/win32/const/resource.rb
167
+ - lib/exerb/win32/icon_file.rb
168
+ - lib/exerb/win32/pe_file.rb
169
+ - lib/exerb/win32/resource_directory.rb
170
+ - lib/exerb/win32/resource_directory_root.rb
171
+ - lib/exerb/win32/resource_entry.rb
172
+ - lib/exerb/win32/struct/base.rb
173
+ - lib/exerb/win32/struct/icon_dir_entry.rb
174
+ - lib/exerb/win32/struct/icon_header.rb
175
+ - lib/exerb/win32/struct/icon_res_entry.rb
176
+ - lib/exerb/win32/struct/image_dos_header.rb
177
+ - lib/exerb/win32/struct/image_file_header.rb
178
+ - lib/exerb/win32/struct/image_nt_headers32.rb
179
+ - lib/exerb/win32/struct/image_optional_header32.rb
180
+ - lib/exerb/win32/struct/image_resource_data_entry.rb
181
+ - lib/exerb/win32/struct/image_resource_directory.rb
182
+ - lib/exerb/win32/struct/image_resource_directory_entry.rb
183
+ - lib/exerb/win32/struct/image_section_header.rb
184
+ - lib/exerb/win32/struct/version_info_block.rb
185
+ - lib/exerb/win32/struct/vs_fixed_file_info.rb
186
+ - src/exerb/cui.c
187
+ - src/exerb/default.exa
188
+ - src/exerb/default.exy
189
+ - src/exerb/default.rb
190
+ - src/exerb/exerb.c
191
+ - src/exerb/exerb.h
192
+ - src/exerb/gui.c
193
+ - src/exerb/module.c
194
+ - src/exerb/module.h
195
+ - src/exerb/patch.c
196
+ - src/exerb/resource.h
197
+ - src/exerb/resource.rc
198
+ - src/exerb/ruby.ico
199
+ - src/exerb/utility.c
200
+ - src/exerb/utility.h
201
+ - test/alltests.rb
202
+ - test/test-argv.rb
203
+ - test/test-argv/old_test-argv.exy
204
+ - test/test-argv/test-argv.rb
205
+ - test/test-argv/test-argv.ret
206
+ - test/test-dollarzero.rb
207
+ - test/test-dollarzero/old_test-dollarzero.exy
208
+ - test/test-dollarzero/test-dollarzero.rb
209
+ - test/test-dollarzero/test-dollarzero.ret
210
+ - test/test-dot.rb
211
+ - test/test-dot/dot.dot.dot.rb
212
+ - test/test-dot/dot.dot.rb
213
+ - test/test-dot/old_test-dot.exy
214
+ - test/test-dot/test-dot.rb
215
+ - test/test-dot/test-dot.ret
216
+ - test/test-exitcode.rb
217
+ - test/test-exitcode/old_test-exitcode.exy
218
+ - test/test-exitcode/test-exitcode.rb
219
+ - test/test-kcode.rb
220
+ - test/test-kcode/euc.rb
221
+ - test/test-kcode/euc.ret
222
+ - test/test-kcode/none.rb
223
+ - test/test-kcode/none.ret
224
+ - test/test-kcode/old_euc.exy
225
+ - test/test-kcode/old_none.exy
226
+ - test/test-kcode/old_sjis.exy
227
+ - test/test-kcode/old_utf8.exy
228
+ - test/test-kcode/sjis.rb
229
+ - test/test-kcode/sjis.ret
230
+ - test/test-kcode/utf8.rb
231
+ - test/test-kcode/utf8.ret
232
+ - test/test-loadpath.rb
233
+ - test/test-loadpath/old_test-loadpath.exy
234
+ - test/test-loadpath/test-loadpath.rb
235
+ - test/test-nest.rb
236
+ - test/test-nest/foo.rb
237
+ - test/test-nest/foo/bar.rb
238
+ - test/test-nest/foo/foo.rb
239
+ - test/test-nest/old_test-nest.exy
240
+ - test/test-nest/test-nest.rb
241
+ - test/test-nest/test-nest.ret
242
+ - test/test-preload.rb
243
+ - test/test-preload/old_test-preload.exy
244
+ - test/test-preload/test-preload.rb
245
+ - test/test-regexp.rb
246
+ - test/test-regexp/old_test-regexp.exy
247
+ - test/test-regexp/test-regexp.rb
248
+ - test/test-regexp/test-regexp.ret
249
+ - test/test-require1.rb
250
+ - test/test-require1/old_test-require1.exy
251
+ - test/test-require1/require1.rb
252
+ - test/test-require1/require2.rb
253
+ - test/test-require1/require3.rb
254
+ - test/test-require1/require4.rb
255
+ - test/test-require1/require5.rb
256
+ - test/test-require1/require6.rb
257
+ - test/test-require1/test-require1.rb
258
+ - test/test-require1/test-require1.ret
259
+ - test/test-socket.rb
260
+ - test/test-socket/old_test-socket.exy
261
+ - test/test-socket/test-socket.rb
262
+ - test/test-socket/test-socket.ret
263
+ - test/testcase.rb
264
+ - vendor/mkexports.rb
265
+ homepage: https://github.com/windwiny/exerb-mingw
266
+ licenses:
267
+ - MIT
268
+ metadata: {}
269
+ post_install_message:
270
+ rdoc_options: []
271
+ require_paths:
272
+ - lib
273
+ required_ruby_version: !ruby/object:Gem::Requirement
274
+ requirements:
275
+ - - ">="
276
+ - !ruby/object:Gem::Version
277
+ version: '0'
278
+ required_rubygems_version: !ruby/object:Gem::Requirement
279
+ requirements:
280
+ - - ">="
281
+ - !ruby/object:Gem::Version
282
+ version: '0'
283
+ requirements: []
284
+ rubyforge_project:
285
+ rubygems_version: 2.6.8
286
+ signing_key:
287
+ specification_version: 4
288
+ summary: Packaged *.rb *.so *.dll into alone.exe file.
289
+ test_files:
290
+ - test/alltests.rb
291
+ - test/test-argv.rb
292
+ - test/test-argv/old_test-argv.exy
293
+ - test/test-argv/test-argv.rb
294
+ - test/test-argv/test-argv.ret
295
+ - test/test-dollarzero.rb
296
+ - test/test-dollarzero/old_test-dollarzero.exy
297
+ - test/test-dollarzero/test-dollarzero.rb
298
+ - test/test-dollarzero/test-dollarzero.ret
299
+ - test/test-dot.rb
300
+ - test/test-dot/dot.dot.dot.rb
301
+ - test/test-dot/dot.dot.rb
302
+ - test/test-dot/old_test-dot.exy
303
+ - test/test-dot/test-dot.rb
304
+ - test/test-dot/test-dot.ret
305
+ - test/test-exitcode.rb
306
+ - test/test-exitcode/old_test-exitcode.exy
307
+ - test/test-exitcode/test-exitcode.rb
308
+ - test/test-kcode.rb
309
+ - test/test-kcode/euc.rb
310
+ - test/test-kcode/euc.ret
311
+ - test/test-kcode/none.rb
312
+ - test/test-kcode/none.ret
313
+ - test/test-kcode/old_euc.exy
314
+ - test/test-kcode/old_none.exy
315
+ - test/test-kcode/old_sjis.exy
316
+ - test/test-kcode/old_utf8.exy
317
+ - test/test-kcode/sjis.rb
318
+ - test/test-kcode/sjis.ret
319
+ - test/test-kcode/utf8.rb
320
+ - test/test-kcode/utf8.ret
321
+ - test/test-loadpath.rb
322
+ - test/test-loadpath/old_test-loadpath.exy
323
+ - test/test-loadpath/test-loadpath.rb
324
+ - test/test-nest.rb
325
+ - test/test-nest/foo.rb
326
+ - test/test-nest/foo/bar.rb
327
+ - test/test-nest/foo/foo.rb
328
+ - test/test-nest/old_test-nest.exy
329
+ - test/test-nest/test-nest.rb
330
+ - test/test-nest/test-nest.ret
331
+ - test/test-preload.rb
332
+ - test/test-preload/old_test-preload.exy
333
+ - test/test-preload/test-preload.rb
334
+ - test/test-regexp.rb
335
+ - test/test-regexp/old_test-regexp.exy
336
+ - test/test-regexp/test-regexp.rb
337
+ - test/test-regexp/test-regexp.ret
338
+ - test/test-require1.rb
339
+ - test/test-require1/old_test-require1.exy
340
+ - test/test-require1/require1.rb
341
+ - test/test-require1/require2.rb
342
+ - test/test-require1/require3.rb
343
+ - test/test-require1/require4.rb
344
+ - test/test-require1/require5.rb
345
+ - test/test-require1/require6.rb
346
+ - test/test-require1/test-require1.rb
347
+ - test/test-require1/test-require1.ret
348
+ - test/test-socket.rb
349
+ - test/test-socket/old_test-socket.exy
350
+ - test/test-socket/test-socket.rb
351
+ - test/test-socket/test-socket.ret
352
+ - test/testcase.rb