[#13083] [PATCH] ruby 1.7 compile error on mswin32 — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
[#13087] importing forwardable — "Akinori MUSHA" <knu@...>
石塚さんの forwardable.rb を標準添付ライブラリにするべく、
まつもと ゆきひろです
At Thu, 3 May 2001 15:03:48 +0900,
At Thu, 3 May 2001 17:46:21 +0900,
けいじゅ@日本ラショナルソフトウェアです.
At Fri, 4 May 2001 04:07:37 +0900,
けいじゅ@日本ラショナルソフトウェアです.
[#13114] defined? $& — Koji Arai <JCA02266@...>
新井です。
[#13116] instance_eval のバグ — Masato KIYAMA <masato@...>
木山です.
なかだです。
前田です。
前田です。
なかだです。
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
[#13169] SizedQueue#pop causes deadlock — "Okada Jun" <yun@...>
岡田です。
At Sun, 13 May 2001 14:11:18 +0900,
まつもと ゆきひろです
At Mon, 14 May 2001 00:24:45 +0900,
まつもと ゆきひろです
At Mon, 14 May 2001 08:59:23 +0900,
まつもと ゆきひろです
At Tue, 15 May 2001 03:31:54 +0900,
まつもと ゆきひろです
わたなべです。
さきほど、 HEAD への ruby-sha1 のインポートを完了しました。 :)
こんにちは、なかむら(う)です。
[#13195] スレッドで ctrl-c が効かなくなる ? — akira yamada / やまだあきら <akira@...>
まつもと ゆきひろです
新井です。
新井です。
[#13202] Re: [ruby-list:29672] Re: Enumerator — "Akinori MUSHA" <knu@...>
ruby-dev に移ります。
間違えて ruby-list に送ってしまったので、 ruby-dev に出し
まつもと ゆきひろです
At Wed, 16 May 2001 01:01:31 +0900,
Akinori MUSHAさんの<86ae4envtc.wl@archon.local.idaemons.org>から
At Wed, 16 May 2001 13:48:20 +0900,
[#13259] Enumerator -- Round 2 — "Akinori MUSHA" <knu@...>
もう一度、 Enumerable/Enumerator についてみなさんのご意見を
まつもと ゆきひろです
At Mon, 21 May 2001 06:04:32 +0900,
原です。
At Mon, 21 May 2001 15:00:11 +0900,
原です。
At Tue, 22 May 2001 19:02:10 +0900,
原です。
At Tue, 22 May 2001 20:57:02 +0900,
原です。
At Thu, 24 May 2001 15:44:14 +0900,
ごとうゆうぞうです。
[#13266] ruby-1.7 irb — WATANABE Tetsuya <tetsu@...>
渡辺哲也です。
[#13277] ext/dbm in ruby 1.7 — Kazuhiro NISHIYAMA <zn@...>
ruby 1.7のext/dbmですが、
まつもと ゆきひろです
渡辺哲也です。
まつもと ゆきひろです
渡辺哲也です。
まつもと ゆきひろです
[#13292] Integer("X") rescue -1 が parse error — YASUI Kentarow <kenyasui@...>
安井です。
まつもと ゆきひろです
At Wed, 23 May 2001 08:59:50 +0900,
At Thu, 24 May 2001 14:15:04 +0900,
まつもと ゆきひろです
At Thu, 24 May 2001 16:52:24 +0900,
[#13299] Proc#call weirdness ? — "Akinori MUSHA" <knu@...>
Proc#call は引数を配列化して渡しているようですが、これを
まつもと ゆきひろです
At Thu, 24 May 2001 14:25:22 +0900,
原です。
まつもと ゆきひろです
[#13336] lib/README — Kazuhiro NISHIYAMA <zn@...>
ruby_1_6のlib/READMEにcgi.rb,forwardable.rb,irb.rbの説明が
[#13357] glob & fnmatch — "Akinori MUSHA" <knu@...>
以下の機能追加をするのはいかがでしょうか。
[#13366] StringBuffer — Shugo Maeda <shugo@...>
前田です。
[#13370] clearerr(3) — Satoru Takabayashi <satoru@...>
高林と申します
Satoru Takabayashi <satoru@namazu.org> wrote:
[#13391] TCL_PACKAGE_PATH — WATANABE Hirofumi <eban@...>
わたなべです.
[#13415] ruby-gtk-0.24,0.25 が CPU を使い切る — a-shigi@...
ども鴫原です。
<20010531002634.371239@localhost>の記事において
[#13428] mswin32/ming32 system patch (experimental) — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
なかだです。
こんにちは、なかむら(う)です。
こんにちは、なかむら(う)です。
なかだです。
こんにちは、なかむら(う)です。
なかだです。
こんにちは、なかむら(う)です。
なかだです。
こんにちは、なかむら(う)です。
なかだです。
こんにちは、なかむら(う)です。
[ruby-dev:13428] mswin32/ming32 system patch (experimental)
こんにちは、なかむら(う)です。
以前、mswin32/mingw32でのsystemの挙動を改良しようと試みて
パッチを投げたことがありましたが、つい先日Patrick Chenz氏
から似たような発想(spawnvpe()の替わりにCreateProcess()を
直接叩く)のパッチを頂きましたので、それをベースにして再度
試験的なパッチを作成してみました。
改良したつもりの点は以下の通り。
1.現在のCVS HEADの実装だと、
system("\"d:\\bin\\test\\test.bat\" \"this is a test\" 1")
system("\"d:/bin/test/test.bat\" \"this is a test\" 1")
が正しく動作しないが、今回の実装だと動作する。
(Chenz氏による改良)
2.現在のCVS HEADの実装だとsystemを叩くとそのコマンドが
終了するまで全スレッドが停止するが、今回の実装だと他
のスレッドは動きつづける。
(私による改良)
なお、まだ手抜きの部分があるので、コードが整理されてなか
ったりしますが、それは気にしないで下さい :-P
ただ、このやり方がいいかどうかは僕自身にも自信はなくて、
[ruby-dev:12121]でなかださんがおっしゃっているように
spawnvpe()のままでrb_syswait()(か、それがダメなら今回の
ようにrb_waitpid()あたり)で待つようにするアプローチの方が
筋がいいかもしれません。
ご意見よろしくお願いします。
diff -p2ur current/process.c mytree/process.c
--- current/process.c Tue May 22 23:34:12 2001
+++ mytree/process.c Fri Jun 1 02:33:44 2001
@@ -228,5 +228,5 @@ static st_table *pid_tbl;
#endif
-static int
+int
rb_waitpid(pid, flags, st)
int pid;
diff -p2ur current/win32/win32.c mytree/win32/win32.c
--- current/win32/win32.c Sat May 12 15:43:28 2001
+++ mytree/win32/win32.c Fri Jun 1 02:56:44 2001
@@ -790,4 +790,5 @@ char *cmd;
}
+#if 0
argv = ALLOC_N(CHARP, (strlen(cmd) / 2 + 2));
cmd2 = ALLOC_N(char, (strlen(cmd) + 1));
@@ -839,5 +840,60 @@ char *cmd;
free(cmd2);
free(argv);
+
return (int)((status & 0xff) << 8);
+#else
+ {
+ BOOL fRet;
+ LPCSTR lpApplicationName = NULL;
+ LPTSTR lpCommandLine;
+ LPTSTR lpCmd2 = NULL;
+ DWORD dwCreationFlags;
+ STARTUPINFO aStartupInfo;
+ PROCESS_INFORMATION aProcessInformation;
+ SECURITY_ATTRIBUTES sa;
+ int ret;
+ int rb_waitpid(int, int, int*);
+
+ sa.nLength = sizeof (SECURITY_ATTRIBUTES);
+ sa.lpSecurityDescriptor = NULL;
+ sa.bInheritHandle = TRUE;
+
+ memset(&aStartupInfo, 0, sizeof (STARTUPINFO));
+ memset(&aProcessInformation, 0, sizeof (PROCESS_INFORMATION));
+ aStartupInfo.cb = sizeof (STARTUPINFO);
+
+ dwCreationFlags = (NORMAL_PRIORITY_CLASS);
+
+ lpCommandLine = cmd;
+ /*
+ if (NtHasRedirection(cmd) || isInternalCmd(cmd)) {
+ lpApplicationName = getenv("COMSPEC");
+ lpCmd2 = ALLOC_N(char, strlen(lpApplicationName) + 1 + strlen(cmd) + sizeof (" /c "));
+ sprintf(lpCmd2, "%s %s%s", lpApplicationName, " /c ", cmd);
+ lpCommandLine = lpCmd2;
+ }
+ */
+ RUBY_CRITICAL({
+ fRet = CreateProcess(lpApplicationName, lpCommandLine, &sa, &sa,
+ sa.bInheritHandle, dwCreationFlags, NULL, NULL,
+ &aStartupInfo, &aProcessInformation);
+ });
+ if (lpCmd2)
+ free(lpCmd2);
+
+ if ( ! fRet ) {
+ errno = GetLastError();
+ rb_sys_fail("do_spawn: CreateProcess");
+ }
+
+ do {
+ ret = rb_waitpid((int)aProcessInformation.hProcess, 0, &status);
+ } while (ret == -1 && errno == EINTR);
+ CloseHandle(aProcessInformation.hThread);
+ CloseHandle(aProcessInformation.hProcess);
+ }
+
+ return status;
+#endif //0
}
それでは。
--
U.Nakamura <usa@osb.att.ne.jp>