Change 14485 by jhi@alpha on 2002/01/28 23:17:20
Workaround for DJGPP broken F_GETFL from Laszlo.
Affected files ...
.... //depot/perl/djgpp/djgpp.c#15 edit
.... //depot/perl/perlio.c#160 edit
Differences ...
==== //depot/perl/djgpp/djgpp.c#15 (text) ====
Index: perl/djgpp/djgpp.c
--- perl/djgpp/djgpp.c.~1~ Mon Jan 28 16:30:06 2002
+++ perl/djgpp/djgpp.c Mon Jan 28 16:30:06 2002
@@ -441,3 +441,16 @@
return res;
}
+
+int djgpp_get_stream_mode(FILE *f)
+{
+ extern char *__file_handle_modes;
+
+ int mode = __file_handle_modes[fileno(f)];
+ if (f->_flag & _IORW)
+ return mode | O_RDWR;
+ if (f->_flag & _IOWRT)
+ return mode | O_WRONLY;
+ return mode | O_RDONLY;
+}
+
==== //depot/perl/perlio.c#160 (text) ====
Index: perl/perlio.c
--- perl/perlio.c.~1~ Mon Jan 28 16:30:06 2002
+++ perl/perlio.c Mon Jan 28 16:30:06 2002
@@ -187,6 +187,9 @@
if (fd >= 0) {
char mode[8];
int omode = fcntl(fd, F_GETFL);
+#ifdef DJGPP
+ omode = djgpp_get_stream_mode(f);
+#endif
PerlIO_intmode2str(omode,mode,NULL);
/* the r+ is a hack */
return PerlIO_fdopen(fd, mode);
End of Patch.