Revision: 1061 http://trac.macosforge.org/projects/ruby/changeset/1061 Author: lsansonetti@apple.com Date: 2009-03-22 12:39:00 -0700 (Sun, 22 Mar 2009) Log Message: ----------- reverted r1059 because it's bad (breaks #require) Modified Paths: -------------- MacRuby/branches/experimental/io.c Modified: MacRuby/branches/experimental/io.c =================================================================== --- MacRuby/branches/experimental/io.c 2009-03-22 19:09:29 UTC (rev 1060) +++ MacRuby/branches/experimental/io.c 2009-03-22 19:39:00 UTC (rev 1061) @@ -240,6 +240,38 @@ #define IS_PREP_STDIO(f) ((f)->mode & FMODE_PREP) #define PREP_STDIO_NAME(f) ((f)->path) +static inline int +rb_io_modenum_flags(int mode) +{ + int flags = 0; + + switch (mode & (O_RDONLY|O_WRONLY|O_RDWR)) { + case O_RDONLY: + flags = FMODE_READABLE; + break; + case O_WRONLY: + flags = FMODE_WRITABLE; + break; + case O_RDWR: + flags = FMODE_READWRITE; + break; + } + + if (mode & O_APPEND) { + flags |= FMODE_APPEND; + } + if (mode & O_CREAT) { + flags |= FMODE_CREATE; + } +#ifdef O_BINARY + if (mode & O_BINARY) { + flags |= FMODE_BINMODE; + } +#endif + + return flags; +} + /* * call-seq: * IO.try_convert(obj) -> io or nil @@ -341,7 +373,6 @@ rb_io_fptr_finalize(rb_io_t *io_struct) { io_struct_close(io_struct, true, true); - if(io_struct->fp != NULL) pclose(io_struct->fp); return 1; } @@ -1058,12 +1089,7 @@ static VALUE rb_io_gets_m(VALUE io, SEL sel, int argc, VALUE *argv) { - VALUE separator, limit; - rb_scan_args(argc, argv, "02", &separator, &limit); - // TODO: Actually take the separator into account. - VALUE result = rb_io_gets(io, sel); - rb_lastline_set(result); // TODO: Implement this in roxor - return result; + rb_notimplement(); } /* @@ -1624,7 +1650,7 @@ if (path != NULL && strcmp(path, "-") != 0) { klass = rb_cFile; } - return prep_io(fd, convert_fmode_to_oflags(mode), klass); + return prep_io(fd, rb_io_modenum_flags(mode), klass); } static VALUE