[前][次][番号順一覧][スレッド一覧]

ruby-changes:7432

From: usa <ko1@a...>
Date: Sat, 30 Aug 2008 20:07:07 +0900 (JST)
Subject: [ruby-changes:7432] Ruby:r18951 (trunk): * win32/win32.c (rb_w32_open, rb_w32_read, rb_w32_write): fallback to

usa	2008-08-30 20:06:52 +0900 (Sat, 30 Aug 2008)

  New Revision: 18951

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=18951

  Log:
    * win32/win32.c (rb_w32_open, rb_w32_read, rb_w32_write): fallback to
      MSVCRT if text mode is specified. this case will not be used from
      ruby itself.

  Modified files:
    trunk/ChangeLog
    trunk/win32/win32.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 18950)
+++ ChangeLog	(revision 18951)
@@ -1,3 +1,9 @@
+Sat Aug 30 20:05:41 2008  NAKAMURA Usaku  <usa@r...>
+
+	* win32/win32.c (rb_w32_open, rb_w32_read, rb_w32_write): fallback to
+	  MSVCRT if text mode is specified. this case will not be used from
+	  ruby itself.
+
 Sat Aug 30 19:49:38 2008  NAKAMURA Usaku  <usa@r...>
 
 	* win32/win32.c (rb_w32_read): EOF is not error.
Index: win32/win32.c
===================================================================
--- win32/win32.c	(revision 18950)
+++ win32/win32.c	(revision 18951)
@@ -4007,6 +4007,15 @@
     SECURITY_ATTRIBUTES sec;
     HANDLE h;
 
+    if ((oflag & O_TEXT) || !(oflag & ~O_BINARY)) {
+	va_list arg;
+	int pmode;
+	va_start(arg, oflag);
+	pmode = va_arg(arg, int);
+	va_end(arg);
+	return _open(file, oflag, pmode);
+    }
+
     sec.nLength = sizeof(sec);
     sec.lpSecurityDescriptor = NULL;
     if (oflag & O_NOINHERIT) {
@@ -4313,6 +4322,10 @@
 	return -1;
     }
 
+    if (_osfile(fd) & FTEXT) {
+	return _read(fd, buf, size);
+    }
+
     MTHREAD_ONLY(EnterCriticalSection(&(_pioinfo(fd)->lock)));
 
     if (!size || _osfile(fd) & FEOFLAG) {
@@ -4423,6 +4436,10 @@
 	return -1;
     }
 
+    if (_osfile(fd) & FTEXT) {
+	return _write(fd, buf, size);
+    }
+
     MTHREAD_ONLY(EnterCriticalSection(&(_pioinfo(fd)->lock)));
 
     if (!size || _osfile(fd) & FEOFLAG) {

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]