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,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
+ #==============================================================================#