[#3907] Obtaining mode information on an IO object — Jos Backus <jos@...>

The attached patch implements IO#mode. This method returns the mode the IO

17 messages 2004/12/06
[#3909] Re: [patch] Obtaining mode information on an IO object — nobu.nokada@... 2004/12/07

Hi,

[#3910] Re: [patch] Obtaining mode information on an IO object — Jos Backus <jos@...> 2004/12/07

On Tue, Dec 07, 2004 at 09:25:13AM +0900, nobu.nokada@softhome.net wrote:

[#3925] Re: [patch] Obtaining mode information on an IO object — James Britt <ruby@...> 2004/12/09

Jos Backus wrote:

[#4009] cgi.rb -- more GET/POST stuff — mde@...26.com

First of all, I think it would be great, as Eustaquio suggests, to

17 messages 2004/12/23
[#4016] Re: [PATCH] cgi.rb -- more GET/POST stuff — Francis Hwang <sera@...> 2004/12/24

GETs and POSTs are defined to be fairly different actions. I'd read

[#4027] Allowing custom number literal suffixes? — Florian Gro<florgro@...>

Moin!

35 messages 2004/12/27
[#4070] Re: Allowing custom number literal suffixes? — nobu.nokada@... 2005/01/02

Hi,

[#4072] Re: Allowing custom number literal suffixes? — Mathieu Bouchard <matju@...> 2005/01/02

[#4079] Re: Allowing custom number literal suffixes? — Florian Gro<florgro@...> 2005/01/03

Mathieu Bouchard wrote:

[#4081] Re: Allowing custom number literal suffixes? — Mathieu Bouchard <matju@...> 2005/01/03

[#4082] Re: Allowing custom number literal suffixes? — Florian Gro<florgro@...> 2005/01/03

Mathieu Bouchard wrote:

[#4084] Re: Allowing custom number literal suffixes? — Brent Roman <brent@...> 2005/01/04

I'm not sure I would advocate making Ruby's grammar even more

[#4086] Re: Allowing custom number literal suffixes? — Mathieu Bouchard <matju@...> 2005/01/04

[#4033] Garbage collection trouble — Christian Neukirchen <chneukirchen@...>

Hello,

13 messages 2004/12/27

[patch] Obtaining mode information on an IO object

From: Jos Backus <jos@...>
Date: 2004-12-06 19:22:22 UTC
List: ruby-core #3907
The attached patch implements IO#mode. This method returns the mode the IO
object was opened with as a String. Example:

    f = File.new("testfile")
    f.mode   #=> "r"

Please consider incorporating this into Ruby. Thank you.

-- 
Jos Backus                       _/  _/_/_/      Sunnyvale, CA
                                _/  _/   _/
                               _/  _/_/_/
                          _/  _/  _/    _/
jos at catnook.com        _/_/   _/_/_/          require 'std/disclaimer'

Attachments (1)

io.c.mode.diff (1.26 KB, text/x-diff)
Index: io.c
===================================================================
RCS file: /src/ruby/io.c,v
retrieving revision 1.347
diff -u -r1.347 io.c
--- io.c	6 Dec 2004 15:31:26 -0000	1.347
+++ io.c	6 Dec 2004 19:12:07 -0000
@@ -2503,6 +2503,35 @@
     return NULL;		/* not reached */
 }
 
+/*
+ *  call-seq:
+ *     ios.mode    => String
+ *
+ *  Returns the open mode associated with <em>ios</em> as a String.
+ *
+ *     f = File.new("testfile")
+ *     f.mode   #=> "r"
+ */
+
+VALUE
+rb_io_mode(io)
+    VALUE io;
+{
+    OpenFile *fptr;
+    const char *mode;
+    VALUE str = Qnil;
+    int len;
+
+    GetOpenFile(io, fptr);
+    mode = rb_io_flags_mode(fptr->mode);
+    len = strlen(mode);
+    str = rb_str_buf_new(len);
+    memcpy(RSTRING(str)->ptr, mode, len);
+    RSTRING(str)->len = len;
+    RSTRING(str)->ptr[len] = '\0';
+    return str;
+}
+
 static int
 rb_sysopen(fname, flags, mode)
     char *fname;
@@ -5549,6 +5578,7 @@
     rb_define_method(rb_cIO, "pos=", rb_io_set_pos, 1);
     rb_define_method(rb_cIO, "eof", rb_io_eof, 0);
     rb_define_method(rb_cIO, "eof?", rb_io_eof, 0);
+    rb_define_method(rb_cIO, "mode", rb_io_mode, 0);
 
     rb_define_method(rb_cIO, "close", rb_io_close_m, 0);
     rb_define_method(rb_cIO, "closed?", rb_io_closed, 0);

In This Thread

Prev Next