ruby-trunk-changes r36045 - r36067

今日も process.c の変更多数と、ANSI スタイルを強制するコンパイラオプションの設定の調整などがありました。

naruse:r36045 2012-06-12 23:46:29 +0900

mkmf.rb で生成する Makefile に clean-static という clean が依存するターゲットを追加しています。

nobu:r36046 2012-06-13 09:54:32 +0900

process.c の char * にいくつか const 修飾子を付けています。

svn:r36047 2012-06-13 09:54:36 +0900

version.h の日付更新。

nobu:r36048 2012-06-13 09:55:31 +0900

exec/spawn の引数でのシェルのメタキャラクタ判定で r36041 で "=" も追加しましたが、"=" がメタキャラクタになるのはコマンドの前で環境変数の代入に使っている時だけなので、最初のワードの間だけメタキャラクタとして扱うようにしています。
しかしこの方法だと最初に空白をみつけるとそれ以降はメタキャラクタにならなくなるので、複数の環境変数セットがあると2つ目以降がメタキャラクタにならなくなりますが……でもここでやりたいのは全体を通してメタキャラクタがあるかどうかの判定だけなので最初の単語だけ見れば十分ですね。なるほど。

nobu:r36049 2012-06-13 09:56:31 +0900

さらにシェルのビルトインコマンドや予約語を特別扱いして、メタキャラクタを含んだものとしてシェルを経由させるようにしています。
ということは"echo"なんて名前のプログラムを実行する時はフルパスで指定しましょうということですね。

nobu:r36050 2012-06-13 10:20:05 +0900

r36049 で予約語の配列として宣言した型の文字列領域サイズの間違いを修正しています。

nobu:r36051 2012-06-13 10:20:29 +0900

さらにビルトインコマンドや予約語との一致の検出をショートカットするために予約語より長い文字列はスキップしていて、コマンドに"/"が含まれていたらそのパスに載せるために文字数を長くセットしています。そこで定数としてSIZE_T_MAXを使っていましたが、この定数を使えない場合があったようでとにかくリストのどのサイズよりも大きければいいということで0x100をセットするようにしています。

nobu:r36052 2012-06-13 13:09:35 +0900

thread_pthread.c で条件コンパイルで特定の条件でしか利用されていない変数の宣言を同じ条件でくくることでコンパイラの警告を除去しています。

nobu:r36053 2012-06-13 13:09:37 +0900

configure で NativeClient 環境の型のチェックは host-os が nacl の時だけ実施するようにしています。

nobu:r36054 2012-06-13 13:39:06 +0900

encoding.c で strdup() を関数ポインタとして渡そうとしているところがあったので、strdup() が関数マクロとして実装されていてもいいようにスタブ関数を用意しています。

nobu:r36055 2012-06-13 13:39:25 +0900

include/ruby/win32.h に "//" ではじまる C++ スタイルの行コメントが利用されていたので C の /* ... */ のコメント記法に修正しています。

shyouhei:r36056 2012-06-13 15:16:46 +0900

r36038 でコンパイラオプションに -ansi などのオプションを渡すようにしたのですが Windows 環境ではシステムヘッダがしばしば "//" のスタイルの1行コメントを利用していてコンパイルできなくなってしまうため、MinGW環境(Windows 上での gcc)ではこれらのオプションを指定しないようにしています。

nobu:r36057 2012-06-13 16:38:06 +0900

process.c で Windows 版では未使用になっている構造体の宣言を #ifndef _WIN32 でくくるようにしています。

nobu:r36058 2012-06-13 17:50:42 +0900

Makefile.in の *.c から *.i を生成するルール(プリプロセッサの実行)に $warnflags を付けるようにしています。

nobu:r36059 2012-06-13 17:51:04 +0900

cygwin 環境向けにコンパイラオプションに -ansi -std=c99 をつけるようにしています。

shyouhei:r36060 2012-06-13 17:58:05 +0900

regparse.c でコンパイラの代入されているのに未使用の変数の警告を除去するために変数にその変数自身を代入するコードがあり、それが今度は未初期化変数の参照という警告を引き起しているため NULL を代入するようにしています。単に NULL を代入するだけだと未使用の変数の警告は出ると思うので、(void)pfetch_prev; みたいな文を追加しないといけないんじゃないでしょうか。

akr:r36061 2012-06-13 20:20:33 +0900

process.c の rb_fork_internal() でローカル変数の宣言をスコープを狭めるように宣言位置を移動しています。

akr:r36062 2012-06-13 20:37:33 +0900

Process.exec の rdoc に失敗時にも options で指定した一部のプロセスの属性の変更が残ってしまうことがあることを記述追加しています。

nobu:r36063 2012-06-13 21:46:36 +0900

r36059 で cygwin 版のコンパイルオプションに -ansi -std=c99 を付けるようにしましたが、一部の宣言が ANSI 形式になっていなかったそうで削除しています。

nobu:r36064 2012-06-13 21:46:38 +0900

r36063 の ChangeLog エントリ追加。

nobu:r36065 2012-06-13 22:18:05 +0900

darwin つまり Mac OS X でも lgamma_r() と finite() という関数を利用するために -ansi と -std=c99 のコンパイラオプションを付けないようにしています。また -D_REENTRANT を付けるようにしています。

ngoto:r36066 2012-06-13 22:52:04 +0900

拡張ライブラリ dl のコールバックのテストで型の指定が間違っていて Solaris 64bit 環境で SEGV していたのを修正しています。 [ruby-dev:45733] [Bug #6584]

akr:r36067 2012-06-13 23:00:33 +0900

popen でコマンドラインのチェックでシェルのビルトインコマンド exec を使った時にシェルを経由して起動されることをチェックするテストを追加しています。