From 7bef35dc53e91566f1bb8c51cce5ef87123ac4df Mon Sep 17 00:00:00 2001
From: sof <unknown>
Date: Sun, 19 Sep 1999 19:27:10 +0000
Subject: [PATCH] [project @ 1999-09-19 19:27:10 by sof] IOExts.hSetBinaryMode
 wrapper

---
 ghc/lib/std/cbits/setBinaryMode.c | 38 +++++++++++++++++++++++++++++++
 1 file changed, 38 insertions(+)
 create mode 100644 ghc/lib/std/cbits/setBinaryMode.c

diff --git a/ghc/lib/std/cbits/setBinaryMode.c b/ghc/lib/std/cbits/setBinaryMode.c
new file mode 100644
index 000000000000..641e999a551f
--- /dev/null
+++ b/ghc/lib/std/cbits/setBinaryMode.c
@@ -0,0 +1,38 @@
+/* 
+ * (c) The GRASP/AQUA Project, Glasgow University, 1999
+ *
+ * $Id: setBinaryMode.c,v 1.1 1999/09/19 19:27:10 sof Exp $
+ *
+ * hSetBinaryMode runtime support
+ */
+
+#include "Rts.h"
+#include "stgio.h"
+
+#ifdef HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
+
+#ifdef _WIN32
+#include <io.h>
+#endif
+
+StgInt
+setBinaryMode__(ptr,flg)
+StgForeignPtr ptr;
+StgInt flg;
+{
+  IOFileObject* fo = (IOFileObject*)ptr;
+  int rc;
+
+  rc = flushBuffer(ptr);
+  if (rc < 0) return rc;
+
+#ifdef _WIN32
+  setmode ( fo->fd, flg ? O_BINARY : O_TEXT );
+#endif
+  rc = (fo->flags & FILEOBJ_BINARY ? 1 : 0);
+  fo->flags = fo->flags & (flg ? FILEOBJ_BINARY : ~FILEOBJ_BINARY);
+
+  return rc;
+}
-- 
GitLab