[#10793] 今度こそ (patch of the ruby-1.4.6 for NT4.0&VC4.0 on DEC Alpha.) — kou@...1609.sip.eee.yamaguchi-u.ac.jp (Koichi Okada)

岡田です。

10 messages 2000/09/01

[#10920] SIGINT on windows — "Nobuyoshi.Nakada" <nobu.nakada@...>

なかだです。

17 messages 2000/09/14
[#11077] Re: SIGINT on windows — matz@... (Yukihiro Matsumoto) 2000/09/27

まつもと ゆきひろです

[#10944] dummy DLL on Windows — "Nobuyoshi.Nakada" <nobu.nakada@...>

なかだです。

19 messages 2000/09/18
[#10955] Re: dummy DLL on Windows — WATANABE Hirofumi <eban@...> 2000/09/19

わたなべです.

[#10963] Re: dummy DLL on Windows — "Nobuyoshi.Nakada" <nobu.nakada@...> 2000/09/19

なかだです。

[#10964] Re: dummy DLL on Windows — WATANABE Hirofumi <eban@...> 2000/09/19

わたなべです.

[#10978] [PATCH] require in require — "Nobuyoshi.Nakada" <nobu.nakada@...>

なかだです。

15 messages 2000/09/20

[#10985] httphead.rb proxy version problem — Katsuyuki Komatsu <komatsu@...>

小松です.

16 messages 2000/09/20
[#10989] Re: httphead.rb proxy version problem — Minero Aoki <aamine@...> 2000/09/20

あおきです。

[ruby-dev:10859] Re: bmingw package

From: "Nobuyoshi.Nakada" <nobu.nakada@...>
Date: 2000-09-07 10:46:56 UTC
List: ruby-dev #10859
なかだです。

At Thu, 7 Sep 2000 14:57:09 +0900
WATANABE Hirofumi <eban@os.rim.or.jp> wrote:
> :  main.c じゃなくて ruby.c ですか? xflag を立てるとかそういったことですか?
> 
> exe ファイルを ruby が parse することになるので, C-z がじゃまに
> なります. で, .exe がついてたら binmode にする処理を ruby.c に入
> れました.

  あー、そういえばそんなこともあったような。でもスクリプトがテキストモー
ドじゃなきゃならない理由もとくにないような気も。

> :> foo.rb の先頭は "\n#! ruby" じゃないとまずいので rb2exe みた
> :> いなコマンドを用意したほうがいいか.
> :> 
> :>     sprintf(newargl, "ruby -x \"%s\" %s", myname, cmdline);
> :>     exit(spawnlp(_P_WAIT, "ruby", newargl, 0));
> :
> :  これわざわざ別プロセスにしなくともと思ったら、今 Windows 版は実行ファイ
> :ルの相対パスで $: を決めるようにしてしまったからライブラリがロードできな
> :いし。
> 
> てゆうか, 別プロセスしか頭にありませんでした.
> cygwin 版でも mswin32,mingw32 版でも runruby.exe 一個あればいい
> かなというのもあったし.

  ソースツリー自体に入れずに別のパッケージでも問題ないかも。

> 考えてみれば cygwin は chmod +x すればいいし,

  これってできましたっけ? cygwin だと単純に先頭が #! だったら実行可能と
みなされるものと思ってましたが。

> mswin32,mingw32 専用ってことで NtInitialize に仕込むのはありかも.
> ただ, スクリプトが append されてるかどうかをどうやって判断すれば
> いいんだろう? #! を見に行くのはなんかださいし.

  実行ファイルに #!.*ruby があったら常に -x $0 が指定されたようにするっ
てことですか。そこまでしなくてもスタブは別でいいんでは。

> 相対パスに関しては ruby.exe を LoadLibraryEx して 
> GetModuleFileName すればできそう.
> ruby.xxxxx.dll でもいいけど.

  DLL を基準にするならこんな感じでしょうか。


diff -pruPX ./.excludes current/ruby.c devel/ruby.c
--- current/ruby.c	Tue Aug 15 15:22:42 2000
+++ devel/ruby.c	Thu Sep  7 14:16:57 2000
@@ -210,7 +210,12 @@ ruby_init_loadpath()
     char *p;
     size_t rest;
 #if defined(_WIN32)
-    GetModuleFileName(NULL, libpath, sizeof libpath);
+#ifdef LIBRUBY_SO
+#define RubyModuleHandle GetModuleHandle(LIBRUBY_SO".")
+#else
+#define RubyModuleHandle NULL
+#endif
+    GetModuleFileName(RubyModuleHandle, libpath, sizeof libpath);
 #elif defined(DJGPP)
     extern char *__dos_argv0;
     strncpy(libpath, __dos_argv0, FILENAME_MAX);
@@ -218,7 +223,7 @@ ruby_init_loadpath()
     p = strrchr(libpath, '\\');
     if (p) {
 	*p = 0;
-	if (p-libpath > 3 && !strcasecmp(p-4, "\\bin")) {
+	if (p-libpath > 3 && !(strcasecmp(p-4, "\\bin") && strcasecmp(p-4, "\\lib"))) {
 	    p -= 4;
 	    *p = 0;
 	}


-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦


In This Thread