summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-10-18 02:29:43 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-10-18 02:29:43 +0000
commit52f1aa700fa6344d1c62d676400d426db4f53171 (patch)
tree7c690d94ace0cbe00e4f39950ef621fb8c41885e
parent875c445cec6cd631664f25ddfbd871e680fb77b7 (diff)
downloadruby-52f1aa700fa6344d1c62d676400d426db4f53171.tar.gz
ruby-52f1aa700fa6344d1c62d676400d426db4f53171.tar.xz
ruby-52f1aa700fa6344d1c62d676400d426db4f53171.zip
* io.c (rb_io_flags_mode, rb_io_mode_flags): distinguish whether file
not existing is created. [ruby-dev:24505] git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@7059 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog5
-rw-r--r--io.c7
-rw-r--r--rubyio.h1
3 files changed, 11 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index b447a6829..247255860 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Mon Oct 18 11:29:32 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_flags_mode, rb_io_mode_flags): distinguish whether file
+ not existing is created. [ruby-dev:24505]
+
Mon Oct 18 07:26:21 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* file.c (rb_file_truncate): discard read buffer before truncation.
diff --git a/io.c b/io.c
index 1f2a35162..e1acaca1a 100644
--- a/io.c
+++ b/io.c
@@ -2304,6 +2304,9 @@ rb_io_flags_mode(flags)
case FMODE_WRITABLE:
return MODE_BINMODE("w", "wb");
case FMODE_READWRITE:
+ if (flags & FMODE_CREATE) {
+ return MODE_BINMODE("w+", "wb+");
+ }
return MODE_BINMODE("r+", "rb+");
}
rb_raise(rb_eArgError, "illegal access mode %o", flags);
@@ -2322,10 +2325,10 @@ rb_io_mode_flags(mode)
flags |= FMODE_READABLE;
break;
case 'w':
- flags |= FMODE_WRITABLE;
+ flags |= FMODE_WRITABLE | FMODE_CREATE;
break;
case 'a':
- flags |= FMODE_WRITABLE | FMODE_APPEND;
+ flags |= FMODE_WRITABLE | FMODE_APPEND | FMODE_CREATE;
break;
default:
error:
diff --git a/rubyio.h b/rubyio.h
index efafe0c6a..0b77fa179 100644
--- a/rubyio.h
+++ b/rubyio.h
@@ -31,6 +31,7 @@ typedef struct OpenFile {
#define FMODE_WRITABLE 2
#define FMODE_READWRITE 3
#define FMODE_APPEND 64
+#define FMODE_CREATE 128
#define FMODE_BINMODE 4
#define FMODE_SYNC 8
#define FMODE_WBUF 16