[#12340] CGI#out — Shugo Maeda <shugo@...>
前田です。
[#12354] re: higher-resolution Time for Win32 — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[#12364] Dir::fnmatch? — "Akinori MUSHA" <knu@...>
[ruby-dev:12229] の、 Dir::fnmatch? の追加には特に問題や反対
まつもと ゆきひろです
[#12385] Re: NaN, Infinity (Bug?) — WATANABE Hirofumi <eban@...>
わたなべです。
[#12387] reducing logical operation — "Nobuyoshi.Nakada" <nobu.nakada@...>
なかだです。
えぐち@エスアンドイー です。
なかだです。
えぐち@エスアンドイー です。
なかだです。
えぐち@エスアンドイー です。
木山です.
[#12404] fork in threads — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
なひです。
[#12405] at_exit — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
[#12415] — Koji Arai <JCA02266@...>
新井です。
[#12425] bignum % の結果が負数になることがある — Hisayasu Nakao <h-nakao@...>
最近、ruby-1.6.2を使い出したばかりの中尾です。
わたなべです。
In message <4518-Mon12Mar2001145434+0900-eban@os.rim.or.jp>
まつもと ゆきひろです
In message <984469222.234203.1007.nullmailer@ev.netlab.zetabits.com>
なかだです。
In message <200103131446.XAA22520@sharui.nakada.kanuma.tochigi.jp>
まつもと ゆきひろです
In message <984550885.417146.3670.nullmailer@ev.netlab.zetabits.com>
まつもと ゆきひろです
In message <984553493.009507.3747.nullmailer@ev.netlab.zetabits.com>
まつもと ゆきひろです
In message <984579430.080967.5569.nullmailer@ev.netlab.zetabits.com>
まつもと ゆきひろです
[#12483] sort! of empty array — Shin-ichiro HARA <sinara@...>
原です。
まつもと ゆきひろです
なひです。
[#12492] compile error on mswin32 — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
まつもと ゆきひろです
[#12513] SOLIBS — "Akinori MUSHA" <knu@...>
configure.in に以下のような修正を加えたいと思っています。
In message <86itlbdv32.wl@archon.local.idaemons.org>
[#12535] シンボリックリンクを含むパスを渡した時の Dir.glob() の動作 — tachino Nobuhiro <tachino@...>
[#12537] re-initialize ARGF — Masaki Suketa <masaki.suketa@...>
助田です。
[#12541] Thread.kill — Masatoshi SEKI <m_seki@...>
[#12570] compile error on ews48 — Koji Arai <JCA02266@...>
新井です。
[#12578] require 'win32api' — Kazuhiro NISHIYAMA <zn@...>
require 'win32api'のエラーメッセージがわかりにくいと
なかだです。
なかだです。
In <200103211407.XAA03408@sharui.nakada.kanuma.tochigi.jp>
なかだです。
In <200103220905.SAA01745@m3.gw.fujitsu.co.jp>
artonです。
[#12582] finalizer problem — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
けいじゅ@日本ラショナルソフトウェアです.
[#12605] extern inline (ruby.h) ruby-1.6.3 — WATANABE Tetsuya <tetsu@...>
渡辺哲也です。
まつもと ゆきひろです
渡辺哲也です。
まつもと ゆきひろです
まつもと ゆきひろです
新井です。
[#12621] Marshal bug still remains — "Akinori MUSHA" <knu@...>
Marshal にまだバグが残っています。最新安定版で:
[#12623] [req] Symbol#intern — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
[#12672] segv on Continuation#call on C_ALLOCA system — Koji Arai <JCA02266@...>
新井です。
[#12674] Was: [rubyist:0454] Re: to_str — Kenichi Komiya <kom@...1.accsnet.ne.jp>
まつもと ゆきひろです
まつもと ゆきひろです
まつもと ゆきひろです
なかだです。
なかだです。
新井です。
なかだです。
まつもと ゆきひろです
[#12693] Re: [ruby-cvs] ruby/lib: * ext/extmk.rb.in, lib/mkmf.rb: move C++ rules to the right place. — "Nobuyoshi.Nakada" <nobu.nakada@...>
なかだです。
At Wed, 28 Mar 2001 21:08:14 +0900,
[#12699] cross compile mingw-ruby on cygwin — Koji Arai <JCA02266@...>
新井です。
[ruby-dev:12642] Re: require 'win32api'
なかだです。
At Fri, 23 Mar 2001 07:56:04 +0900,
Nobuyoshi-Nakada wrote:
> あ、やっぱり。うーん、そのImageHelpというのをダイナミックにロー
> ドして、という手はありますが、なんかそこまでする気力がなぁ。Win
> では文字ケースが違ってる可能性を警告するくらいしかないかな。
つー感じでやってみました。かなり強引に。時間がなくてまだ試し
てませんが。
ところで、MSDN online で検索すると SymEnumerateSymbols()って
Debug Help とか書いてあるんですが、これは古い仕様なんでしょうか。
VC 6.0 の方にも imagehlp.h というのはあっても Debug なんとかと
いうヘッダはないし。
Index: dln.c
===================================================================
RCS file: /cvs/ruby/src/ruby/dln.c,v
retrieving revision 1.20
diff -u -2 -p -r1.20 dln.c
--- dln.c 2001/03/13 05:45:08 1.20
+++ dln.c 2001/03/23 12:30:30
@@ -86,6 +86,12 @@ int eaccess();
# if defined(__hp9000s300) || (defined(__NetBSD__) && !defined(__ELF__)) || defined(__BORLANDC__) || (defined(__FreeBSD__) && __FreeBSD__ < 3) || defined(__OpenBSD__) || defined(NeXT) || defined(__WATCOMC__) || defined(__APPLE__)
# define FUNCNAME_PATTERN "_Init_%s"
+# define FUNCNAME_FEATURE(n) ((n) + 6)
+# define FUNCNAME_MATCH(n1, n2) (strncmp((n1), (n2), 6) == 0 && \
+ strcasecmp(FUNCNAME_FEATURE(n1), FUNCNAME_FEATURE(n2)) == 0)
# else
# define FUNCNAME_PATTERN "Init_%s"
+# define FUNCNAME_FEATURE(n) ((n) + 5)
+# define FUNCNAME_MATCH(n1, n2) (strncmp((n1), (n2), 5) == 0 && \
+ strcasecmp(FUNCNAME_FEATURE(n1), FUNCNAME_FEATURE(n2)) == 0)
# endif
#endif
@@ -1114,4 +1120,78 @@ dln_sym(name)
#if defined _WIN32 && !defined __CYGWIN__
#include <windows.h>
+
+typedef BOOL (__stdcall *initialize_t)(HANDLE, const char*, BOOL);
+typedef BOOL (__stdcall *loadmodule_t)(HANDLE, HANDLE, const char *, const char *, DWORD, DWORD);
+typedef BOOL (__stdcall *unloadmodule_t)(HANDLE, DWORD);
+typedef BOOL (__stdcall *enumsyms_t)(HANDLE, DWORD, BOOL (CALLBACK *)(const char*, ULONG, ULONG, void*), void*);
+
+struct search_entry {
+ const char* sym;
+ char *name;
+ FARPROC addr;
+};
+
+static BOOL CALLBACK
+symbols_i(const char *name, ULONG addr, ULONG size, void* arg)
+{
+ struct search_entry *const ent = arg;
+ if (FUNCNAME_MATCH(name, ent->sym)) {
+ ent->addr = (FARPROC)addr;
+ strcpy(ent->name, name);
+ return FALSE;
+ }
+ return TRUE;
+}
+
+static FARPROC
+search_insensitively(const char *path, const char *sym, char *name)
+{
+ static HANDLE imagehlp;
+ static loadmodule_t loadmodule;
+ static unloadmodule_t unloadmodule;
+ static enumsyms_t enumsyms;
+ DWORD base;
+ struct search_entry ent;
+
+ if (!imagehlp) {
+ initialize_t initialize;
+
+ if (!(imagehlp = LoadLibraryExA("imagehlp.dll", NULL, LOAD_WITH_ALTERED_SEARCH_PATH)) ||
+ !(initialize = (initialize_t)GetProcAddress(imagehlp, "SymInitialize")) ||
+ !(loadmodule = (loadmodule_t)GetProcAddress(imagehlp, "SymLoadModule")) ||
+ !(unloadmodule = (unloadmodule_t)GetProcAddress(imagehlp, "SymUnloadModule")) ||
+ !(enumsyms = (enumsyms_t)GetProcAddress(imagehlp, "SymEnumerateSymbols")))
+ {
+ errno = GetLastError();
+ rb_warning("can't load image help library - %s", strerror(errno));
+ return NULL;
+ }
+
+ if (!(*initialize)(0, NULL, FALSE)) {
+ errno = GetLastError();
+ rb_warning("SymInitialize - %s", strerror(errno));
+ return NULL;
+ }
+ }
+
+ if (!(base = (*loadmodule)(0, 0, path, 0, 0, 0))) {
+ errno = GetLastError();
+ rb_warning("SymLoadModule(%s) - %s", path, strerror(errno));
+ return NULL;
+ }
+
+ ent.addr = 0;
+ ent.sym = sym;
+ ent.name = name;
+ if (!(*enumsyms)(0, base, symbols_i, &ent)) {
+ errno = GetLastError();
+ rb_warning("SymEnumerateSymbols(%s:%s) - %s", path, sym, strerror(errno));
+ return NULL;
+ }
+
+ (*unloadmodule)(0, base);
+
+ return ent.addr;
+}
#endif
@@ -1235,11 +1315,16 @@ dln_load(file)
if ((handle =
LoadLibraryExA(winfile, NULL, LOAD_WITH_ALTERED_SEARCH_PATH)) == NULL) {
- printf("LoadLibraryExA: %s\n", winfile);
goto failed;
}
if ((init_fct = (void(*)())GetProcAddress(handle, buf)) == NULL) {
- printf("GetProcAddress %s\n", buf);
- goto failed;
+ /* try case insensitive search */
+ int len = strlen(buf) + 1/* including null terminator */;
+ char *name = (len > sizeof(buf) / 2) ? ALLOCA_N(char, len) : buf + len;
+ if (!(init_fct = (void(*)())search_insensitively(winfile, buf, name))) {
+ goto failed2;
+ }
+ rb_warning("use `%s' to require, not but `%s'",
+ FUNCNAME_FEATURE(name), FUNCNAME_FEATURE(buf));
}
/* Call the init code */
@@ -1277,5 +1362,5 @@ dln_load(file)
if ((init_fct = (void(*)())dlsym(handle, buf)) == NULL) {
- goto failed;
+ goto failed2;
}
/* Call the init code */
@@ -1502,4 +1587,6 @@ dln_load(file)
failed:
rb_loaderror("%s - %s", dln_strerror(), file);
+ failed2:
+ rb_loaderror("%s - %s\n%s", dln_strerror(), buf, file);
#endif
}
--
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
中田 伸悦