From: sof Date: Sun, 19 Sep 1999 19:27:10 +0000 (+0000) Subject: [project @ 1999-09-19 19:27:10 by sof] X-Git-Tag: Approximately_9120_patches~5762 X-Git-Url: http://git.megacz.com/?a=commitdiff_plain;h=7bef35dc53e91566f1bb8c51cce5ef87123ac4df;p=ghc-hetmet.git [project @ 1999-09-19 19:27:10 by sof] IOExts.hSetBinaryMode wrapper --- diff --git a/ghc/lib/std/cbits/setBinaryMode.c b/ghc/lib/std/cbits/setBinaryMode.c new file mode 100644 index 0000000..641e999 --- /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 +#endif + +#ifdef _WIN32 +#include +#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; +}