[#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:14118] Re: DOSISH file.c
なかだです。
At Thu, 26 Jul 2001 11:31:46 +0900,
U.Nakamura <usa@osb.att.ne.jp> wrote:
> こんにちは、なかむら(う)@帰省中です。
> 最新のfile.cへのパッチです。
> 最新のfile.cからの差分に(たぶん)なっています。
>
> 1. \対応(オリジナルはCheng氏)
> 2. マルチバイト対応(1のため必須) 不完全かも...
> 3. ドライブ文字対応
> 4. [ruby-dev:14075]
あと、0x5cで終るpath elementを削らないようにするのと、ドライ
ブレターなしの絶対パスもdnameを見るようにするのも。それから
strrdirsep()のドライブレターのチェックは意味ありませんでしたね。
[ruby-dev:14097]へのパッチです。
しかし、マルチバイトを考慮していないループにマルチバイト対応
を突っ込むのは、どうもやっぱりゴチャゴチャしてきてしまうので、
できれば二つめのパッチみたいにしたいところですが。
> File.joinへのパッチは含んでいませんが、必要ではあると思います。
これはexpand_pathが落ち着いたら次に。
--- file.c 2001/07/26 02:00:08 1.63.0.1
+++ file.c 2001/07/26 09:47:19 1.63.0.2
@@ -1357,7 +1357,4 @@ strrdirsep(path)
{
char *last = NULL;
-#ifdef DOSISH
- if (has_drive_letter(path)) path += 2;
-#endif
while (*path) {
if (isdirsep(*path)) {
@@ -1415,10 +1412,7 @@ rb_file_s_expand_path(argc, argv)
s++;
#endif
- while (*s && !isdirsep(*s)) {
- for (t = CharNext(s); s != t; s++) {
- *p++ = *s;
- }
- if (p >= bend) goto toolong;
- }
+ for (t = s; *s && !isdirsep(*s); s = CharNext(s));
+ if (p + (s - t) >= bend) goto toolong;
+ while (t < s) *p++ = *t++;
*p = '\0';
#ifdef HAVE_PWD_H
@@ -1441,8 +1435,8 @@ rb_file_s_expand_path(argc, argv)
/* specified drive letter, and full path */
/* skip drive letter */
- while (*s && !isdirsep(*s)) {
- *p++ = *s++;
- if (p >= bend) goto toolong;
- }
+ if (p + 2 >= bend) goto toolong;
+ *p++ = *s++;
+ *p++ = *s++;
+ s++;
}
else {
@@ -1462,34 +1456,13 @@ rb_file_s_expand_path(argc, argv)
strcpy(buf, RSTRING(dname)->ptr);
p = &buf[strlen(buf)];
- s += 2;
}
else {
getcwdofdrv(*s, buf, MAXPATHLEN);
- s += 2;
-
- tainted = 1;
- p = &buf[strlen(buf)];
- if (*s) {
- /* need to append '/' before appending the rest of the path */
- if (!isdirsep(*(p - 1))) *p++ = '/';
- while (*s && !isdirsep(*s)) {
- *p++ = *s++;
- if (p >= bend) goto toolong;
- }
+ for (p = buf; *p && p < bend; p = CharNext(p)) {
+ if (isdirsep(*p)) *p = '/';
}
+ tainted = 1;
}
- }
- }
-#endif
-#if defined DOSISH && ! defined(__CYGWIN__)
- else if (isdirsep(*s) && !is_absolute_path(s)) {
- /* specified full path, but not drive letter */
- /* we need to get the drive letter */
- tainted = 1;
- getcwd(buf, MAXPATHLEN);
- p = &buf[2];
- while (*s && !isdirsep(*s)) {
- *p++ = *s++;
- if (p >= bend) goto toolong;
+ s += 2;
}
}
@@ -1505,7 +1478,35 @@ rb_file_s_expand_path(argc, argv)
tainted = 1;
getcwd(buf, MAXPATHLEN);
+#if defined DOSISH
+ for (p = buf; *p && p < bend; p = CharNext(p)) {
+ if (isdirsep(*p)) *p = '/';
+ }
+#endif
+ }
+#if defined DOSISH && ! defined(__CYGWIN__)
+ if (isdirsep(*s)) {
+ /* specified full path, but not drive letter */
+ p = &buf[2];
+ if (!has_drive_letter(buf)) {
+ /* UNC */
+ while (*p && !isdirsep(*p)) p = CharNext(p);/* skip host name */
+ if (*p) {
+ ++p;
+ while (*p && !isdirsep(*p)) p = CharNext(p); /* skip share name */
+ }
+ }
+ }
+ else
+#endif
+ {
+ for (p = buf; isdirsep(*p); ++p);
+ if (*p) {
+ do {
+ while (*p && !isdirsep(*p)) p = CharNext(p);
+ for (t = p; isdirsep(*p); ++p);
+ } while (*p);
+ p = t;
+ }
}
- p = &buf[strlen(buf)];
- while (p > buf && strrdirsep(buf) == p - 1) p--;
}
else {
@@ -1530,6 +1531,9 @@ rb_file_s_expand_path(argc, argv)
if (*(s+1) == '\0' || isdirsep(*(s+1))) {
/* We must go back to the parent */
- if (isdirsep(*p) && p > buf) p--;
- while (p > buf && !isdirsep(*p)) p--;
+ *p = '\0';
+ if (!(t = strrdirsep(buf)))
+ *p = '/';
+ else
+ p = t;
}
else {
--- file.c 2001/07/26 09:47:19 1.63.0.2
+++ file.c 2001/07/26 10:03:00 1.63.0.3
@@ -1519,13 +1519,14 @@ rb_file_s_expand_path(argc, argv)
}
*p = '/';
+ t = s;
- for ( ; *s; s++) {
+ while (*s) {
switch (*s) {
case '.':
- if (!isdirsep(*p)) {
- *++p = '.';
- }
- else if (*(s+1)) {
- switch (*++s) {
+ if (t == s++) {
+ switch (*s) {
+ case '\0':
+ t = s;
+ break;
case '.':
if (*(s+1) == '\0' || isdirsep(*(s+1))) {
@@ -1536,9 +1537,5 @@ rb_file_s_expand_path(argc, argv)
else
p = t;
- }
- else {
- *++p = '.';
- *++p = *s;
- if (p >= bend) goto toolong;
+ t = ++s;
}
break;
@@ -1547,9 +1544,6 @@ rb_file_s_expand_path(argc, argv)
case '\\':
#endif
- *(p + 1) = '\0';
- if (strrdirsep(buf) != p) *++p = '/';
+ t = ++s;
break;
- default:
- *++p = '.'; *++p = *s; break;
}
}
@@ -1559,21 +1553,27 @@ rb_file_s_expand_path(argc, argv)
case '\\':
#endif
- *(p + 1) = '\0';
- if (strrdirsep(buf) != p) *++p = '/';
+ if (s > t) {
+ if (p + (s - t) >= bend) goto toolong;
+ do {*++p = *t++;} while (s > t);
+ *++p = '/';
+ }
+ t = ++s;
break;
default:
- for (t = CharNext(s); s != t; s++) {
- *++p = *s;
- }
- s--;
- if (p >= bend) goto toolong;
+ s = CharNext(s);
+ break;
}
}
- /* Place a \0 at end. If path ends with a "/", delete it */
- *(p + 1) = '\0';
- if (p == buf || strrdirsep(buf) != p) p++;
+ if (s > t) {
+ if (p + (s - t) >= bend) goto toolong;
+ ++p;
+ do {*p++ = *t++;} while (s > t);
+ }
+ else if (p == buf) {
+ p++;
+ }
#if defined(DOSISH)
- if (has_drive_letter(buf) && isdirsep(buf[2])) {
+ else if (has_drive_letter(buf) && isdirsep(buf[2])) {
/* root directory needs a trailing backslash,
otherwise it mean the current directory of the drive */
@@ -1581,7 +1581,6 @@ rb_file_s_expand_path(argc, argv)
}
#endif
- *p = '\0';
- fname = rb_str_new2(buf);
+ fname = rb_str_new(buf, p - buf);
if (tainted) OBJ_TAINT(fname);
return fname;
--
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
中田 伸悦