[#22815] File.fnmatch が "*?" のパターンを正しく処理しない? — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>

山本です。

16 messages 2004/02/06
[#22819] Re: File.fnmatch が "*?" のパターンを正しく処理しない? — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/02/07

山本です。

[#22820] Re: File.fnmatch が "*?" のパターンを正しく処理しない? — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/02/07

山本です。

[#22821] Re: File.fnmatch が "*?" のパターンを正しく処理しない? — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/02/07

山本です。補足します。

[#22862] File.fnmatch と Dir.glob — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>

山本です。

87 messages 2004/02/13
[#22863] Re: File.fnmatch と Dir.glob — matz@... (Yukihiro Matsumoto) 2004/02/13

まつもと ゆきひろです

[#22864] Re: File.fnmatch とDir.glob — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/02/14

山本です。

[#22873] Re: File.fnmatch とDir.glob — matz@... (Yukihiro Matsumoto) 2004/02/14

まつもと ゆきひろです

[#22875] Re: File.fnmatch とDir.glob — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/02/14

山本です。

[#22879] Re: File.fnmatch とDir.glob — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/02/14

山本です。

[#22882] Re: File.fnmatch とDir.glob — matz@... (Yukihiro Matsumoto) 2004/02/14

まつもと ゆきひろです

[#22887] Re: File.fnmatch とDir.glob — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/02/15

山本です。

[#22901] Re: File.fnmatch とDir.glob — matz@... (Yukihiro Matsumoto) 2004/02/16

まつもと ゆきひろです

[#22905] Re: File.fnmatch とDir.glob — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/02/16

山本です。

[#22922] Re: File.fnmatch とDir.glob — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/02/17

山本です。

[#22924] Re: File.fnmatch とDir.glob — matz@... (Yukihiro Matsumoto) 2004/02/17

まつもと ゆきひろです

[#22925] Re: File.fnmatch とDir.glob — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/02/17

山本です。

[#22926] Re: File.fnmatch とDir.glob — matz@... (Yukihiro Matsumoto) 2004/02/17

まつもと ゆきひろです

[#22927] Re: File.fnmatch とDir.glob — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/02/17

山本です。

[#22942] Re: File.fnmatch とDir.glob — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/02/18

山本です。

[#22943] Re: File.fnmatch とDir.glob — matz@... (Yukihiro Matsumoto) 2004/02/18

まつもと ゆきひろです

[#22944] Re: File.fnmatch とDir.glob — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/02/18

山本です。

[#22946] Re: File.fnmatch とDir.glob — matz@... (Yukihiro Matsumoto) 2004/02/18

まつもと ゆきひろです

[#22948] Re: File.fnmatch とDir.glob — matz@... (Yukihiro Matsumoto) 2004/02/18

まつもと ゆきひろです

[#22949] Re: File.fnmatch とDir.glob — WATANABE Hirofumi <eban@...> 2004/02/18

わたなべです。

[#22950] Re: File.fnmatchとDir.glob — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/02/18

山本です。

[#22952] Re: File.fnmatchとDir.glob — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/02/18

山本です。

[#22953] Re: File.fnmatchとDir.glob — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/02/18

山本です。

[#22954] Re: File.fnmatchとDir.glob — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/02/18

山本です。

[#22955] Re: File.fnmatchとDir.glob — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/02/18

山本です。

[#22960] Re: File.fnmatchとDir.glob — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/02/19

山本です。

[#22962] Re: File.fnmatchとDir.glob — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/02/19

山本です。

[#22970] Re: File.fnmatchとDir.glob — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/02/20

山本です。

[#22972] Re: File.fnmatchとDir.glob — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/02/20

山本です。

[#22974] Re: File.fnmatchとDir.glob — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/02/20

山本です。

[#22977] Re: File.fnmatchとDir.glob — matz@... (Yukihiro Matsumoto) 2004/02/20

まつもと ゆきひろです

[#22979] Re: File.fnmatchとDir.glob — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/02/20

山本です。

[#22983] Re: File.fnmatchとDir.glob — matz@... (Yukihiro Matsumoto) 2004/02/20

まつもと ゆきひろです

[#22984] Re: File.fnmatchとDir.glob — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/02/20

山本です。

[#22989] Re: File.fnmatchとDir.glob — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/02/20

山本です。

[#22990] Re: File.fnmatchとDir.glob — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/02/20

山本です。

[#23000] Re: File.fnmatchとDir.glob — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/02/20

山本です。

[#23006] Re: File.fnmatchとDir.glob — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/02/22

山本です。

[#23007] Re: File.fnmatchとDir.glob — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/02/23

山本です。

[#23009] Re: File.fnmatchとDir.glob — matz@... (Yukihiro Matsumoto) 2004/02/23

まつもと ゆきひろです

[#23011] Re: File.fnmatchとDir.glob — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/02/23

山本です。

[#23012] Re: File.fnmatchとDir.glob — matz@... (Yukihiro Matsumoto) 2004/02/23

まつもと ゆきひろです

[#23013] Re: File.fnmatchとDir.glob — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/02/23

山本です。

[#23014] Re: File.fnmatchとDir.glob — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/02/24

山本です。

[#23015] Re: File.fnmatchとDir.glob — matz@... (Yukihiro Matsumoto) 2004/02/24

[#23016] Re: File.fnmatchとDir.glob — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/02/24

山本です。

[#23029] Re: File.fnmatchとDir.glob — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/02/26

山本です。

[#23030] Re: File.fnmatchとDir.glob — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/02/26

山本です。

[#23031] Re: File.fnmatchとDir.glob — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/02/26

山本です。

[#23113] Re: File.fnmatchとDir.glob — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/03/03

山本です。

[#23115] Re: File.fnmatchとDir.glob — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/03/04

山本です。

[#23116] Re: File.fnmatchとDir.glob — matz@... (Yukihiro Matsumoto) 2004/03/04

まつもと ゆきひろです

[#23118] Re: File.fnmatchとDir.glob — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/03/04

山本です。

[#23121] extconf results depend on rbconfig.rb (Re: Re: File.fnmatchとDir.glob) — nobu.nakada@... 2004/03/04

なかだです。

[#22877] Process.spawn & IO.popen w/o shell — nobu.nakada@...

なかだです。

25 messages 2004/02/14
[#22883] Re: Process.spawn & IO.popen w/o shell — matz@... (Yukihiro Matsumoto) 2004/02/14

まつもと ゆきひろです

[#22884] Re: Process.spawn & IO.popen w/o shell — nobu.nakada@... 2004/02/14

なかだです。

[#22886] Re: Process.spawn & IO.popen w/o shell — matz@... (Yukihiro Matsumoto) 2004/02/14

まつもと ゆきひろです

[#22928] [BUG] make distclean が失敗する — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>

山本です。

45 messages 2004/02/17
[#22929] Re: [BUG] make distclean が失敗する — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/02/17

山本です。

[#22930] Re: [BUG] make distclean が失敗する — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/02/17

山本です。

[#22932] Re: [BUG] make distclean が失敗する — "U.Nakamura" <usa@...> 2004/02/17

こんにちは、なかむら(う)です。

[#22933] Re: [BUG] make distclean が失敗する — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/02/17

山本です。

[#22934] Re: [BUG] make distclean が失敗する — "U.Nakamura" <usa@...> 2004/02/17

こんにちは、なかむら(う)です。

[#22935] Re: [BUG] make distclean が失敗する — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/02/17

山本です。

[#23034] --prefix and DESTDIR for bccwin32 (Re: Re: [BUG] make distclean が失敗する) — nobu.nakada@... 2004/02/26

なかだです。

[#23044] Re: --prefix and DESTDIR for bccwin32 (Re: Re: [BUG]make distclean が失敗する) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/02/27

山本です。

[#23046] Re: --prefix and DESTDIR for bccwin32 (Re: Re:[BUG]make distclean が失敗する) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/02/27

山本です。

[#23054] Re: --prefix and DESTDIR for bccwin32 (Re: Re:[BUG]make distclean が失敗する) — "U.Nakamura" <usa@...> 2004/02/28

こんにちは、なかむら(う)です。

[#23055] Re: --prefix and DESTDIR for bccwin32 (Re:Re:[BUG]make distclean が失敗する) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/02/28

山本です。

[#23056] Re: --prefix and DESTDIR for bccwin32 (Re:Re:[BUG]makedistclean が失敗する) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/02/28

山本です。

[#23059] Re: --prefix and DESTDIR for bccwin32(Re:Re:[BUG]makedistclean が失敗する) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/02/28

山本です。

[#23057] Re: --prefix and DESTDIR for bccwin32 (Re:Re:[BUG]make distclean が失敗する) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/02/28

山本です。

[#23067] Re: --prefix and DESTDIR for bccwin32 (Re:Re:[BUG]make distclean が失敗する) — "U.Nakamura" <usa@...> 2004/02/29

こんにちは、なかむら(う)です。

[#23071] Re: --prefix and DESTDIR for bccwin32 (Re:Re:[BUG]makedistclean が失敗する) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/02/29

山本です。

[#23073] Re: --prefix and DESTDIR for bccwin32(Re:Re:[BUG]makedistclean が失敗する) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/02/29

山本です。

[#23079] enable-install-rdoc (was Re: --prefix and DESTDIR for bccwin32) — "U.Nakamura" <usa@...> 2004/03/01

こんにちは、なかむら(う)です。

[#23081] Re: enable-install-rdoc (was Re: --prefix and DESTDIR for bccwin32) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/03/01

山本です。

[#22956] Dir#glob proposal — nobu.nakada@...

なかだです。

17 messages 2004/02/18
[#22958] Re: Dir#glob proposal — matz@... (Yukihiro Matsumoto) 2004/02/18

まつもと ゆきひろです

[#23038] Re: [ruby-cvs] ruby: * eval.c (localjump_destination): lambda should not interfere — nobu.nakada@...

なかだです。

10 messages 2004/02/27

[ruby-dev:23018] Re: IO::for_io and TCPServer#bind

From: nobu.nakada@...
Date: 2004-02-25 11:09:47 UTC
List: ruby-dev #23018
なかだです。

At Wed, 10 Dec 2003 17:38:00 +0900,
Nobuyoshi-Nakada wrote in [ruby-dev:22216]:
> > その後考えるにこっちの方が良いだろうという気になりました。
> > for_fdをobsolteにしてこっちを推奨するのが良いと思います。た
> > だ、IO.for_ioってのは名前があんまりなので別名を希望します。
> 
> IO.for_fdって事実上IO.newの別名なんですよね。IO.newでIOを渡され
> たらfor_io相当ではどうでしょうか。

すっかり忘れてましたが、こんな感じです。


* gc.c (obj_free), io.c (rb_io_fptr_finalize), rubyio.h (OpenFile):
  sharing OpenFile.

* io.c (rb_io_initialize): accept IO instance.  [ruby-dev:22195]


Index: gc.c
===================================================================
RCS file: /cvs/ruby/src/ruby/gc.c,v
retrieving revision 1.170
diff -u -2 -p -d -r1.170 gc.c
--- gc.c	22 Jan 2004 08:31:32 -0000	1.170
+++ gc.c	25 Feb 2004 10:59:49 -0000
@@ -1179,5 +1179,4 @@ obj_free(obj)
 	if (RANY(obj)->as.file.fptr) {
 	    rb_io_fptr_finalize(RANY(obj)->as.file.fptr);
-	    RUBY_CRITICAL(free(RANY(obj)->as.file.fptr));
 	}
 	break;
Index: io.c
===================================================================
RCS file: /cvs/ruby/src/ruby/io.c,v
retrieving revision 1.260
diff -u -2 -p -d -r1.260 io.c
--- io.c	20 Feb 2004 03:57:36 -0000	1.260
+++ io.c	25 Feb 2004 11:08:23 -0000
@@ -1781,4 +1781,5 @@ rb_io_fptr_finalize(fptr)
 {
     if (!fptr) return;
+    if (fptr->refcnt <= 0 || --fptr->refcnt) return;
     if (fptr->path) {
 	free(fptr->path);
@@ -1788,4 +1789,5 @@ rb_io_fptr_finalize(fptr)
 
     rb_io_fptr_cleanup(fptr, Qtrue);
+    free(fptr);
 }
 
@@ -3060,4 +3062,11 @@ rb_io_get_io(io)
 }
 
+static VALUE
+rb_io_check_io(io)
+    VALUE io;
+{
+    return rb_check_convert_type(io, T_FILE, "IO", "to_io");
+}
+
 static char*
 rb_io_mode_string(fptr)
@@ -3752,7 +3761,10 @@ prep_path(io, path)
  *  
  *  Returns a new <code>IO</code> object (a stream) for the given
- *  integer file descriptor and mode string. See also
- *  <code>IO#fileno</code> and <code>IO::for_fd</code>.
- *     
+ *  <code>IO</code> object or integer file descriptor and mode
+ *  string. See also <code>IO#fileno</code> and
+ *  <code>IO::for_fd</code>.
+ *
+ *     puts IO.new($stdout).fileno # => 1
+ *
  *     a = IO.new(2,"w")      # '2' is standard error
  *     $stderr.puts "Hello"
@@ -3771,12 +3783,22 @@ rb_io_initialize(argc, argv, io)
     VALUE io;
 {
-    VALUE fnum, mode;
-    OpenFile *fp;
-    int fd, flags;
+    VALUE fnum, mode, orig;
+    OpenFile *fp, *ofp;
+    int fd, flags, fmode;
     char mbuf[4];
 
     rb_secure(4);
     rb_scan_args(argc, argv, "11", &fnum, &mode);
-    fd = NUM2INT(fnum);
+    orig = rb_io_check_io(fnum);
+    if (NIL_P(orig)) {
+	fd = NUM2INT(fnum);
+    }
+    else {
+	GetOpenFile(orig, ofp);
+	if (ofp->refcnt == LONG_MAX) {
+	    VALUE s = rb_inspect(orig);
+	    rb_raise(rb_eIOError, "too many shared IO for %s", StringValuePtr(s));
+	}
+    }
     if (argc == 2) {
 	if (FIXNUM_P(mode)) {
@@ -3787,6 +3809,7 @@ rb_io_initialize(argc, argv, io)
 	    flags = rb_io_mode_modenum(RSTRING(mode)->ptr);
 	}
+	fmode = rb_io_modenum_flags(flags);
     }
-    else {
+    else if (!ofp) {
 #if defined(HAVE_FCNTL) && defined(F_GETFL)
 	flags = fcntl(fd, F_GETFL);
@@ -3794,8 +3817,30 @@ rb_io_initialize(argc, argv, io)
 	flags = O_RDONLY;
 #endif
+	fmode = rb_io_modenum_flags(flags);
+    }
+    if (!ofp) {
+	MakeOpenFile(io, fp);
+	fp->mode = fmode;
+	fp->f = rb_fdopen(fd, rb_io_modenum_mode(flags, mbuf));
+    }
+    else {
+	if (argc == 2) {
+	    if ((ofp->mode ^ fmode) & (FMODE_READWRITE|FMODE_BINMODE)) {
+		if (FIXNUM_P(mode)) {
+		    rb_raise(rb_eArgError, "incompatible mode 0%o", flags);
+		}
+		else {
+		    rb_raise(rb_eArgError, "incompatible mode %s", RSTRING(mode)->ptr);
+		}
+	    }
+	}
+	if (RFILE(io)->fptr) {
+	    rb_io_close(io);
+	    free(RFILE(io)->fptr);
+	    RFILE(io)->fptr = 0;
+	}
+	ofp->refcnt++;
+	RFILE(io)->fptr = ofp;
     }
-    MakeOpenFile(io, fp);
-    fp->mode = rb_io_modenum_flags(flags);
-    fp->f = rb_fdopen(fd, rb_io_modenum_mode(flags, mbuf));
 
     return io;
Index: rubyio.h
===================================================================
RCS file: /cvs/ruby/src/ruby/rubyio.h,v
retrieving revision 1.23
diff -u -2 -p -d -r1.23 rubyio.h
--- rubyio.h	14 Apr 2003 09:04:43 -0000	1.23
+++ rubyio.h	10 Dec 2003 07:45:40 -0000
@@ -25,4 +25,5 @@ typedef struct OpenFile {
     char *path;			/* pathname for file */
     void (*finalize) _((struct OpenFile*,int)); /* finalize proc */
+    long refcnt;
 } OpenFile;
 
@@ -51,4 +52,5 @@ typedef struct OpenFile {
     fp->path = NULL;\
     fp->finalize = 0;\
+    fp->refcnt = 1;\
 } while (0)
 


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

In This Thread