summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter J. Farley III <pjfarley@banet.net>2000-10-16 14:15:59 -0400
committerJarkko Hietaniemi <jhi@iki.fi>2000-10-16 22:45:16 +0000
commit05af4e39b4c15021ef2967b252f6274e0fb723b9 (patch)
treedde03191911ab8232b20d7f251988faedd92106e
parent14638679dafeb8e4998a4e631fea795c5b015a16 (diff)
downloadperl-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.c19
-rw-r--r--dosish.h6
-rwxr-xr-xt/io/open.t4
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;
+}
diff --git a/dosish.h b/dosish.h
index 08b48fa0fe..5f12b9d1b2 100644
--- a/dosish.h
+++ b/dosish.h
@@ -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;
}