[#12387] reducing logical operation — "Nobuyoshi.Nakada" <nobu.nakada@...>

なかだです。

17 messages 2001/03/07
[#12388] Re: reducing logical operation — EGUCHI Osamu <eguchi@...> 2001/03/07

えぐち@エスアンドイー です。

[#12389] Re: reducing logical operation — nobu.nakada@... 2001/03/07

なかだです。

[#12391] Re: reducing logical operation — EGUCHI Osamu <eguchi@...> 2001/03/07

えぐち@エスアンドイー です。

[#12404] fork in threads — keiju@... (Keiju ISHITSUKA)

けいじゅ@日本ラショナルソフトウェアです.

14 messages 2001/03/09

[#12405] at_exit — keiju@... (Keiju ISHITSUKA)

けいじゅ@日本ラショナルソフトウェアです.

15 messages 2001/03/09
[#12409] Re: at_exit — matz@... (Yukihiro Matsumoto) 2001/03/10

まつもと ゆきひろです

[#12411] Re: at_exit — keiju@... (石塚圭樹) 2001/03/10

けいじゅ@日本ラショナルソフトウェアです.

[#12425] bignum % の結果が負数になることがある — Hisayasu Nakao <h-nakao@...>

最近、ruby-1.6.2を使い出したばかりの中尾です。

39 messages 2001/03/12
[#12427] Re: bignum % の結果が負数になることがある — WATANABE Hirofumi <eban@...> 2001/03/12

わたなべです。

[#12463] Re: bignum % の結果が負数になることがある — Takahiro Kambe <taca@...> 2001/03/13

In message <4518-Mon12Mar2001145434+0900-eban@os.rim.or.jp>

[#12464] Re: bignum % の結果が負数になることがある — matz@... (Yukihiro Matsumoto) 2001/03/13

まつもと ゆきひろです

[#12466] Re: bignum % の結果が負数になることがある — Takahiro Kambe <taca@...> 2001/03/13

In message <984469222.234203.1007.nullmailer@ev.netlab.zetabits.com>

[#12475] Re: bignum % の結果が負数になることがある — matz@... (Yukihiro Matsumoto) 2001/03/14

まつもと ゆきひろです

[#12476] Re: bignum % の結果が負数になることがある — Takahiro Kambe <taca@...> 2001/03/14

In message <984550885.417146.3670.nullmailer@ev.netlab.zetabits.com>

[#12480] Re: bignum % の結果が負数になることがある — matz@... (Yukihiro Matsumoto) 2001/03/14

まつもと ゆきひろです

[#12481] Re: bignum % の結果が負数になることがある — Takahiro Kambe <taca@...> 2001/03/14

In message <984553493.009507.3747.nullmailer@ev.netlab.zetabits.com>

[#12488] Re: bignum % の結果が負数になることがある — matz@... (Yukihiro Matsumoto) 2001/03/14

まつもと ゆきひろです

[#12493] Re: bignum % の結果が負数になることがある — Takahiro Kambe <taca@...> 2001/03/14

In message <984579430.080967.5569.nullmailer@ev.netlab.zetabits.com>

[#12578] require 'win32api' — Kazuhiro NISHIYAMA <zn@...>

require 'win32api'のエラーメッセージがわかりにくいと

21 messages 2001/03/20
[#12579] Re: require 'win32api' — nobu.nakada@... 2001/03/20

なかだです。

[#12598] Re: require 'win32api' — nobu.nakada@... 2001/03/21

なかだです。

[#12582] finalizer problem — keiju@... (Keiju ISHITSUKA)

けいじゅ@日本ラショナルソフトウェアです.

20 messages 2001/03/20
[#12583] Re: finalizer problem — matz@... (Yukihiro Matsumoto) 2001/03/20

まつもと ゆきひろです

[#12585] Re: finalizer problem — keiju@... (石塚圭樹) 2001/03/20

けいじゅ@日本ラショナルソフトウェアです.

[#12591] Re: finalizer problem — matz@... (Yukihiro Matsumoto) 2001/03/20

まつもと ゆきひろです

[#12619] Re: finalizer problem — keiju@... (石塚圭樹) 2001/03/22

けいじゅ@日本ラショナルソフトウェアです.

[#12605] extern inline (ruby.h) ruby-1.6.3 — WATANABE Tetsuya <tetsu@...>

渡辺哲也です。

17 messages 2001/03/22
[#12606] Re: extern inline (ruby.h) ruby-1.6.3 — matz@... (Yukihiro Matsumoto) 2001/03/22

まつもと ゆきひろです

[#12607] Re: extern inline (ruby.h) ruby-1.6.3 — WATANABE Tetsuya <tetsu@...> 2001/03/22

渡辺哲也です。

[#12608] Re: extern inline (ruby.h) ruby-1.6.3 — matz@... (Yukihiro Matsumoto) 2001/03/22

まつもと ゆきひろです

[#12674] Was: [rubyist:0454] Re: to_str — Kenichi Komiya <kom@...1.accsnet.ne.jp>

21 messages 2001/03/25
[#12675] Re: Was: [rubyist:0454] Re: to_str — matz@... (Yukihiro Matsumoto) 2001/03/26

まつもと ゆきひろです

[#12678] Re: Was: [rubyist:0454] Re: to_str — Kenichi Komiya <kom@...1.accsnet.ne.jp> 2001/03/26

[#12681] Re: Was: [rubyist:0454] Re: to_str — matz@... (Yukihiro Matsumoto) 2001/03/26

まつもと ゆきひろです

[#12687] Re: Was: [rubyist:0454] Re: to_str — Kenichi Komiya <kom@...1.accsnet.ne.jp> 2001/03/27

[#12688] Re: Was: [rubyist:0454] Re: to_str — matz@... (Yukihiro Matsumoto) 2001/03/28

まつもと ゆきひろです

[#12710] Re: Was: [rubyist:0454] Re: to_str — Kenichi Komiya <kom@...1.accsnet.ne.jp> 2001/03/31

[ruby-dev:12550] Re: シンボリックリンクを含むパスを渡した時の Dir.glob() の動作

From: nobu.nakada@...
Date: 2001-03-18 17:05:11 UTC
List: ruby-dev #12550
なかだです。

At Sat, 17 Mar 2001 11:18:25 +0900,
matz@zetabits.com (Yukihiro Matsumoto) wrote:
> |  File.glob()に渡すパス名の一部がシンボリックリンクになっている時に、
> |ファイル名が展開されません。
> 
> **はシンボリックリンクをたどってはいけないんですが、*はシン
> ボリックリンクをたどるべきですよね。
> 
> |  以下のパッチでどうでしょうか?
> 
> これだとたぶんやりすぎで、シンボリックリンクでディレクトリが
> 再帰してるときに**で無限ループに入っちゃうような気がします。

  たぶんもう一ヶ所 stat() に戻さないと symlink/* みたいのが通り
ません。
  それと -v を付けると山のように warning が出ます。


Index: dir.c
===================================================================
RCS file: /cvs/ruby/src/ruby/dir.c,v
retrieving revision 1.35
diff -u -2 -p -r1.35 dir.c
--- dir.c	2001/03/16 08:30:09	1.35
+++ dir.c	2001/03/18 16:54:28
@@ -70,4 +70,5 @@ char *strchr _((char*,char));
 #define FNM_PERIOD	0x04
 #define FNM_NOCASE	0x08
+#define FNM_NOWARN	0x10
 
 #define FNM_NOMATCH	1
@@ -612,5 +613,5 @@ remove_backslashes(p)
 
 
-void
+int
 rb_glob_helper(path, flag, func, arg)
     char *path;
@@ -621,4 +622,5 @@ rb_glob_helper(path, flag, func, arg)
     struct stat st;
     char *p, *m;
+    int found = Qfalse;
 
     if (!has_magic(path, 0)) {
@@ -626,11 +628,12 @@ rb_glob_helper(path, flag, func, arg)
 	if (rb_sys_stat(path, &st) == 0) {
 	    (*func)(path, arg);
+	    return Qtrue;
 	}
-	else {
+	else if (!(flag & FNM_NOWARN)) {
 	    /* In case stat error is other than ENOENT and
 	       we may want to know what is wrong. */
 	    rb_sys_warning(path);
 	}
-	return;
+	return Qfalse;
     }
 
@@ -655,5 +658,5 @@ rb_glob_helper(path, flag, func, arg)
 
 	    magic = extract_elem(p);
-	    if (lstat(dir, &st) < 0) {
+	    if (stat(dir, &st) < 0) {
 	        rb_sys_warning(dir);
 	        free(base);
@@ -665,5 +668,6 @@ rb_glob_helper(path, flag, func, arg)
 		    buf = ALLOC_N(char, strlen(base)+strlen(m)+3);
 		    sprintf(buf, "%s%s", base, *base ? m : m+1);
-		    rb_glob_helper(buf, flag, func, arg);
+		    if (rb_glob_helper(buf, flag|FNM_NOWARN, func, arg))
+			found = Qtrue;
 		    free(buf);
 		}
@@ -691,5 +695,5 @@ rb_glob_helper(path, flag, func, arg)
 			continue;
 		    buf = ALLOC_N(char, strlen(base)+NAMLEN(dp)+strlen(m)+6);
-		    sprintf(buf, "%s%s%s/", base, (BASE)?"/":"", dp->d_name);
+		    sprintf(buf, "%s%s%s", base, (BASE)?"/":"", dp->d_name);
 		    if (lstat(buf, &st) < 0) {
 		        rb_sys_warning(buf);
@@ -697,7 +701,8 @@ rb_glob_helper(path, flag, func, arg)
 		    }
 		    if (S_ISDIR(st.st_mode)) {
-		        strcat(buf, "**");
+		        strcat(buf, "/**");
 			strcat(buf, m);
-			rb_glob_helper(buf, flag, func, arg);
+			if (rb_glob_helper(buf, flag|FNM_NOWARN, func, arg))
+			    found = Qtrue;
 		    }
 		    free(buf);
@@ -710,4 +715,5 @@ rb_glob_helper(path, flag, func, arg)
 			(*func)(buf, arg);
 			free(buf);
+			found = Qtrue;
 			continue;
 		    }
@@ -722,5 +728,5 @@ rb_glob_helper(path, flag, func, arg)
 	    free(magic);
 	    while (link) {
-		if (lstat(link->path, &st) == 0) {
+		if (stat(link->path, &st) == 0) {
 		    if (S_ISDIR(st.st_mode)) {
 			int len = strlen(link->path);
@@ -729,5 +735,6 @@ rb_glob_helper(path, flag, func, arg)
 
 			sprintf(t, "%s%s", link->path, m);
-			rb_glob_helper(t, flag, func, arg);
+			if (rb_glob_helper(t, flag|FNM_NOWARN, func, arg))
+			    found = Qtrue;
 			free(t);
 		    }
@@ -741,7 +748,13 @@ rb_glob_helper(path, flag, func, arg)
 		}
 	    }
+	    break;
 	}
 	p = m;
     }
+    if (!(found || (flag & FNM_NOWARN))) {
+	errno = ENOENT;
+	rb_sys_warning(path);
+    }
+    return found;
 }
 


-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦

In This Thread