[#13083] [PATCH] ruby 1.7 compile error on mswin32 — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
[#13087] importing forwardable — "Akinori MUSHA" <knu@...>
石塚さんの forwardable.rb を標準添付ライブラリにするべく、
まつもと ゆきひろです
At Thu, 3 May 2001 15:03:48 +0900,
At Thu, 3 May 2001 17:46:21 +0900,
けいじゅ@日本ラショナルソフトウェアです.
At Fri, 4 May 2001 04:07:37 +0900,
けいじゅ@日本ラショナルソフトウェアです.
[#13114] defined? $& — Koji Arai <JCA02266@...>
新井です。
[#13116] instance_eval のバグ — Masato KIYAMA <masato@...>
木山です.
なかだです。
前田です。
前田です。
なかだです。
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
[#13169] SizedQueue#pop causes deadlock — "Okada Jun" <yun@...>
岡田です。
At Sun, 13 May 2001 14:11:18 +0900,
まつもと ゆきひろです
At Mon, 14 May 2001 00:24:45 +0900,
まつもと ゆきひろです
At Mon, 14 May 2001 08:59:23 +0900,
まつもと ゆきひろです
At Tue, 15 May 2001 03:31:54 +0900,
まつもと ゆきひろです
わたなべです。
さきほど、 HEAD への ruby-sha1 のインポートを完了しました。 :)
こんにちは、なかむら(う)です。
[#13195] スレッドで ctrl-c が効かなくなる ? — akira yamada / やまだあきら <akira@...>
まつもと ゆきひろです
新井です。
新井です。
[#13202] Re: [ruby-list:29672] Re: Enumerator — "Akinori MUSHA" <knu@...>
ruby-dev に移ります。
間違えて ruby-list に送ってしまったので、 ruby-dev に出し
まつもと ゆきひろです
At Wed, 16 May 2001 01:01:31 +0900,
Akinori MUSHAさんの<86ae4envtc.wl@archon.local.idaemons.org>から
At Wed, 16 May 2001 13:48:20 +0900,
[#13259] Enumerator -- Round 2 — "Akinori MUSHA" <knu@...>
もう一度、 Enumerable/Enumerator についてみなさんのご意見を
まつもと ゆきひろです
At Mon, 21 May 2001 06:04:32 +0900,
原です。
At Mon, 21 May 2001 15:00:11 +0900,
原です。
At Tue, 22 May 2001 19:02:10 +0900,
原です。
At Tue, 22 May 2001 20:57:02 +0900,
原です。
At Thu, 24 May 2001 15:44:14 +0900,
ごとうゆうぞうです。
[#13266] ruby-1.7 irb — WATANABE Tetsuya <tetsu@...>
渡辺哲也です。
[#13277] ext/dbm in ruby 1.7 — Kazuhiro NISHIYAMA <zn@...>
ruby 1.7のext/dbmですが、
まつもと ゆきひろです
渡辺哲也です。
まつもと ゆきひろです
渡辺哲也です。
まつもと ゆきひろです
[#13292] Integer("X") rescue -1 が parse error — YASUI Kentarow <kenyasui@...>
安井です。
まつもと ゆきひろです
At Wed, 23 May 2001 08:59:50 +0900,
At Thu, 24 May 2001 14:15:04 +0900,
まつもと ゆきひろです
At Thu, 24 May 2001 16:52:24 +0900,
[#13299] Proc#call weirdness ? — "Akinori MUSHA" <knu@...>
Proc#call は引数を配列化して渡しているようですが、これを
まつもと ゆきひろです
At Thu, 24 May 2001 14:25:22 +0900,
原です。
まつもと ゆきひろです
[#13336] lib/README — Kazuhiro NISHIYAMA <zn@...>
ruby_1_6のlib/READMEにcgi.rb,forwardable.rb,irb.rbの説明が
[#13357] glob & fnmatch — "Akinori MUSHA" <knu@...>
以下の機能追加をするのはいかがでしょうか。
[#13366] StringBuffer — Shugo Maeda <shugo@...>
前田です。
[#13370] clearerr(3) — Satoru Takabayashi <satoru@...>
高林と申します
Satoru Takabayashi <satoru@namazu.org> wrote:
[#13391] TCL_PACKAGE_PATH — WATANABE Hirofumi <eban@...>
わたなべです.
[#13415] ruby-gtk-0.24,0.25 が CPU を使い切る — a-shigi@...
ども鴫原です。
<20010531002634.371239@localhost>の記事において
[#13428] mswin32/ming32 system patch (experimental) — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
なかだです。
こんにちは、なかむら(う)です。
こんにちは、なかむら(う)です。
なかだです。
こんにちは、なかむら(う)です。
なかだです。
こんにちは、なかむら(う)です。
なかだです。
こんにちは、なかむら(う)です。
なかだです。
こんにちは、なかむら(う)です。
[ruby-dev:13356] trivial fixes for dir.c
dir.c の修正です。外からは見えないことですが、機能追加しようと
したときに見つけたので。
- PERIOD() マクロのバグを修正。FNM_PERIOD と FNM_PATHNAME を
両方指定したときの foo/.bar の扱いがおかしかった。
- ISDIRSEP() マクロを用意してちょっと楽にした。
- has_magic() が flags を理解するようにし、 glob_helper() の
フラグに FNM_NOESCAPE を与えたときちゃんと効くようにした。
--
/
/__ __ 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: /src/ruby/dir.c,v
retrieving revision 1.46
diff -u -r1.46 dir.c
--- dir.c 2001/05/16 09:05:49 1.46
+++ dir.c 2001/05/27 06:22:36
@@ -130,8 +130,9 @@
return 0;
}
+#define ISDIRSEP(c) (pathname && isdirsep(c))
#define PERIOD(s) (period && *(s) == '.' && \
- ((s) == string || pathname && isdirsep(*(s))))
+ ((s) == string || ISDIRSEP((s)[-1])))
static int
fnmatch(pat, string, flags)
const char *pat;
@@ -149,7 +150,7 @@
while (c = *pat++) {
switch (c) {
case '?':
- if (!*s || pathname && isdirsep(*s) || PERIOD(s))
+ if (!*s || ISDIRSEP(*s) || PERIOD(s))
return FNM_NOMATCH;
s++;
break;
@@ -166,7 +167,7 @@
else
return 0;
}
- else if (pathname && isdirsep(c)) {
+ else if (ISDIRSEP(c)) {
s = find_dirsep(s);
if (s)
break;
@@ -180,14 +181,14 @@
if ((c == '[' || downcase(*s) == test) &&
!fnmatch(pat, s, flags & ~FNM_PERIOD))
return 0;
- else if (pathname && isdirsep(*s))
+ else if (ISDIRSEP(*s))
break;
s++;
}
return FNM_NOMATCH;
case '[':
- if (!*s || pathname && isdirsep(*s) || PERIOD(s))
+ if (!*s || ISDIRSEP(*s) || PERIOD(s))
return FNM_NOMATCH;
pat = range(pat, *s, flags);
if (!pat)
@@ -211,7 +212,7 @@
default:
#if defined DOSISH
- if (pathname && isdirsep(c) && isdirsep(*s))
+ if (ISDIRSEP(c) && isdirsep(*s))
;
else
#endif
@@ -522,12 +523,14 @@
/* Return nonzero if S has any special globbing chars in it. */
static int
-has_magic(s, send)
+has_magic(s, send, flags)
char *s, *send;
+ int flags;
{
register char *p = s;
register char c;
int open = 0;
+ int escape = !(flags & FNM_NOESCAPE);
while ((c = *p++) != '\0') {
switch (c) {
@@ -544,7 +547,7 @@
continue;
case '\\':
- if (*p++ == '\0')
+ if (escape && *p++ == '\0')
return Qfalse;
}
@@ -610,16 +613,16 @@
#endif
static void
-glob_helper(path, flag, func, arg)
+glob_helper(path, flags, func, arg)
char *path;
- int flag;
+ int flags;
void (*func)();
VALUE arg;
{
struct stat st;
char *p, *m;
- if (!has_magic(path, 0)) {
+ if (!has_magic(path, 0, flags)) {
remove_backslashes(path);
if (stat(path, &st) == 0) {
(*func)(path, arg);
@@ -636,7 +639,7 @@
while (p) {
if (*p == '/') p++;
m = strchr(p, '/');
- if (has_magic(p, m)) {
+ if (has_magic(p, m, flags)) {
char *dir, *base, *magic, *buf;
DIR *dirp;
struct dirent *dp;
@@ -662,7 +665,7 @@
recursive = 1;
buf = ALLOC_N(char, strlen(base)+strlen(m)+3);
sprintf(buf, "%s%s", base, *base ? m : m+1);
- glob_helper(buf, flag, func, arg);
+ glob_helper(buf, flags, func, arg);
free(buf);
}
dirp = opendir(dir);
@@ -696,12 +699,12 @@
if (S_ISDIR(st.st_mode)) {
strcat(buf, "/**");
strcat(buf, m);
- glob_helper(buf, flag, func, arg);
+ glob_helper(buf, flags, func, arg);
}
free(buf);
continue;
}
- if (fnmatch(magic, dp->d_name, flag) == 0) {
+ if (fnmatch(magic, dp->d_name, flags) == 0) {
buf = ALLOC_N(char, strlen(base)+NAMLEN(dp)+2);
sprintf(buf, "%s%s%s", base, (BASE)?"/":"", dp->d_name);
if (!m) {
@@ -727,7 +730,7 @@
char *t = ALLOC_N(char, len+mlen+1);
sprintf(t, "%s%s", link->path, m);
- glob_helper(t, flag, func, arg);
+ glob_helper(t, flags, func, arg);
free(t);
}
tmp = link;
@@ -849,7 +852,7 @@
VALUE dir, str;
{
char *p, *pend;
- char buffer[MAXPATHLEN], *buf = buffer;
+ char buffer[MAXPATHLEN], *buf;
char *t;
int nest;
VALUE ary = 0;
@@ -860,6 +863,8 @@
}
if (RSTRING(str)->len >= MAXPATHLEN) {
buf = xmalloc(RSTRING(str)->len + 1);
+ } else {
+ buf = buffer;
}
p = RSTRING(str)->ptr;