[#30408] Ruby 1.8.6 preview2 has been released — "Akinori MUSHA" <knu@...>

 Ruby 1.8.6 preview2 をリリースしました。

20 messages 2007/02/24
[#30414] fail to autoload at $SAFE==4 (Re: Ruby 1.8.6 preview2 has been released) — Hidetoshi NAGAI <nagai@...> 2007/02/25

永井@知能.九工大です.

[#30418] Re: fail to autoload at $SAFE==4 (Re: Ruby 1.8.6 preview2 has been released) — Nobuyoshi Nakada <nobu@...> 2007/02/25

なかだです。

[ruby-dev:30305] ShiftJIS環境でのglobingを改善するパッチ

From: "きむらこういち" <hogemuta@...>
Date: 2007-02-08 15:06:54 UTC
List: ruby-dev #30305
木村です。

表題のパッチを作成しました。
2007-2-7時点の stable-snapshot のソースに対する差分になっています。
大まかな変更点は以下の通りです。

dir.c
emx_mblen: 追加 EMX環境のみで使用される?
CompareImpl: 追加 マルチバイトのアルファベット(Aとか)を
  考慮したcase independentな比較のために使用される?
range: 名前変更 bracketに。中身も再実装。
fnmatch: 再実装
fnmatch_helper: 追加 fnmatchから呼び出される。
dir_inspect: 追加
dir_path: 修正 SAFEレベル4のときの汚染検査位置の移動
do_stat: 追加 システムコール statを実行し、その結果により警告を発する
do_lstat: 追加 do_statの lstat版?
do_opendir: 追加 opendirを実行し、その結果により警告
has_magic: 引数変更
extract_path: 削除
extract_elem: 削除
find_dirsep: 追加 グロビング対象のパターンからディレクトリセパレータを検索
remove_backslash: 修正
enum glob_pattern: 追加
struct glob_pattern: 追加
glob_free_pattern: 追加 glob_make_patternで確保した領域の解放
glob_make_pattern: 追加 グロビングのための領域確保など
join_path: 追加 引数で与えられたパスとファイル名を、間にセパレータをはさんで連結
領域はこの関数内で確保する
enum answer: 追加
glob_helper: 引数変更 および再実装
ruby_glob: 変更 呼び出す関数がglob_helperからruby_glob0に
ruby_glob0: 追加
ruby_globi: 削除
ruby_glob_caller: 修正 glob_helperを呼び出している箇所がruby_glob0を呼び出すように
push_globs: 削除
push_braces: 削除
ruby_brace_expand: 追加
struct brace_args: 追加
glob_brace: 追加
ruby_brace_glob0: 追加
ruby_brace_glob: 追加
push_glob: 追加
rb_push_glob: 修正
dir_globs: 追加
dir_s_aref: 変更 引数の種類や戻り値に変更あり? 要注意
dir_s_glob: 変更 戻り値に変更あり? 要注意
rb_define_singleton_methodで登録する dir_s_arefの引数情報に変更あり

intern.h
rb_file_directory_p のプロトタイプ追加 不要?

ruby.h
ruby_glob_funcのtypedef追加
ruby_brace_expand のプロトタイプ追加
ruby_brace_glob のプロトタイプ追加

win32/dir.h
struct direct にメンバー追加
+    char d_isdir; /* directory */
+    char d_isrep; /* reparse point */

DIR 構造体にメンバー追加
+    long loc;  /* [0, nfiles) */
+    char *bits;  /* used for d_isdir and d_isrep */

win32/win32.c
cmdglobでの ruby_globiの呼び出しを ruby_globに変更

マクロ GetBit、SetBitの追加
rb_w32_opendir: 変更 メンバー追加に伴う追加コード
rb_w32_readdir: 変更 メンバー追加に伴う追加コード
rb_w32_closedir: 変更 メンバー追加に伴う追加コード

必要な部分だけを持ってくるように気をつけたつもりですが、余計な
修正が入っているかもしれません。

追加された関数に関しては1.8のフォーマットに従い、ANSIスタイルの
関数宣言/定義ではなく、K&Rスタイルで行っています。

Windows xp上の VC++ 7.1で正常にビルドでき、期待した動作をする
ことを確認してあります。

-- 
木村浩一
 I thought what I'd do was, I'd pretend I was one of those deaf-mutes
or shoud I?
 mail kbk at kt.rim.or.jp
 web  www.kt.rim.or.jp/~kbk/zakkicho/index.html

Attachments (1)

globing-patch.diff.gz (12.2 KB, Archive)

In This Thread

Prev Next