[#13727] Thread.critical=true and fork and exec — Kazuhiro NISHIYAMA <zn@...>
このような感じでforkとexecの間に必要のないIOを閉じようと
[#13754] Kconv(NKF) with tainted strings — Tietew <tietew@...>
Tietew といいます。
[#13765] GenerativeHash — TAKAHASHI Masayoshi <maki@...>
高橋征義です。
まつもと ゆきひろです
高橋征義です。
TAKAHASHI Masayoshiさんの
高橋征義です。
[#13767] Dir::glob() — "Akinori MUSHA" <knu@...>
File::fnmatch の提案のときに切り離した、 Dir::glob の拡張を
[#13774] mkmf.rb: cleaning facility — Takaaki Tateishi <ttate@...>
立石です.
まつもと ゆきひろです
At Mon, 9 Jul 2001 15:20:28 +0900,
まつもと ゆきひろです
[#13779] dln.c patch for Mac OS X — Mitsuhiro Kondo <kondo@...>
こんにちは、近藤と申します。
[#13800] Re: [ruby-cvs] ruby: * ruby.h: fix a wrong function name: rb_iglob() -> rb_globi(). — nobu.nakada@...
なかだです。
わたなべです。
まつもと ゆきひろです
わたなべです。
まつもと ゆきひろです
わたなべです。
まつもと ゆきひろです
At Tue, 10 Jul 2001 15:23:04 +0900,
わたなべです。
At Tue, 10 Jul 2001 16:50:52 +0900,
もうひとつあった。
At Tue, 10 Jul 2001 18:04:57 +0900,
まつもと ゆきひろです
At Mon, 16 Jul 2001 01:16:31 +0900,
まつもと ゆきひろです
At Mon, 16 Jul 2001 09:22:46 +0900,
まつもと ゆきひろです
[#13817] Fw: DOSISH file.c changes — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
なかだです。
こんにちは、なかむら(う)です。
なかだです。
[#13818] COPYING files — "Akinori MUSHA" <knu@...>
Ruby は GPL のシングルライセンスではないのに、 COPYING という
先日の:
高橋征義です。
[#13821] [BUG] rb_gc_mark(): unknown data type 0x1c(0xbfff3d6c) non object — akira yamada / やまだあきら <akira@...>
[#13824] config.{guess,sub} too old? — akira yamada / やまだあきら <akira@...>
[#13828] supported platforms / K&R — "Akinori MUSHA" <knu@...>
digest モジュールの各プラットフォームでの動作確認をお願いした
新井です。
清水@biglobeです。
新井です。
清水@biglobe です。
なかだです。
新井です。
新井です。
なかだです。
新井です。
なかだです。
新井です。
なかだです。
新井です。
新井です。
[#13833] Net::HTTP#proxy? — WATANABE Hirofumi <eban@...>
わたなべです。
[#13866] yield and proc — Takashi Ikeda <nov28@...>
池田と申します。
[#13870] massign to Hash — nobu.nakada@...
なかだです。
[#13878] Prototype for rb_gc_mark / volatile in ruby.h — Tietew <tietew@...>
Tietew です。
まつもと ゆきひろです
こんにちは、なかむら(う)です。
わたなべです。
こんにちは、なかむら(う)です。
わたなべです。
こんにちは、なかむら(う)です。
むらけんです.
[#13908] Forward: Seg fault in latest regex.c (PR#154) — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[#13924] doc/ — Minero Aoki <aamine@...>
あおきです。
[#13929] error: multiple require of digest/* — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
なかだです。
まつもと ゆきひろです
[#13940] IO#read — "Akinori MUSHA" <knu@...>
IO#read を使って何度もストリームから読み込むような処理をする
なかだです。
まつもと ゆきひろです
At Sat, 21 Jul 2001 03:21:11 +0900,
まつもと ゆきひろです
At Sat, 21 Jul 2001 04:43:06 +0900,
At Sat, 21 Jul 2001 05:03:10 +0900,
[#13943] [REQ] ruby_stop without exit — Tietew <tietew@...>
Tietew です。
[#13959] Re: [ruby-list:30682] Re: overwride method — "Akinori MUSHA" <knu@...>
At Fri, 20 Jul 2001 21:09:36 +0900,
ごとけんです
まつもと ゆきひろです
ごとけんです
まつもと ゆきひろです
[ruby-dev:13969]>
まつもと ゆきひろです
ごとけんです
なひです。
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
なひです。
まつもと ゆきひろです
なひです。
まつもと ゆきひろです
なひです。
まつもと ゆきひろです
ごとけんです
まつもと ゆきひろです
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
あづみです。
まつもと ゆきひろです
In <996211878.306635.31396.nullmailer@ev.netlab.jp>
まつもと ゆきひろです
In <996255758.830993.629.nullmailer@ev.netlab.jp>
まつもと ゆきひろです
In <996282482.936326.1948.nullmailer@ev.netlab.jp>
なひです。
まつもと ゆきひろです
なひです。
あづみです。
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
前田です。
まつもと ゆきひろです
前田です。
まつもと ゆきひろです
[#14003] to_int in mathn [Re: overwride method ] — keiju@... (石塚圭樹)
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
原です。
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
[#14026] Exception in coerce — Shin-ichiro HARA <sinara@...>
原です。
まつもと ゆきひろです
原です。
まつもと ゆきひろです
まつもと ゆきひろです
原です。
まつもと ゆきひろです
原です。
まつもと ゆきひろです
原です。
まつもと ゆきひろです
原です。
まつもと ゆきひろです
原です。
まつもと ゆきひろです
[#14045] load "~/foo" — WATANABE Hirofumi <eban@...>
わたなべです。
[#14097] DOSISH file.c — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)@帰省中です。
[ruby-dev:13767] Dir::glob()
File::fnmatch の提案のときに切り離した、 Dir::glob の拡張を
再提案します。
現在の Dir::glob() は、ワイルドカードのマッチを行う際のフラグが
FNM_PERIOD に決め打ちになっていますが、変更できるとうれしいので、
第二引数にフラグを受け付けるようにしたいです。
Ruby API (Dir::glob) の互換性を考慮し、第二引数の省略時は従来
通り File::FNM_PERIOD でマッチを行います。つまり、
Dir::glob(pattern, flags = File::FNM_PERIOD)
ということです。flags に指定できるのは、 File::FNM_PERIOD に加え
File::FNM_CASEFOLD と File::FNM_NOESCAPE を加えた三つの組み合わせ
(OR)です。
また、 C API (rb_glob(), rb_globi()) もそのまま維持し、フラグを
指定できる関数 (rb_glob_with_flags()) は static にしましたので、
変更の影響は dir.c の中だけに止まります。
一つ懸念されるのは、現在 [] が glob の別名なので、副作用として
Dir::[] も第二引数を受け付けてしまうようになるということです。
Dir["*.bak", File::FNM_CASEFOLD] って、 [] の使い方のポリシーから
すると邪道ですかねえ。もし問題なら、 [] の仕様から考え直す必要が
あるかも。(私はそんなに気にすることではないと思っていますが)
P.S.
ところで、 dir.c rev.1.49 の変更で Dir.glob("a* b*") が a* と
b* の和ではなく、文字通り空白を含むパターンとして認識されるように
なっているに先ほど気づきました。これは、以前の挙動が意図しない
ものだったということでしょうか?
--
/
/__ __ Akinori.org / MUSHA.org
/ ) ) ) ) / FreeBSD.org / Ruby-lang.org
Akinori MUSHA aka / (_ / ( (__( @ iDaemons.org / and.or.jp
"Freeze this moment a little bit longer, make each impression
a little bit stronger.. Experience slips away -- Time stand still"
Index: dir.c
===================================================================
RCS file: /mirror/ruby/src/ruby/dir.c,v
retrieving revision 1.49
diff -u -r1.49 dir.c
--- dir.c 2001/07/02 08:46:21 1.49
+++ dir.c 2001/07/08 11:14:26
@@ -751,13 +751,23 @@
}
}
+static inline void
+rb_glob_with_flags(path, flags, func, arg)
+ char *path;
+ int flags;
+ void (*func) _((const char*, VALUE));
+ VALUE arg;
+{
+ glob_helper(path, flags, func, arg);
+}
+
void
rb_glob(path, func, arg)
char *path;
void (*func) _((const char*, VALUE));
VALUE arg;
{
- glob_helper(path, FNM_PERIOD, func, arg);
+ rb_glob_with_flags(path, FNM_PERIOD, func, arg);
}
void
@@ -766,7 +776,7 @@
void (*func)();
VALUE arg;
{
- glob_helper(path, FNM_PERIOD|FNM_CASEFOLD, func, arg);
+ rb_glob_with_flags(path, FNM_PERIOD|FNM_CASEFOLD, func, arg);
}
static void push_pattern _((const char *path, VALUE ary));
@@ -787,17 +797,19 @@
}
static void
-push_globs(ary, s)
+push_globs(ary, s, flags)
VALUE ary;
char *s;
+ int flags;
{
- rb_glob(s, push_pattern, ary);
+ rb_glob_with_flags(s, flags, push_pattern, ary);
}
static void
-push_braces(ary, s)
+push_braces(ary, s, flags)
VALUE ary;
char *s;
+ int flags;
{
char buffer[MAXPATHLEN], *buf = buffer;
char *p, *t, *b;
@@ -837,28 +849,40 @@
}
memcpy(b, t, p-t);
strcpy(b+(p-t), rbrace+1);
- push_braces(ary, buf);
+ push_braces(ary, buf, flags);
}
if (buf != buffer)
free(buf);
}
else {
- push_globs(ary, s);
+ push_globs(ary, s, flags);
}
}
#define isdelim(c) ((c)=='\0')
static VALUE
-dir_s_glob(dir, str)
- VALUE dir, str;
+dir_s_glob(argc, argv, obj)
+ int argc;
+ VALUE *argv;
+ VALUE obj;
{
+ VALUE str, rflags;
char *p, *pend;
char buffer[MAXPATHLEN], *buf;
char *t;
int nest;
+ int flags;
+ int noescape;
VALUE ary = 0;
+ if (rb_scan_args(argc, argv, "11", &str, &rflags) == 2)
+ flags = NUM2INT(rflags);
+ else
+ flags = FNM_PERIOD;
+
+ noescape = flags & FNM_NOESCAPE;
+
SafeStringValue(str);
if (!rb_block_given_p()) {
ary = rb_ary_new();
@@ -879,7 +903,7 @@
while (p < pend && !isdelim(*p)) {
if (*p == '{') nest+=2;
if (*p == '}') nest+=3;
- if (*p == '\\') {
+ if (!noescape && *p == '\\') {
*t++ = *p++;
if (p == pend) break;
}
@@ -887,10 +911,10 @@
}
*t = '\0';
if (nest == 0) {
- push_globs(ary, buf);
+ push_globs(ary, buf, flags);
}
else if (nest % 5 == 0) {
- push_braces(ary, buf);
+ push_braces(ary, buf, flags);
}
/* else unmatched braces */
}
@@ -978,8 +1002,8 @@
rb_define_singleton_method(rb_cDir,"delete", dir_s_rmdir, 1);
rb_define_singleton_method(rb_cDir,"unlink", dir_s_rmdir, 1);
- rb_define_singleton_method(rb_cDir,"glob", dir_s_glob, 1);
- rb_define_singleton_method(rb_cDir,"[]", dir_s_glob, 1);
+ rb_define_singleton_method(rb_cDir,"glob", dir_s_glob, -1);
+ rb_define_singleton_method(rb_cDir,"[]", dir_s_glob, -1);
rb_define_singleton_method(rb_cFile,"fnmatch", file_s_fnmatch, -1);
rb_define_singleton_method(rb_cFile,"fnmatch?", file_s_fnmatch, -1);