--- unix.c~	2006-02-14 20:21:14.000000000 +0000
+++ unix.c	2006-02-20 20:09:54.000000000 +0000
@@ -81,6 +81,10 @@
 #define S_IWOTH 0
 #endif
 
+#ifdef __DJGPP__
+#include <io.h>
+#endif
+
 /* This implementation of stream I/O is based on the paper:
  *
  *  "Exploiting the advantages of mapped files for stream I/O",
@@ -1072,7 +1076,12 @@
 
   template = get_mem (strlen (tempdir) + 20);
 
+#ifdef __DJGPP__
+  /* Default filename is too long for DOS */
+  st_sprintf (template, "%s/gfXXXXXX", tempdir);
+#else
   st_sprintf (template, "%s/gfortrantmpXXXXXX", tempdir);
+#endif
 
 #ifdef HAVE_MKSTEMP
 
@@ -1263,6 +1272,13 @@
       internal_error (&opp->common, "open_external(): Bad action");
     }
 
+#ifdef __DJGPP__
+  if (flags->form == FORM_UNFORMATTED)
+    {
+      setmode (fd, O_BINARY);
+    }
+#endif
+
   return fd_to_stream (fd, prot);
 }
 


syntax highlighted by Code2HTML, v. 0.9.1