diff options
author | Peter J. Farley III <pjfarley@banet.net> | 2000-10-16 14:15:59 -0400 |
---|---|---|
committer | Jarkko Hietaniemi <jhi@iki.fi> | 2000-10-16 22:45:16 +0000 |
commit | 05af4e39b4c15021ef2967b252f6274e0fb723b9 (patch) | |
tree | dde03191911ab8232b20d7f251988faedd92106e | |
parent | 14638679dafeb8e4998a4e631fea795c5b015a16 (diff) | |
download | perl-05af4e39b4c15021ef2967b252f6274e0fb723b9.tar.gz |
[ID 20001016.012] [PATCHes Included]OK: perl v5.7.0 on dos-djgpp djgpp
Message-Id: <4.3.1.0.20001016180235.00ac65a0@pop5.banet.net>
p4raw-id: //depot/perl@7350
-rw-r--r-- | djgpp/djgpp.c | 19 | ||||
-rw-r--r-- | dosish.h | 6 | ||||
-rwxr-xr-x | t/io/open.t | 4 |
3 files changed, 26 insertions, 3 deletions
diff --git a/djgpp/djgpp.c b/djgpp/djgpp.c index c928851b76..80a627e518 100644 --- a/djgpp/djgpp.c +++ b/djgpp/djgpp.c @@ -433,3 +433,22 @@ Perl_DJGPP_init (int *argcp,char ***argvp) strcpy (perlprefix,".."); } +int +djgpp_fflush (FILE *fp) +{ + int res; + + if ((res = fflush(fp)) == 0 && fp) { + Stat_t s; + if (Fstat(fileno(fp), &s) == 0 && !S_ISSOCK(s.st_mode)) + res = fsync(fileno(fp)); + } +/* + * If the flush succeeded but set end-of-file, we need to clear + * the error because our caller may check ferror(). BTW, this + * probably means we just flushed an empty file. + */ + if (res == 0 && fp && ferror(fp) == EOF) clearerr(fp); + + return res; +} @@ -100,7 +100,11 @@ #define fwrite1 fwrite #define Fstat(fd,bufptr) fstat((fd),(bufptr)) -#define Fflush(fp) fflush(fp) +#ifdef DJGPP +# define Fflush(fp) djgpp_fflush(fp) +#else +# define Fflush(fp) fflush(fp) +#endif #define Mkdir(path,mode) mkdir((path),(mode)) #ifndef WIN32 diff --git a/t/io/open.t b/t/io/open.t index b224cceb77..01902812e2 100755 --- a/t/io/open.t +++ b/t/io/open.t @@ -268,13 +268,13 @@ ok; { local *F; for (1..2) { - open(F, "echo #foo|") or print "not "; + open(F, "echo \\#foo|") or print "not "; print <F>; close F; } ok; for (1..2) { - open(F, "-|", "echo #foo") or print "not "; + open(F, "-|", "echo \\#foo") or print "not "; print <F>; close F; } |