exerb 6.0.1

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.
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,121 @@
1
+ // $Id: resource.rc,v 1.3 2007/02/26 08:22:40 yuya Exp $
2
+
3
+ #include "resource.h"
4
+ #include "winresrc.h"
5
+
6
+ ////////////////////////////////////////////////////////////////////////////////
7
+
8
+ #if defined(CUI) || defined(GUI) || defined(RUNTIME)
9
+
10
+ LANGUAGE LANG_NEUTRAL, SUBLANG_DEFAULT
11
+
12
+ VS_VERSION_INFO VERSIONINFO
13
+ FILEVERSION EXERB_RES_EXERB_VERSION1
14
+ PRODUCTVERSION EXERB_RES_EXERB_VERSION1
15
+ FILEFLAGSMASK 0x3fL
16
+ #if defined(_DEBUG)
17
+ FILEFLAGS 0x1L
18
+ #else
19
+ FILEFLAGS 0x0L
20
+ #endif
21
+ FILEOS 0x40004L
22
+ #if defined(RUNTIME)
23
+ FILETYPE 0x2L
24
+ #else
25
+ FILETYPE 0x1L
26
+ #endif
27
+ FILESUBTYPE 0x0L
28
+ BEGIN
29
+ BLOCK "StringFileInfo"
30
+ BEGIN
31
+ BLOCK "000004b0"
32
+ BEGIN
33
+ VALUE "Comments", "Generated by Exerb\0"
34
+ VALUE "CompanyName", "Exerb Project\0"
35
+ VALUE "LegalCopyright", "Copyright(C) Exerb Project, 2001-2006,2014 All rights reserved.\0"
36
+ VALUE "LegalTrademarks", "\0"
37
+ VALUE "FileVersion", EXERB_RES_EXERB_VERSION2 "\0"
38
+ VALUE "ProductVersion", EXERB_RES_EXERB_VERSION2 "\0"
39
+ VALUE "ProductName", "Exerb\0"
40
+ VALUE "FileDescription", "Exerb\0"
41
+ VALUE "InternalName", "exerb\0"
42
+ VALUE "OriginalFilename", "exerb.exe\0"
43
+ VALUE "PrivateBuild", "\0"
44
+ VALUE "SpecialBuild", "\0"
45
+ END
46
+ END
47
+ BLOCK "VarFileInfo"
48
+ BEGIN
49
+ VALUE "Translation", 0x0000, 0x04b0
50
+ END
51
+ END
52
+
53
+ #endif
54
+
55
+ ////////////////////////////////////////////////////////////////////////////////
56
+
57
+ #if defined(GUI)
58
+
59
+ LANGUAGE LANG_NEUTRAL, SUBLANG_DEFAULT
60
+
61
+ IDI_RUBY ICON DISCARDABLE "ruby.ico"
62
+
63
+ #endif
64
+
65
+ ////////////////////////////////////////////////////////////////////////////////
66
+
67
+ #if defined(GUI)
68
+
69
+ LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT
70
+
71
+ IDD_EXCEPTION DIALOG DISCARDABLE 0, 0, 267, 215
72
+ STYLE DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
73
+ CAPTION "Exception - %s"
74
+ FONT 9, "MS UI Gothic"
75
+ BEGIN
76
+ DEFPUSHBUTTON "&Close",ID_CLOSE,212,5,50,14
77
+ ICON IDI_ERROR,IDC_STATIC,5,5,20,20
78
+ LTEXT "The exception was raised in the program.\nDetails are as follows.",IDC_STATIC,33,8,171,20
79
+ LTEXT "&Type",IDC_STATIC,5,42,95,8
80
+ EDITTEXT IDC_EDIT_TYPE,5,52,257,12,ES_AUTOHSCROLL | ES_READONLY
81
+ LTEXT "&Message",IDC_STATIC,5,70,95,8
82
+ EDITTEXT IDC_EDIT_MESSAGE,5,80,257,48,ES_MULTILINE | ES_READONLY | WS_VSCROLL | WS_HSCROLL
83
+ LTEXT "&BackTrace",IDC_STATIC,5,134,77,8
84
+ EDITTEXT IDC_EDIT_BACKTRACE,5,144,257,65,ES_MULTILINE | ES_READONLY | WS_VSCROLL | WS_HSCROLL
85
+ END
86
+
87
+ LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT
88
+
89
+ IDD_EXCEPTION DIALOG DISCARDABLE 0, 0, 267, 215
90
+ STYLE DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
91
+ CAPTION "��O - %s"
92
+ FONT 9, "�l�r �o�S�V�b�N"
93
+ BEGIN
94
+ DEFPUSHBUTTON "�‚���(&C)",ID_CLOSE,212,5,50,14
95
+ ICON IDI_ERROR,IDC_STATIC,5,5,20,20
96
+ LTEXT "�v���O�����ŗ�O���������܂����B\n�ڍׂ͉��L�̒ʂ�ł��B",IDC_STATIC,33,8,171,20
97
+ LTEXT "�^�C�v(&T)",IDC_STATIC,5,42,95,8
98
+ EDITTEXT IDC_EDIT_TYPE,5,52,257,12,ES_AUTOHSCROLL | ES_READONLY
99
+ LTEXT "���b�Z�[�W(&M)",IDC_STATIC,5,70,95,8
100
+ EDITTEXT IDC_EDIT_MESSAGE,5,80,257,48,ES_MULTILINE | ES_READONLY | WS_VSCROLL | WS_HSCROLL
101
+ LTEXT "�o�b�N�g���[�X(&B)",IDC_STATIC,5,134,77,8
102
+ EDITTEXT IDC_EDIT_BACKTRACE,5,144,257,65,ES_MULTILINE | ES_READONLY | WS_VSCROLL | WS_HSCROLL
103
+ END
104
+
105
+ #endif
106
+
107
+ ////////////////////////////////////////////////////////////////////////////////
108
+
109
+ #if defined(CUI) || defined(GUI)
110
+
111
+ LANGUAGE LANG_NEUTRAL, SUBLANG_DEFAULT
112
+
113
+ #if defined(_DEBUG)
114
+ ID_EXERB RT_EXERB DISCARDABLE "debug.exa"
115
+ #else
116
+ ID_EXERB RT_EXERB DISCARDABLE "default.exa"
117
+ #endif
118
+
119
+ #endif
120
+
121
+ ////////////////////////////////////////////////////////////////////////////////
Binary file
@@ -0,0 +1,263 @@
1
+ // $Id: utility.cpp,v 1.20 2006/05/09 01:10:49 yuya Exp $
2
+
3
+ #include <ruby.h>
4
+ #include <windows.h>
5
+ #include "exerb.h"
6
+ #include "utility.h"
7
+
8
+ ////////////////////////////////////////////////////////////////////////////////
9
+
10
+ extern VALUE rb_eExerbRuntimeError;
11
+
12
+ extern NAME_TABLE_HEADER *g_name_table_header;
13
+ extern FILE_TABLE_HEADER *g_file_table_header;
14
+
15
+ ////////////////////////////////////////////////////////////////////////////////
16
+
17
+ char*
18
+ exerb_strdup(const char* str)
19
+ {
20
+ if ( str == NULL ) return NULL;
21
+
22
+ char *newstr = malloc(strlen(str) + 1);
23
+ strcpy(newstr, str);
24
+
25
+ return newstr;
26
+ }
27
+
28
+ HANDLE
29
+ exerb_fopen_for_read(const char *filepath)
30
+ {
31
+ HANDLE file = CreateFile(filepath, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
32
+ if ( file == INVALID_HANDLE_VALUE ) exerb_raise_runtime_error(GetLastError());
33
+
34
+ return file;
35
+ }
36
+
37
+ HANDLE
38
+ exerb_fopen_for_write(const char *filepath)
39
+ {
40
+ HANDLE file = CreateFile(filepath, GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
41
+ if ( file == INVALID_HANDLE_VALUE ) exerb_raise_runtime_error(GetLastError());
42
+
43
+ return file;
44
+ }
45
+
46
+ BOOL
47
+ exerb_fclose(const HANDLE file)
48
+ {
49
+ BOOL ret = CloseHandle(file);
50
+ if ( !ret ) exerb_raise_runtime_error(GetLastError());
51
+
52
+ return ret;
53
+ }
54
+
55
+ DWORD
56
+ exerb_fseek(const HANDLE file, const LONG pos, const DWORD method)
57
+ {
58
+ DWORD ret = SetFilePointer(file, pos, NULL, method);
59
+ //if ( ret == INVALID_SET_FILE_POINTER ) exerb_raise_runtime_error(GetLastError())
60
+
61
+ return ret;
62
+ }
63
+
64
+ DWORD
65
+ exerb_fread(const HANDLE file, void *buffer, const int size)
66
+ {
67
+ DWORD read_size = 0;
68
+ BOOL ret = ReadFile(file, buffer, size, &read_size, NULL);
69
+ if ( !ret ) {
70
+ DWORD error = GetLastError();
71
+ CloseHandle(file);
72
+ exerb_raise_runtime_error(error);
73
+ }
74
+
75
+ return read_size;
76
+ }
77
+
78
+ DWORD
79
+ exerb_fwrite(const HANDLE file, const void *buffer, const int size)
80
+ {
81
+ DWORD written = 0;
82
+ BOOL ret = WriteFile(file, buffer, size, &written, NULL);
83
+ if ( !ret ) {
84
+ DWORD error = GetLastError();
85
+ CloseHandle(file);
86
+ exerb_raise_runtime_error(error);
87
+ }
88
+
89
+ return written;
90
+ }
91
+
92
+ DWORD
93
+ exerb_fsize(const HANDLE file)
94
+ {
95
+ DWORD size = GetFileSize(file, NULL);
96
+ if ( size == (DWORD)-1 ) {
97
+ DWORD error = GetLastError();
98
+ CloseHandle(file);
99
+ exerb_raise_runtime_error(error);
100
+ }
101
+
102
+ return size;
103
+ }
104
+
105
+ const char*
106
+ exerb_get_module_filepath(const HMODULE handle, char *filepath, int size)
107
+ {
108
+ const DWORD ret = GetModuleFileName(handle, filepath, size);
109
+ if ( !ret ) exerb_raise_runtime_error(GetLastError());
110
+
111
+ return exerb_get_filename(filepath);
112
+ }
113
+
114
+ const char*
115
+ exerb_get_self_filepath(char *filepath, const int size)
116
+ {
117
+ return exerb_get_module_filepath(NULL, filepath, size);
118
+ }
119
+
120
+ const char*
121
+ exerb_get_filename(const char *filepath)
122
+ {
123
+ char *filename = NULL;
124
+ if ( filename = strrchr(filepath, '\\') ) return filename + 1;
125
+ if ( filename = strrchr(filepath, '/') ) return filename + 1;
126
+
127
+ return filepath;
128
+ }
129
+
130
+ int
131
+ exerb_cmp_filename_with_ext(const char *name1, const char *name2, const char *ext)
132
+ {
133
+ const int name2len = strlen(name2);
134
+ return (strnicmp(name1, name2, name2len) == 0 && name1[name2len] == '.' && stricmp(name1 + name2len + 1, ext) == 0);
135
+ }
136
+
137
+ void
138
+ exerb_create_tmpfile(const char *prefix, char *filepath, const void *buffer, const int size)
139
+ {
140
+ char tmp_dirpath[MAX_PATH] = "";
141
+ GetTempPath(sizeof(tmp_dirpath), tmp_dirpath);
142
+ GetTempFileName(tmp_dirpath, prefix, 0, filepath);
143
+
144
+ HANDLE file = exerb_fopen_for_write(filepath);
145
+ exerb_fwrite(file, buffer, size);
146
+ exerb_fclose(file);
147
+ }
148
+
149
+ void
150
+ exerb_raise_runtime_error(const DWORD error_no)
151
+ {
152
+ char message0[1024] = "";
153
+ char message1[1024 + 128] = "";
154
+ FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, error_no, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), message0, sizeof(message0), NULL);
155
+ _snprintf(message1, sizeof(message1), "Win32API Error #%i --- %s", error_no, message0);
156
+ rb_raise(rb_eExerbRuntimeError, message1);
157
+ }
158
+
159
+ NAME_ENTRY_HEADER*
160
+ exerb_get_first_name_entry()
161
+ {
162
+ return (NAME_ENTRY_HEADER*)((DWORD)g_name_table_header + g_name_table_header->offset_of_headers);
163
+ }
164
+
165
+ FILE_ENTRY_HEADER*
166
+ exerb_get_first_file_entry()
167
+ {
168
+ return (FILE_ENTRY_HEADER*)((DWORD)g_file_table_header + g_file_table_header->offset_of_headers);
169
+ }
170
+
171
+ char*
172
+ exerb_get_name_from_entry(const NAME_ENTRY_HEADER *name_entry)
173
+ {
174
+ return (char*)((DWORD)g_name_table_header + g_name_table_header->offset_of_pool + name_entry->offset_of_name);
175
+ }
176
+
177
+ char*
178
+ exerb_get_file_from_entry1(const FILE_ENTRY_HEADER *file_entry)
179
+ {
180
+ return (char*)((DWORD)g_file_table_header + g_file_table_header->offset_of_pool + file_entry->offset_of_file);
181
+ }
182
+
183
+ VALUE
184
+ exerb_get_file_from_entry2(const FILE_ENTRY_HEADER *file_entry)
185
+ {
186
+ const VALUE code = rb_str_new(exerb_get_file_from_entry1(file_entry), file_entry->size_of_file);
187
+ if (file_entry->zipd)
188
+ {
189
+ VALUE code2;
190
+ rb_require("zlib");
191
+ code2 = rb_funcall(rb_const_get(rb_cObject, rb_intern("Zlib")), rb_intern("inflate"), 1, code);
192
+ return code2;
193
+ } else {
194
+ return code;
195
+ }
196
+ }
197
+
198
+ NAME_ENTRY_HEADER*
199
+ exerb_find_name_entry(const WORD id)
200
+ {
201
+ NAME_ENTRY_HEADER *name_entry = exerb_get_first_name_entry();
202
+
203
+ for ( int i = 0; i < g_name_table_header->number_of_headers; i++, name_entry++ ) {
204
+ if ( name_entry->id == id ) {
205
+ return name_entry;
206
+ }
207
+ }
208
+
209
+ rb_raise(rb_eExerbRuntimeError, "Couldn't find a name entry --- %i", id);
210
+
211
+ return NULL;
212
+ }
213
+
214
+ NAME_ENTRY_HEADER*
215
+ exerb_find_name_entry_by_filename(const char *filename, const char *ext)
216
+ {
217
+ {
218
+ NAME_ENTRY_HEADER *name_entry = exerb_get_first_name_entry();
219
+
220
+ for ( int i = 0; i < g_name_table_header->number_of_headers; i++, name_entry++ ) {
221
+ if ( stricmp(exerb_get_name_from_entry(name_entry), filename) == 0 ) {
222
+ return name_entry;
223
+ }
224
+ }
225
+ }
226
+
227
+ if ( ext ) {
228
+ NAME_ENTRY_HEADER *name_entry = exerb_get_first_name_entry();
229
+
230
+ for ( int i = 0; i < g_name_table_header->number_of_headers; i++, name_entry++ ) {
231
+ if ( exerb_cmp_filename_with_ext(exerb_get_name_from_entry(name_entry), filename, ext) ) {
232
+ return name_entry;
233
+ }
234
+ }
235
+ }
236
+
237
+ return NULL;
238
+ }
239
+
240
+ FILE_ENTRY_HEADER*
241
+ exerb_find_file_entry(const WORD id)
242
+ {
243
+ FILE_ENTRY_HEADER *file_entry = exerb_get_first_file_entry();
244
+
245
+ for ( int i = 0; i < g_file_table_header->number_of_headers; i++, file_entry++ ) {
246
+ if ( file_entry->id == id ) {
247
+ return file_entry;
248
+ }
249
+ }
250
+
251
+ rb_raise(rb_eExerbRuntimeError, "Couldn't find a file entry --- %i", id);
252
+
253
+ return NULL;
254
+ }
255
+
256
+ FILE_ENTRY_HEADER*
257
+ exerb_find_file_entry_by_filename(const char *filename, const char *ext)
258
+ {
259
+ NAME_ENTRY_HEADER *name_entry = exerb_find_name_entry_by_filename(filename, ext);
260
+ return (name_entry ? exerb_find_file_entry(name_entry->id) : NULL);
261
+ }
262
+
263
+ ////////////////////////////////////////////////////////////////////////////////
@@ -0,0 +1,33 @@
1
+ // $Id: utility.h,v 1.13 2005/04/17 11:50:55 yuya Exp $
2
+
3
+ #ifndef UTILITY_H
4
+ #define UTILITY_H 1
5
+
6
+ #include <windows.h>
7
+
8
+ char* exerb_strdup(const char* str);
9
+ HANDLE exerb_fopen_for_read(const char *filepath);
10
+ HANDLE exerb_fopen_for_write(const char *filepath);
11
+ BOOL exerb_fclose(const HANDLE file);
12
+ DWORD exerb_fseek(const HANDLE file, const LONG pos, const DWORD method);
13
+ DWORD exerb_fread(const HANDLE file, void *buffer, const int size);
14
+ /* char* exerb_fread(const HANDLE file); */
15
+ DWORD exerb_fwrite(const HANDLE file, const void *buffer, const int size);
16
+ DWORD exerb_fsize(const HANDLE file);
17
+ const char* exerb_get_module_filepath(const HMODULE handle, char *filepath, const int size);
18
+ const char* exerb_get_self_filepath(char *filepath, const int size);
19
+ const char* exerb_get_filename(const char *filepath);
20
+ int exerb_cmp_filename_with_ext(const char *name1, const char *name2, const char *ext);
21
+ void exerb_create_tmpfile(const char *prefix, char *filepath, const void *buffer, const int size);
22
+ void exerb_raise_runtime_error(const DWORD error_no);
23
+ NAME_ENTRY_HEADER* exerb_get_first_name_entry();
24
+ FILE_ENTRY_HEADER* exerb_get_first_file_entry();
25
+ char* exerb_get_name_from_entry(const NAME_ENTRY_HEADER *name_entry);
26
+ char* exerb_get_file_from_entry1(const FILE_ENTRY_HEADER *file_entry);
27
+ VALUE exerb_get_file_from_entry2(const FILE_ENTRY_HEADER *file_entry);
28
+ NAME_ENTRY_HEADER* exerb_find_name_entry(const WORD id);
29
+ NAME_ENTRY_HEADER* exerb_find_name_entry_by_filename(const char *filename, const char *ext);
30
+ FILE_ENTRY_HEADER* exerb_find_file_entry(const WORD id);
31
+ FILE_ENTRY_HEADER* exerb_find_file_entry_by_filename(const char *filename, const char *ext);
32
+
33
+ #endif /* UTILITY_H */
@@ -0,0 +1,16 @@
1
+ #! /usr/local/bin/ruby
2
+
3
+ #==============================================================================#
4
+ # $Id: alltests.rb,v 1.4 2003/11/29 08:39:56 yuya Exp $
5
+ #==============================================================================#
6
+
7
+ #==============================================================================#
8
+
9
+ Dir.glob('test-*.rb').each { |file|
10
+ pad = '#' * (38-file.size/2)
11
+ puts "\n\n\n#{pad} #{file} #{pad}"
12
+ system "#{Gem.ruby} -I. \"#{file}\" "
13
+ }
14
+
15
+ #==============================================================================#
16
+ #==============================================================================#
@@ -0,0 +1,26 @@
1
+
2
+ #==============================================================================#
3
+ # $Id: test-argv.rb,v 1.5 2005/04/15 09:42:52 yuya Exp $
4
+ #==============================================================================#
5
+
6
+ require 'testcase'
7
+
8
+ #==============================================================================#
9
+
10
+ class ArgvTestCase < Minitest::Test
11
+ include ExerbTestCase
12
+
13
+ def name2
14
+ return 'test-argv'
15
+ end
16
+
17
+ def test_argv
18
+ ret1 = read_result(@name)
19
+ ret2 = execute_exe(@name, 'a b c d e')
20
+ assert_equal(ret1, ret2)
21
+ end
22
+
23
+ end # ArgvTestCase
24
+
25
+ #==============================================================================#
26
+ #==============================================================================#