OSDN Git Service

2009-07-22 Jerry DeLisle <jvdelisle@gcc.gnu.org>
authorjvdelisle <jvdelisle@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 23 Jul 2009 00:58:46 +0000 (00:58 +0000)
committerjvdelisle <jvdelisle@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 23 Jul 2009 00:58:46 +0000 (00:58 +0000)
PR libfortran/32784
* unix.c (regular_file): Check for CONIN$ CONOUT$, and CONERR$ and open
the respective /dev/conin or /dev/conout devices.  This is Cygwin
specific.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@149970 138bc75d-0d04-0410-961f-82ee72b054a4

libgfortran/ChangeLog
libgfortran/io/unix.c

index 8231ed1..5bb68ce 100644 (file)
@@ -1,3 +1,10 @@
+2009-07-22  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+       PR libfortran/32784
+       * unix.c (regular_file): Check for CONIN$ CONOUT$, and CONERR$ and open
+       the respective /dev/conin or /dev/conout devices.  This is Cygwin
+       specific.
+
 2009-07-19  Thomas Koenig  <tkoenig@gcc.gnu.org>
 
        PR libfortran/34670
index a7eb4e3..8c7bf86 100644 (file)
@@ -897,6 +897,26 @@ regular_file (st_parameter_open *opp, unit_flags *flags)
       return -1;
     }
 
+#ifdef __CYGWIN__
+  if (opp->file_len == 7)
+    {
+      if (strncmp (path, "CONOUT$", 7) == 0
+         || strncmp (path, "CONERR$", 7) == 0)
+       {
+         fd = open ("/dev/conout", O_WRONLY);
+         flags->action = ACTION_WRITE;
+         return fd;
+       }
+    }
+
+  if (opp->file_len == 6 && strncmp (path, "CONIN$", 6) == 0)
+    {
+      fd = open ("/dev/conin", O_RDONLY);
+      flags->action = ACTION_READ;
+      return fd;
+    }
+#endif
+
   rwflag = 0;
 
   switch (flags->action)