ruby-trunk-changes r36189 - r36203

今日は akr さん無双で、Process.exec, spawn のオプションの処理のリファクタリングがありました。

akr:r36189 2012-06-23 08:09:16 +0900

process.c, io.c, ext/pty/pty.c で struct rb_execarg のポインタの変数や構造体メンバ名を eargp という名前に揃えるリファクタリングをしています。

tadf:r36190 2012-06-23 08:30:17 +0900

Complex と Rational の freeze したオブジェクトの marshal_load で内容を上書きできないことをチェックするテストがコメントアウトされていたのを戻しています。

akr:r36191 2012-06-23 09:18:32 +0900

process.c と io.c で struct rb_execarg のポインタの変数を sargp という名称に揃えています。 eargp との使い分けはどういう基準なんでしょうか。

akr:r36192 2012-06-23 09:36:42 +0900

sargp->options の VALUE を受ける変数名を soptions に統一しています。

akr:r36193 2012-06-23 10:43:51 +0900

exec や spawn のオプションの unsetenv_others の情報を配列に格納していたのを struct rb_execarg に直接格納するようにするリファクタリングをしています。

akr:r36194 2012-06-23 13:23:03 +0900

同じく、exec/spawn のオプション close_others を struct rb_execarg に格納するようにしています。

akr:r36195 2012-06-23 15:23:35 +0900

これまた同じく exec/spawn の chdir オプションの情報を struct rb_execarg に格納するように変更しています。 VALUE 型(String のオブジェクト)で持っていますね。文字列を取り出す時に signal-async-safe じゃない関数を使ったりしないので参照するだけのものは別にいいのか。

akr:r36196 2012-06-23 16:30:26 +0900

またまた同じく exec/spawn の rlimit_??? のオプションの情報を struct rb_execarg に直接格納するようにしています。 Array オブジェクトで(VALUE 型)保持しています。

akr:r36197 2012-06-23 17:18:34 +0900

exec/spawn の環境変数の引数の情報を struct rb_execarg に格納するようにしています。これも Array オブジェクトで保持しています。

akr:r36198 2012-06-23 17:22:53 +0900

r36193 で削除した unsetenv_others のオプションの情報を options 配列から取り出そうとしていたコードがまだ残っていたところがあったので追加の修正をしています。

akr:r36199 2012-06-23 18:44:43 +0900

process.c の check_exec_redirect() から key の型に応じて配列に配列を詰めていく処理を check_exec_redirect1() という名前で切り出しています。名前がいまいちですね。

akr:r36200 2012-06-23 19:01:46 +0900

r36197 の変更で環境変数の設定の未指定を表すのが Qnil ではなく Qfalse になったので、NIL_P() でチェックしていたところがあったのを修正しています。

akr:r36201 2012-06-23 20:35:32 +0900

exec/spawn の file descriptor の変更のオプション close, in, out, err の情報をまとめて struct rb_execarg に直接保持するようにするリファクタリングです。

akr:r36202 2012-06-23 23:21:47 +0900

exec/spawn のオプション new_pgroup の情報を struct rb_execarg に直接保持するようにしています。 これで eargp->options に格納されるオプションはなくなったようです。お疲れさまでした。

akr:r36203 2012-06-23 23:50:38 +0900

ということで不要になった options、soptions 変数を削除しています。 struct rb_execarg のメンバからも削除されるのでしょうか。 [ruby-core:45797] [Bug #6633]