From a586fca9b8d54f935babca01e1308ac51840f8ae Mon Sep 17 00:00:00 2001
From: simonm <unknown>
Date: Fri, 10 Apr 1998 11:35:02 +0000
Subject: [PATCH] [project @ 1998-04-10 11:33:12 by simonm] clean up the mess.

---
 .../std/cbits/{closeFile.c => closeFile.lc}   |  22 +--
 .../{createDirectory.c => createDirectory.lc} |  20 +--
 ghc/lib/std/cbits/{errno.c => errno.lc}       |  21 +--
 ghc/lib/std/cbits/error.h                     | 150 ------------------
 ghc/lib/std/cbits/fileEOF.c                   |  21 ---
 ghc/lib/std/cbits/fileEOF.lc                  |  23 +++
 ghc/lib/std/cbits/fileGetc.c                  |  36 -----
 ghc/lib/std/cbits/fileGetc.lc                 |  38 +++++
 ghc/lib/std/cbits/fileLookAhead.c             |  25 ---
 ghc/lib/std/cbits/fileLookAhead.lc            |  27 ++++
 ghc/lib/std/cbits/{filePosn.c => filePosn.lc} |  27 ++--
 ghc/lib/std/cbits/{filePutc.c => filePutc.lc} |  21 +--
 ghc/lib/std/cbits/{fileSize.c => fileSize.lc} |  21 +--
 .../cbits/{floatExtreme.c => floatExtreme.lc} |  51 +++---
 ghc/lib/std/cbits/flushFile.c                 |  25 ---
 ghc/lib/std/cbits/flushFile.lc                |  30 ++++
 ghc/lib/std/cbits/{freeFile.c => freeFile.lc} |  24 +--
 .../{getBufferMode.c => getBufferMode.lc}     |  20 +--
 .../std/cbits/{getCPUTime.c => getCPUTime.lc} |  22 +--
 .../cbits/{getClockTime.c => getClockTime.lc} |  16 +-
 ...rentDirectory.c => getCurrentDirectory.lc} |  19 +--
 ...toryContents.c => getDirectoryContents.lc} |  20 +--
 ghc/lib/std/cbits/{getLock.c => getLock.lc}   |  29 ++--
 .../std/cbits/{inputReady.c => inputReady.lc} |  21 +--
 ghc/lib/std/cbits/{openFile.c => openFile.lc} |  25 +--
 ghc/lib/std/cbits/{readFile.c => readFile.lc} |  30 ++--
 .../{removeDirectory.c => removeDirectory.lc} |  20 +--
 .../std/cbits/{removeFile.c => removeFile.lc} |  20 +--
 .../{renameDirectory.c => renameDirectory.lc} |  20 +--
 .../std/cbits/{renameFile.c => renameFile.lc} |  20 +--
 ghc/lib/std/cbits/{seekFile.c => seekFile.lc} |  29 ++--
 .../cbits/{setBuffering.c => setBuffering.lc} |  23 +--
 ghc/lib/std/cbits/setCurrentDirectory.c       |  23 ---
 ghc/lib/std/cbits/setCurrentDirectory.lc      |  25 +++
 ghc/lib/std/cbits/{showTime.c => showTime.lc} |  16 +-
 ghc/lib/std/cbits/{system.c => system.lc}     |  20 +--
 .../std/cbits/{toClockSec.c => toClockSec.lc} |  16 +-
 .../cbits/{toLocalTime.c => toLocalTime.lc}   |  16 +-
 .../std/cbits/{toUTCTime.c => toUTCTime.lc}   |  16 +-
 .../std/cbits/{writeFile.c => writeFile.lc}   |  30 ++--
 40 files changed, 512 insertions(+), 566 deletions(-)
 rename ghc/lib/std/cbits/{closeFile.c => closeFile.lc} (61%)
 rename ghc/lib/std/cbits/{createDirectory.c => createDirectory.lc} (79%)
 rename ghc/lib/std/cbits/{errno.c => errno.lc} (98%)
 delete mode 100644 ghc/lib/std/cbits/error.h
 delete mode 100644 ghc/lib/std/cbits/fileEOF.c
 create mode 100644 ghc/lib/std/cbits/fileEOF.lc
 delete mode 100644 ghc/lib/std/cbits/fileGetc.c
 create mode 100644 ghc/lib/std/cbits/fileGetc.lc
 delete mode 100644 ghc/lib/std/cbits/fileLookAhead.c
 create mode 100644 ghc/lib/std/cbits/fileLookAhead.lc
 rename ghc/lib/std/cbits/{filePosn.c => filePosn.lc} (65%)
 rename ghc/lib/std/cbits/{filePutc.c => filePutc.lc} (57%)
 rename ghc/lib/std/cbits/{fileSize.c => fileSize.lc} (70%)
 rename ghc/lib/std/cbits/{floatExtreme.c => floatExtreme.lc} (82%)
 delete mode 100644 ghc/lib/std/cbits/flushFile.c
 create mode 100644 ghc/lib/std/cbits/flushFile.lc
 rename ghc/lib/std/cbits/{freeFile.c => freeFile.lc} (81%)
 rename ghc/lib/std/cbits/{getBufferMode.c => getBufferMode.lc} (78%)
 rename ghc/lib/std/cbits/{getCPUTime.c => getCPUTime.lc} (88%)
 rename ghc/lib/std/cbits/{getClockTime.c => getClockTime.lc} (85%)
 rename ghc/lib/std/cbits/{getCurrentDirectory.c => getCurrentDirectory.lc} (75%)
 rename ghc/lib/std/cbits/{getDirectoryContents.c => getDirectoryContents.lc} (90%)
 rename ghc/lib/std/cbits/{getLock.c => getLock.lc} (87%)
 rename ghc/lib/std/cbits/{inputReady.c => inputReady.lc} (91%)
 rename ghc/lib/std/cbits/{openFile.c => openFile.lc} (94%)
 rename ghc/lib/std/cbits/{readFile.c => readFile.lc} (79%)
 rename ghc/lib/std/cbits/{removeDirectory.c => removeDirectory.lc} (77%)
 rename ghc/lib/std/cbits/{removeFile.c => removeFile.lc} (72%)
 rename ghc/lib/std/cbits/{renameDirectory.c => renameDirectory.lc} (69%)
 rename ghc/lib/std/cbits/{renameFile.c => renameFile.lc} (91%)
 rename ghc/lib/std/cbits/{seekFile.c => seekFile.lc} (88%)
 rename ghc/lib/std/cbits/{setBuffering.c => setBuffering.lc} (89%)
 delete mode 100644 ghc/lib/std/cbits/setCurrentDirectory.c
 create mode 100644 ghc/lib/std/cbits/setCurrentDirectory.lc
 rename ghc/lib/std/cbits/{showTime.c => showTime.lc} (83%)
 rename ghc/lib/std/cbits/{system.c => system.lc} (86%)
 rename ghc/lib/std/cbits/{toClockSec.c => toClockSec.lc} (75%)
 rename ghc/lib/std/cbits/{toLocalTime.c => toLocalTime.lc} (87%)
 rename ghc/lib/std/cbits/{toUTCTime.c => toUTCTime.lc} (88%)
 rename ghc/lib/std/cbits/{writeFile.c => writeFile.lc} (69%)

diff --git a/ghc/lib/std/cbits/closeFile.c b/ghc/lib/std/cbits/closeFile.lc
similarity index 61%
rename from ghc/lib/std/cbits/closeFile.c
rename to ghc/lib/std/cbits/closeFile.lc
index 90eeb9d34dd8..9f4c80eb8d28 100644
--- a/ghc/lib/std/cbits/closeFile.c
+++ b/ghc/lib/std/cbits/closeFile.lc
@@ -1,16 +1,16 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: closeFile.c,v 1.1 1998/04/10 10:54:14 simonm Exp $
- *
- * hClose Runtime Support
- */
-
-#include "Rts.h"
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1994
+%
+\subsection[closeFile.lc]{hClose Runtime Support}
+
+\begin{code}
+
+#include "rtsdefs.h"
 #include "stgio.h"
 
 StgInt
-closeFile(StgAddr fp)
+closeFile(fp)
+StgForeignObj fp;
 {
     int rc;
 
@@ -29,5 +29,7 @@ closeFile(StgAddr fp)
     return 0;
 }
 
+\end{code}
+
 
 
diff --git a/ghc/lib/std/cbits/createDirectory.c b/ghc/lib/std/cbits/createDirectory.lc
similarity index 79%
rename from ghc/lib/std/cbits/createDirectory.c
rename to ghc/lib/std/cbits/createDirectory.lc
index 6165518977aa..759e99c9982f 100644
--- a/ghc/lib/std/cbits/createDirectory.c
+++ b/ghc/lib/std/cbits/createDirectory.lc
@@ -1,12 +1,11 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: createDirectory.c,v 1.1 1998/04/10 10:54:16 simonm Exp $
- *
- * createDirectory Runtime Support}
- */
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1995
+%
+\subsection[createDirectory.lc]{createDirectory Runtime Support}
 
-#include "Rts.h"
+\begin{code}
+
+#include "rtsdefs.h"
 #include "stgio.h"
 
 #ifdef HAVE_SYS_TYPES_H
@@ -18,7 +17,8 @@
 #endif
 
 StgInt 
-createDirectory(StgByteArray path)
+createDirectory(path)
+StgByteArray path;
 {
     int rc;
     struct stat sb;
@@ -54,3 +54,5 @@ createDirectory(StgByteArray path)
     }
     return 0;
 }
+
+\end{code}
diff --git a/ghc/lib/std/cbits/errno.c b/ghc/lib/std/cbits/errno.lc
similarity index 98%
rename from ghc/lib/std/cbits/errno.c
rename to ghc/lib/std/cbits/errno.lc
index fc32980a58ed..0eaa9d1ac9f2 100644
--- a/ghc/lib/std/cbits/errno.c
+++ b/ghc/lib/std/cbits/errno.lc
@@ -1,12 +1,11 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: errno.c,v 1.1 1998/04/10 10:54:18 simonm Exp $
- *
- * GHC Error Number Conversion
- */
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1994
+%
+\subsection[errno.lc]{GHC Error Number Conversion}
+
+\begin{code}
 
-#include "Rts.h"
+#include "rtsdefs.h"
 #include "stgio.h"
 
 int ghc_errno = 0;
@@ -16,7 +15,7 @@ char *ghc_errstr = NULL;
 
 /* Collect all of the grotty #ifdef's in one place. */
 
-void cvtErrno(void)
+void cvtErrno(STG_NO_ARGS)
 {
     switch(errno) {
 #ifdef E2BIG
@@ -527,7 +526,7 @@ void cvtErrno(void)
 }
 
 void
-stdErrno(void)
+stdErrno(STG_NO_ARGS)
 {
     switch(ghc_errno) {
     default:
@@ -931,3 +930,5 @@ stdErrno(void)
 	break;
     }
 }
+
+\end{code}
diff --git a/ghc/lib/std/cbits/error.h b/ghc/lib/std/cbits/error.h
deleted file mode 100644
index 785fadb9a65c..000000000000
--- a/ghc/lib/std/cbits/error.h
+++ /dev/null
@@ -1,150 +0,0 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: error.h,v 1.1 1998/04/10 10:54:20 simonm Exp $
- *
- * Error codes used by the IO subsystem.
- */
-
-#if !defined(COMPILING_NCG) && !defined(__GLASGOW_HASKELL__)
-extern int ghc_errno;
-extern int ghc_errtype;
-extern char *ghc_errstr;
-
-void cvtErrno (void);
-void stdErrno (void);
-#endif
-
-#define ERR_ALREADYEXISTS 1
-#define ERR_HARDWAREFAULT 2
-#define ERR_ILLEGALOPERATION 3
-#define ERR_INAPPROPRIATETYPE 4
-#define ERR_INTERRUPTED 5
-#define ERR_INVALIDARGUMENT 6
-#define ERR_NOSUCHTHING 7
-#define ERR_OTHERERROR 8
-#define ERR_PERMISSIONDENIED 9
-#define ERR_PROTOCOLERROR 10
-#define ERR_RESOURCEBUSY 11
-#define ERR_RESOURCEEXHAUSTED 12
-#define ERR_RESOURCEVANISHED 13
-#define ERR_SYSTEMERROR 14
-#define ERR_TIMEEXPIRED 15
-#define ERR_UNSATISFIEDCONSTRAINTS 16
-#define ERR_UNSUPPORTEDOPERATION 17
-#define ERR_USERERROR 18
-#define ERR_EOF 19
-
-#define GHC_E2BIG -1
-#define GHC_EACCES -2
-#define GHC_EADDRINUSE -3
-#define GHC_EADDRNOTAVAIL -4
-#define GHC_EADV -5
-#define GHC_EAFNOSUPPORT -6
-#define GHC_EAGAIN -7
-#define GHC_EAIO -8
-#define GHC_EALREADY -9
-#define GHC_EBADF -10
-#define GHC_EBADMSG -11
-#define GHC_EBADRPC -12
-#define GHC_EBUSY -13
-#define GHC_ECANCELED -14
-#define GHC_ECHILD -15
-#define GHC_ECLONEME -16
-#define GHC_ECOMM -17
-#define GHC_ECONNABORTED -18
-#define GHC_ECONNREFUSED -19
-#define GHC_ECONNRESET -20
-#define GHC_EDEADLK -21
-#define GHC_EDESTADDRREQ -22
-#define GHC_EDIRTY -23
-#define GHC_EDOM -24
-#define GHC_EDOTDOT -25
-#define GHC_EDQUOT -26
-#define GHC_EDUPPKG -27
-#define GHC_EEXIST -28
-#define GHC_EFAIL -29
-#define GHC_EFAULT -30
-#define GHC_EFBIG -31
-#define GHC_EFTYPE -32
-#define GHC_EHOSTDOWN -33
-#define GHC_EHOSTUNREACH -34
-#define GHC_EIDRM -35
-#define GHC_EILSEQ -36
-#define GHC_EINPROG -37
-#define GHC_EINPROGRESS -38
-#define GHC_EINTR -39
-#define GHC_EINVAL -40
-#define GHC_EIO -41
-#define GHC_EISCONN -42
-#define GHC_EISDIR -43
-#define GHC_ELOOP -44
-#define GHC_EMEDIA -45
-#define GHC_EMFILE -46
-#define GHC_EMLINK -47
-#define GHC_EMSGSIZE -48
-#define GHC_EMTIMERS -49
-#define GHC_EMULTIHOP -50
-#define GHC_ENAMETOOLONG -51
-#define GHC_ENETDOWN -52
-#define GHC_ENETRESET -53
-#define GHC_ENETUNREACH -54
-#define GHC_ENFILE -55
-#define GHC_ENOBUFS -56
-#define GHC_ENODATA -57
-#define GHC_ENODEV -58
-#define GHC_ENOENT -59
-#define GHC_ENOEXEC -60
-#define GHC_ENOLCK -61
-#define GHC_ENOLINK -62
-#define GHC_ENOMEM -63
-#define GHC_ENOMSG -64
-#define GHC_ENONET -65
-#define GHC_ENOPKG -66
-#define GHC_ENOPROTOOPT -67
-#define GHC_ENOSPC -68
-#define GHC_ENOSR -69
-#define GHC_ENOSTR -70
-#define GHC_ENOSYM -71
-#define GHC_ENOSYS -72
-#define GHC_ENOTBLK -73
-#define GHC_ENOTCONN -74
-#define GHC_ENOTDIR -75
-#define GHC_ENOTEMPTY -76
-#define GHC_ENOTSOCK -77
-#define GHC_ENOTSUP -78
-#define GHC_ENOTTY -79
-#define GHC_ENXIO -80
-#define GHC_EOPNOTSUPP -81
-#define GHC_EPERM -82
-#define GHC_EPFNOSUPPORT -83
-#define GHC_EPIPE -84
-#define GHC_EPROCLIM -85
-#define GHC_EPROCUNAVAIL -86
-#define GHC_EPROGMISMATCH -87
-#define GHC_EPROGUNAVAIL -88
-#define GHC_EPROTO -89
-#define GHC_EPROTONOSUPPORT -90
-#define GHC_EPROTOTYPE -91
-#define GHC_ERANGE -92
-#define GHC_ERELOCATED -93
-#define GHC_EREMCHG -94
-#define GHC_EREMOTE -95
-#define GHC_EROFS -96
-#define GHC_ERPCMISMATCH -97
-#define GHC_ERREMOTE -98
-#define GHC_ESHUTDOWN -99
-#define GHC_ESOCKTNOSUPPORT -100
-#define GHC_ESOFT -101
-#define GHC_ESPIPE -102
-#define GHC_ESRCH -103
-#define GHC_ESRMNT -104
-#define GHC_ESTALE -105
-#define GHC_ETIME -106
-#define GHC_ETIMEDOUT -107
-#define GHC_ETOOMANYREFS -108
-#define GHC_ETXTBSY -109
-#define GHC_EUSERS -110
-#define GHC_EVERSION -111
-#define GHC_EWOULDBLOCK -112
-#define GHC_EXDEV -113
diff --git a/ghc/lib/std/cbits/fileEOF.c b/ghc/lib/std/cbits/fileEOF.c
deleted file mode 100644
index ba9782291536..000000000000
--- a/ghc/lib/std/cbits/fileEOF.c
+++ /dev/null
@@ -1,21 +0,0 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: fileEOF.c,v 1.1 1998/04/10 10:54:21 simonm Exp $
- *
- * hIsEOF Runtime Support
- */
-
-#include "Rts.h"
-#include "stgio.h"
-
-StgInt
-fileEOF(StgAddr fp)
-{
-    if (fileLookAhead(fp) != EOF)
-	return 0;
-    else if (ghc_errtype == ERR_EOF)
-	return 1;
-    else
-	return -1;
-}
diff --git a/ghc/lib/std/cbits/fileEOF.lc b/ghc/lib/std/cbits/fileEOF.lc
new file mode 100644
index 000000000000..cdd3eb20cf2c
--- /dev/null
+++ b/ghc/lib/std/cbits/fileEOF.lc
@@ -0,0 +1,23 @@
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1994
+%
+\subsection[fileEOF.lc]{hIsEOF Runtime Support}
+
+\begin{code}
+
+#include "rtsdefs.h"
+#include "stgio.h"
+
+StgInt
+fileEOF(fp)
+StgForeignObj fp;
+{
+    if (fileLookAhead(fp) != EOF)
+	return 0;
+    else if (ghc_errtype == ERR_EOF)
+	return 1;
+    else
+	return -1;
+}
+
+\end{code}
diff --git a/ghc/lib/std/cbits/fileGetc.c b/ghc/lib/std/cbits/fileGetc.c
deleted file mode 100644
index 9c7b33feaabb..000000000000
--- a/ghc/lib/std/cbits/fileGetc.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: fileGetc.c,v 1.1 1998/04/10 10:54:22 simonm Exp $
- *
- * hGetChar Runtime Support
- */
-
-#include "Rts.h"
-#include "stgio.h"
-#include "error.h"
-
-StgInt
-fileGetc(StgAddr fp)
-{
-    int c;
-
-    if (feof((FILE *)fp)) {
-	ghc_errtype = ERR_EOF;
-	ghc_errstr = "";
-	return EOF;
-    }
-
-    /* Try to read a character */
-    while ((c = getc((FILE *)fp)) == EOF && errno == EINTR)
-	clearerr((FILE *)fp);
-
-    if (feof((FILE *)fp)) {
-	ghc_errtype = ERR_EOF;
-	ghc_errstr = "";
-    } else if (c == EOF) {
-	cvtErrno();
-	stdErrno();
-    }
-    return c;
-}
diff --git a/ghc/lib/std/cbits/fileGetc.lc b/ghc/lib/std/cbits/fileGetc.lc
new file mode 100644
index 000000000000..131c956364af
--- /dev/null
+++ b/ghc/lib/std/cbits/fileGetc.lc
@@ -0,0 +1,38 @@
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1994
+%
+\subsection[fileGetc.lc]{hGetChar Runtime Support}
+
+\begin{code}
+
+#include "rtsdefs.h"
+#include "stgio.h"
+#include "error.h"
+
+StgInt
+fileGetc(fp)
+StgForeignObj fp;
+{
+    int c;
+
+    if (feof((FILE *) fp)) {
+	ghc_errtype = ERR_EOF;
+	ghc_errstr = "";
+	return EOF;
+    }
+
+    /* Try to read a character */
+    while ((c = getc((FILE *) fp)) == EOF && errno == EINTR)
+	clearerr((FILE *) fp);
+
+    if (feof((FILE *) fp)) {
+	ghc_errtype = ERR_EOF;
+	ghc_errstr = "";
+    } else if (c == EOF) {
+	cvtErrno();
+	stdErrno();
+    }
+    return c;
+}
+
+\end{code}
diff --git a/ghc/lib/std/cbits/fileLookAhead.c b/ghc/lib/std/cbits/fileLookAhead.c
deleted file mode 100644
index 360f119f6620..000000000000
--- a/ghc/lib/std/cbits/fileLookAhead.c
+++ /dev/null
@@ -1,25 +0,0 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: fileLookAhead.c,v 1.1 1998/04/10 10:54:24 simonm Exp $
- *
- * hLookAhead Runtime Support
- */
-
-#include "Rts.h"
-#include "stgio.h"
-
-StgInt
-fileLookAhead(StgAddr fp)
-{
-    int c;
-
-    if ((c = fileGetc((FILE *)fp)) == EOF) {
-	return c;
-    } else if (ungetc(c, (FILE *)fp) == EOF) {
-	cvtErrno();
-	stdErrno();
-	return EOF;
-    } else
-	return c;
-}
diff --git a/ghc/lib/std/cbits/fileLookAhead.lc b/ghc/lib/std/cbits/fileLookAhead.lc
new file mode 100644
index 000000000000..91a172251d62
--- /dev/null
+++ b/ghc/lib/std/cbits/fileLookAhead.lc
@@ -0,0 +1,27 @@
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1994
+%
+\subsection[fileLookAhead.lc]{hLookAhead Runtime Support}
+
+\begin{code}
+
+#include "rtsdefs.h"
+#include "stgio.h"
+
+StgInt
+fileLookAhead(fp)
+StgForeignObj fp;
+{
+    int c;
+
+    if ((c = fileGetc(fp)) == EOF) {
+	return c;
+    } else if (ungetc(c, (FILE *) fp) == EOF) {
+	cvtErrno();
+	stdErrno();
+	return EOF;
+    } else
+	return c;
+}
+
+\end{code}
diff --git a/ghc/lib/std/cbits/filePosn.c b/ghc/lib/std/cbits/filePosn.lc
similarity index 65%
rename from ghc/lib/std/cbits/filePosn.c
rename to ghc/lib/std/cbits/filePosn.lc
index e8131da74220..7a0d7907b80a 100644
--- a/ghc/lib/std/cbits/filePosn.c
+++ b/ghc/lib/std/cbits/filePosn.lc
@@ -1,16 +1,16 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: filePosn.c,v 1.1 1998/04/10 10:54:25 simonm Exp $
- *
- * hGetPosn and hSetPosn Runtime Support
- */
-
-#include "Rts.h"
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1994
+%
+\subsection[filePosn.lc]{hGetPosn and hSetPosn Runtime Support}
+
+\begin{code}
+
+#include "rtsdefs.h"
 #include "stgio.h"
 
 StgInt
-getFilePosn(StgAddr fp)
+getFilePosn(fp)
+StgForeignObj fp;
 {
     StgInt posn;
 
@@ -28,7 +28,9 @@ getFilePosn(StgAddr fp)
 /* The following is only called with a position that we've already visited */
 
 StgInt
-setFilePosn(StgAddr fp, I_ posn)
+setFilePosn(fp, posn)
+StgForeignObj fp;
+StgInt posn;
 {
     while (fseek((FILE *) fp, posn, SEEK_SET) != 0) {
 	if (errno != EINTR) {
@@ -40,4 +42,7 @@ setFilePosn(StgAddr fp, I_ posn)
     return 0;
 }
 
+\end{code}
+
+
 
diff --git a/ghc/lib/std/cbits/filePutc.c b/ghc/lib/std/cbits/filePutc.lc
similarity index 57%
rename from ghc/lib/std/cbits/filePutc.c
rename to ghc/lib/std/cbits/filePutc.lc
index 446304d4dff5..980aa63e507d 100644
--- a/ghc/lib/std/cbits/filePutc.c
+++ b/ghc/lib/std/cbits/filePutc.lc
@@ -1,17 +1,18 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: filePutc.c,v 1.1 1998/04/10 10:54:26 simonm Exp $
- *
- * hPutChar Runtime Support
- */
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1994
+%
+\subsection[filePut.lc]{hPutChar Runtime Support}
 
-#include "Rts.h"
+\begin{code}
+
+#include "rtsdefs.h"
 #include "stgio.h"
 #include "error.h"
 
 StgInt
-filePutc(StgAddr fp, I_ c)
+filePutc(fp, c)
+StgForeignObj fp;
+StgInt c;
 {
     int rc;
 
@@ -27,3 +28,5 @@ filePutc(StgAddr fp, I_ c)
 
     return 0;
 }
+
+\end{code}
diff --git a/ghc/lib/std/cbits/fileSize.c b/ghc/lib/std/cbits/fileSize.lc
similarity index 70%
rename from ghc/lib/std/cbits/fileSize.c
rename to ghc/lib/std/cbits/fileSize.lc
index 3720251fd584..34348feedf83 100644
--- a/ghc/lib/std/cbits/fileSize.c
+++ b/ghc/lib/std/cbits/fileSize.lc
@@ -1,12 +1,11 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: fileSize.c,v 1.1 1998/04/10 10:54:27 simonm Exp $
- *
- * hClose Runtime Support
- */
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1994
+%
+\subsection[fileSize.lc]{hfileSize Runtime Support}
 
-#include "Rts.h"
+\begin{code}
+
+#include "rtsdefs.h"
 #include "stgio.h"
 
 #ifdef HAVE_SYS_TYPES_H
@@ -18,7 +17,9 @@
 #endif
   
 StgInt
-fileSize(StgAddr fp, StgByteArray result)
+fileSize(fp, result)
+StgForeignObj fp;
+StgByteArray result;
 {
     struct stat sb;
 
@@ -40,3 +41,5 @@ fileSize(StgAddr fp, StgByteArray result)
 	return -1;
     }
 }
+
+\end{code}
diff --git a/ghc/lib/std/cbits/floatExtreme.c b/ghc/lib/std/cbits/floatExtreme.lc
similarity index 82%
rename from ghc/lib/std/cbits/floatExtreme.c
rename to ghc/lib/std/cbits/floatExtreme.lc
index 997e6a92f5b8..3dbecdeee59f 100644
--- a/ghc/lib/std/cbits/floatExtreme.c
+++ b/ghc/lib/std/cbits/floatExtreme.lc
@@ -1,21 +1,19 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: floatExtreme.c,v 1.1 1998/04/10 10:54:28 simonm Exp $
- *
- * Stubs to check for extremities of (IEEE) floats, 
- * the tests have been (artfully) lifted from the hbc-0.9999.3 (lib/fltcode.c)
- * source.
- */
-
-/*
+%
+%
+%
+
+Stubs to check for extremities of (IEEE) floats, 
+the tests have been (artfully) lifted from the hbc-0.9999.3 (lib/fltcode.c)
+source.
+
 ToDo:
   - avoid hard-wiring the fact that on an
     Alpha we repr. a StgFloat as a double.
     (introduce int equivalent of {ASSIGN,PK}_FLT? )
-*/
 
-#include "Rts.h"
+\begin{code}
+
+#include "rtsdefs.h"
 #include "ieee-flpt.h"
 #include "floatExtreme.h"
 
@@ -30,7 +28,8 @@ ToDo:
 #ifdef IEEE_FLOATING_POINT
 
 StgInt
-isDoubleNaN(StgDouble d)
+isDoubleNaN(d)
+StgDouble d;
 {
     union { double d; int i[2]; } u;
     int hx,lx;
@@ -47,7 +46,8 @@ isDoubleNaN(StgDouble d)
 }
 
 StgInt
-isDoubleInfinite(StgDouble d)
+isDoubleInfinite(d)
+StgDouble d;
 {
     union { double d; int i[2]; } u;
     int hx,lx;
@@ -62,7 +62,8 @@ isDoubleInfinite(StgDouble d)
 }
 
 StgInt
-isDoubleDenormalized(StgDouble d) 
+isDoubleDenormalized(d) 
+StgDouble d;
 {
     union { double d; int i[2]; } u;
     int high, iexp;
@@ -74,7 +75,8 @@ isDoubleDenormalized(StgDouble d)
 }
 
 StgInt
-isDoubleNegativeZero(StgDouble d) 
+isDoubleNegativeZero(d) 
+StgDouble d;
 {
     union { double d; int i[2]; } u;
     int high, iexp;
@@ -86,7 +88,8 @@ isDoubleNegativeZero(StgDouble d)
 /* Same tests, this time for StgFloats. */
 
 StgInt
-isFloatNaN(StgFloat f)
+isFloatNaN(f) 
+StgFloat f;
 {
 #if !defined(alpha_TARGET_OS)
     /* StgFloat = double on alphas */
@@ -104,7 +107,8 @@ isFloatNaN(StgFloat f)
 }
 
 StgInt
-isFloatInfinite(StgFloat f)
+isFloatInfinite(f) 
+StgFloat f;
 {
 #if !defined(alpha_TARGET_OS)
     /* StgFloat = double on alphas */
@@ -121,7 +125,8 @@ isFloatInfinite(StgFloat f)
 }
 
 StgInt
-isFloatDenormalized(StgFloat f)
+isFloatDenormalized(f) 
+StgFloat f;
 {
 #if !defined(alpha_TARGET_OS)
     /* StgFloat = double on alphas */
@@ -137,7 +142,8 @@ isFloatDenormalized(StgFloat f)
 }
 
 StgInt
-isFloatNegativeZero(StgFloat f)
+isFloatNegativeZero(f) 
+StgFloat f;
 {
 #if !defined(alpha_TARGET_OS)
     /* StgFloat = double on alphas */
@@ -163,3 +169,6 @@ StgInt isFloatDenormalized(f) StgFloat f; { return 0; }
 StgInt isFloatNegativeZero(f) StgFloat f; { return 0; }
 
 #endif
+
+
+\end{code}
diff --git a/ghc/lib/std/cbits/flushFile.c b/ghc/lib/std/cbits/flushFile.c
deleted file mode 100644
index 54cf1069f9e7..000000000000
--- a/ghc/lib/std/cbits/flushFile.c
+++ /dev/null
@@ -1,25 +0,0 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: flushFile.c,v 1.1 1998/04/10 10:54:30 simonm Exp $
- *
- * hFlush Runtime Support
- */
-
-#include "Rts.h"
-#include "stgio.h"
-
-StgInt
-flushFile(StgAddr fp)
-{
-    int rc;
-
-    while ((rc = fflush((FILE *) fp)) != 0) {
-	if (errno != EINTR) {
-	    cvtErrno();
-	    stdErrno();
-	    return rc;
-	}
-    }
-    return 0;
-}
diff --git a/ghc/lib/std/cbits/flushFile.lc b/ghc/lib/std/cbits/flushFile.lc
new file mode 100644
index 000000000000..6cfd484e741e
--- /dev/null
+++ b/ghc/lib/std/cbits/flushFile.lc
@@ -0,0 +1,30 @@
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1994
+%
+\subsection[flushFile.lc]{hFlush Runtime Support}
+
+\begin{code}
+
+#include "rtsdefs.h"
+#include "stgio.h"
+
+StgInt
+flushFile(fp)
+StgForeignObj fp;
+{
+    int rc;
+
+    while ((rc = fflush((FILE *) fp)) != 0) {
+	if (errno != EINTR) {
+	    cvtErrno();
+	    stdErrno();
+	    return rc;
+	}
+    }
+    return 0;
+}
+
+\end{code}
+
+
+
diff --git a/ghc/lib/std/cbits/freeFile.c b/ghc/lib/std/cbits/freeFile.lc
similarity index 81%
rename from ghc/lib/std/cbits/freeFile.c
rename to ghc/lib/std/cbits/freeFile.lc
index 751a48f11430..1ac3d526614f 100644
--- a/ghc/lib/std/cbits/freeFile.c
+++ b/ghc/lib/std/cbits/freeFile.lc
@@ -1,12 +1,11 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: freeFile.c,v 1.1 1998/04/10 10:54:31 simonm Exp $
- *
- * Giving up files
- */
-
-#include "Rts.h"
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1997
+%
+\subsection[freeFile.lc]{Giving up files}
+
+\begin{code}
+
+#include "rtsdefs.h"
 #include "stgio.h"
 
 /* sigh, the FILEs attached to the standard descriptors are 
@@ -14,10 +13,12 @@
    ForeignObj finaliser, as we probably want to use these
    before we *really* shut down (dumping stats etc.)
 */
-void freeStdFile(StgAddr fp)
+void freeStdFile(fp)
+StgForeignObj fp;
 { return; }
 
-void freeFile(StgAddr fp)
+void freeFile(fp)
+StgForeignObj fp;
 {
     int rc;
 
@@ -48,3 +49,4 @@ void freeFile(StgAddr fp)
 
     return;
 }
+\end{code}
diff --git a/ghc/lib/std/cbits/getBufferMode.c b/ghc/lib/std/cbits/getBufferMode.lc
similarity index 78%
rename from ghc/lib/std/cbits/getBufferMode.c
rename to ghc/lib/std/cbits/getBufferMode.lc
index a34b3173f9c5..cb0b9840d2a2 100644
--- a/ghc/lib/std/cbits/getBufferMode.c
+++ b/ghc/lib/std/cbits/getBufferMode.lc
@@ -1,12 +1,11 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: getBufferMode.c,v 1.1 1998/04/10 10:54:33 simonm Exp $
- *
- * hIs...Buffered Runtime Support
- */
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1994
+%
+\subsection[getBufferMode.lc]{hIs...Buffered Runtime Support}
+
+\begin{code}
 
-#include "Rts.h"
+#include "rtsdefs.h"
 #include "stgio.h"
 
 #ifdef HAVE_SYS_TYPES_H
@@ -28,7 +27,8 @@
 #define GBM_ERR (-3)
 
 StgInt
-getBufferMode(StgAddr fp)
+getBufferMode(fp)
+StgForeignObj fp;
 {
     struct stat sb;
 
@@ -48,3 +48,5 @@ getBufferMode(StgAddr fp)
     else
 	return GBM_BB;
 }
+
+\end{code}
diff --git a/ghc/lib/std/cbits/getCPUTime.c b/ghc/lib/std/cbits/getCPUTime.lc
similarity index 88%
rename from ghc/lib/std/cbits/getCPUTime.c
rename to ghc/lib/std/cbits/getCPUTime.lc
index 250e51c207d4..d3d7b2a4895e 100644
--- a/ghc/lib/std/cbits/getCPUTime.c
+++ b/ghc/lib/std/cbits/getCPUTime.lc
@@ -1,10 +1,9 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: getCPUTime.c,v 1.1 1998/04/10 10:54:34 simonm Exp $
- *
- * getCPUTime Runtime Support
- */
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1995
+%
+\subsection[getCPUTime.lc]{getCPUTime Runtime Support}
+
+\begin{code}
 
 #ifndef _AIX
 #define NON_POSIX_SOURCE /*needed for solaris2 only?*/
@@ -15,7 +14,7 @@
 #define _INCLUDE_HPUX_SOURCE
 #endif
 
-#include "Rts.h"
+#include "rtsdefs.h"
 
 #ifdef HAVE_SYS_TYPES_H
 #include <sys/types.h>
@@ -48,7 +47,7 @@
 #endif
 
 StgInt 
-clockTicks (void)
+clockTicks ()
 {
  return (
 #if defined(CLK_TCK)
@@ -101,5 +100,8 @@ getCPUTime(StgByteArray cpuStruct)
     return NULL;
 # endif
 #endif
-    return (StgByteArray)cpuStruct;
+    return (StgByteArray) cpuStruct;
 }
+
+\end{code}
+
diff --git a/ghc/lib/std/cbits/getClockTime.c b/ghc/lib/std/cbits/getClockTime.lc
similarity index 85%
rename from ghc/lib/std/cbits/getClockTime.c
rename to ghc/lib/std/cbits/getClockTime.lc
index 9f031bf99c8a..b6f42e6c289e 100644
--- a/ghc/lib/std/cbits/getClockTime.c
+++ b/ghc/lib/std/cbits/getClockTime.lc
@@ -1,16 +1,15 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: getClockTime.c,v 1.1 1998/04/10 10:54:35 simonm Exp $
- *
- * getClockTime Runtime Support
- */
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1995
+%
+\subsection[getClockTime.lc]{getClockTime Runtime Support}
+
+\begin{code}
 
 #ifndef _AIX
 #define NON_POSIX_SOURCE    /* gettimeofday */
 #endif
 
-#include "Rts.h"
+#include "rtsdefs.h"
 #include "stgio.h"
 
 #ifdef HAVE_GETCLOCK
@@ -75,3 +74,4 @@ getClockTime(StgByteArray sec, StgByteArray nsec)
 #endif
 #endif
 }
+\end{code}
diff --git a/ghc/lib/std/cbits/getCurrentDirectory.c b/ghc/lib/std/cbits/getCurrentDirectory.lc
similarity index 75%
rename from ghc/lib/std/cbits/getCurrentDirectory.c
rename to ghc/lib/std/cbits/getCurrentDirectory.lc
index a132e0b27aa7..4da895aaccf0 100644
--- a/ghc/lib/std/cbits/getCurrentDirectory.c
+++ b/ghc/lib/std/cbits/getCurrentDirectory.lc
@@ -1,12 +1,11 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: getCurrentDirectory.c,v 1.1 1998/04/10 10:54:37 simonm Exp $
- *
- * getCurrentDirectory Runtime Support
- */
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1995
+%
+\subsection[getCurrentDirectory.lc]{getCurrentDirectory Runtime Support}
 
-#include "Rts.h"
+\begin{code}
+
+#include "rtsdefs.h"
 #include "stgio.h"
 
 #ifndef PATH_MAX
@@ -18,7 +17,7 @@
 #endif
 
 StgAddr
-getCurrentDirectory(void)
+getCurrentDirectory(STG_NO_ARGS)
 {
     char *pwd;
     int alloc;
@@ -45,3 +44,5 @@ getCurrentDirectory(void)
     }
     return (StgAddr) pwd;
 }
+
+\end{code}
diff --git a/ghc/lib/std/cbits/getDirectoryContents.c b/ghc/lib/std/cbits/getDirectoryContents.lc
similarity index 90%
rename from ghc/lib/std/cbits/getDirectoryContents.c
rename to ghc/lib/std/cbits/getDirectoryContents.lc
index d51f760628df..025aae97512d 100644
--- a/ghc/lib/std/cbits/getDirectoryContents.c
+++ b/ghc/lib/std/cbits/getDirectoryContents.lc
@@ -1,12 +1,11 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: getDirectoryContents.c,v 1.1 1998/04/10 10:54:38 simonm Exp $
- *
- * getDirectoryContents Runtime Support
- */
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1995
+%
+\subsection[getDirectoryContents.lc]{getDirectoryContents Runtime Support}
 
-#include "Rts.h"
+\begin{code}
+
+#include "rtsdefs.h"
 #include "stgio.h"
 
 #ifdef HAVE_SYS_TYPES_H
@@ -45,7 +44,8 @@ freeEntries(char **entries, int count)
  */
 
 StgAddr
-getDirectoryContents(StgByteArray path)
+getDirectoryContents(path)
+StgByteArray path;
 {
     struct stat sb;
     DIR *dir;
@@ -120,3 +120,5 @@ getDirectoryContents(StgByteArray path)
 	}
     }
 }
+
+\end{code}
diff --git a/ghc/lib/std/cbits/getLock.c b/ghc/lib/std/cbits/getLock.lc
similarity index 87%
rename from ghc/lib/std/cbits/getLock.c
rename to ghc/lib/std/cbits/getLock.lc
index c2b4762a8201..1ed0dbf7eedf 100644
--- a/ghc/lib/std/cbits/getLock.c
+++ b/ghc/lib/std/cbits/getLock.lc
@@ -1,12 +1,11 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: getLock.c,v 1.1 1998/04/10 10:54:39 simonm Exp $
- *
- * stdin/stout/stderr Runtime Support
- */
-
-#include "Rts.h"
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1994
+%
+\subsection[getLock.lc]{stdin/stout/stderr Runtime Support}
+
+\begin{code}
+
+#include "rtsdefs.h"
 #include "stgio.h"
 
 #ifdef HAVE_SYS_TYPES_H
@@ -42,7 +41,9 @@ static int readLocks = 0;
 static int writeLocks = 0;
 
 int
-lockFile(int fd, int exclusive)
+lockFile(fd, exclusive)
+int fd;
+int exclusive;
 {
     int i;
     struct stat sb;
@@ -85,7 +86,8 @@ lockFile(int fd, int exclusive)
 }
 
 int
-unlockFile(int fd)
+unlockFile(fd)
+int fd;
 {
     int i, rc;
 
@@ -109,7 +111,9 @@ unlockFile(int fd)
 }
 
 StgInt
-getLock(StgAddr fp, StgInt exclusive)
+getLock(fp, exclusive)
+StgForeignObj fp;
+StgInt exclusive;
 {
     if (lockFile(fileno((FILE *) fp), exclusive) < 0) {
 	if (errno == EBADF)
@@ -133,3 +137,4 @@ getLock(StgAddr fp, StgInt exclusive)
     return 1;
 }
 
+\end{code}
diff --git a/ghc/lib/std/cbits/inputReady.c b/ghc/lib/std/cbits/inputReady.lc
similarity index 91%
rename from ghc/lib/std/cbits/inputReady.c
rename to ghc/lib/std/cbits/inputReady.lc
index e987e5a704a1..8baa5829716d 100644
--- a/ghc/lib/std/cbits/inputReady.c
+++ b/ghc/lib/std/cbits/inputReady.lc
@@ -1,17 +1,16 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: inputReady.c,v 1.1 1998/04/10 10:54:40 simonm Exp $
- *
- * hReady Runtime Support
- */
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1994
+%
+\subsection[inputReady.lc]{hReady Runtime Support}
+
+\begin{code}
 
 /* select and supporting types is not */
 #ifndef _AIX
 #define NON_POSIX_SOURCE  
 #endif
 
-#include "Rts.h"
+#include "rtsdefs.h"
 #include "stgio.h"
 
 #ifdef HAVE_SYS_TYPES_H
@@ -37,7 +36,9 @@
 #endif
 
 StgInt
-inputReady(StgAddr fp, StgInt nsecs)
+inputReady(fp, nsecs)
+StgForeignObj fp;
+StgInt nsecs;
 {
     int flags, c, fd, maxfd, ready;
     fd_set rfd;
@@ -121,3 +122,5 @@ inputReady(StgAddr fp, StgInt nsecs)
 	return 1;
     */
 }
+
+\end{code}
diff --git a/ghc/lib/std/cbits/openFile.c b/ghc/lib/std/cbits/openFile.lc
similarity index 94%
rename from ghc/lib/std/cbits/openFile.c
rename to ghc/lib/std/cbits/openFile.lc
index d203bbb1ffc2..4b92aca8b588 100644
--- a/ghc/lib/std/cbits/openFile.c
+++ b/ghc/lib/std/cbits/openFile.lc
@@ -1,12 +1,11 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: openFile.c,v 1.1 1998/04/10 10:54:42 simonm Exp $
- *
- * openFile Runtime Support
- */
-
-#include "Rts.h"
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1994
+%
+\subsection[openFile.lc]{openFile Runtime Support}
+
+\begin{code}
+
+#include "rtsdefs.h"
 #include "stgio.h"
 
 #ifdef HAVE_SYS_TYPES_H
@@ -26,7 +25,9 @@
 #endif
 
 StgAddr
-openFile(StgByteArray file, StgByteArray how)
+openFile(file, how)
+StgByteArray file;
+StgByteArray how;
 {
     FILE *fp;
     int fd;
@@ -55,7 +56,7 @@ openFile(StgByteArray file, StgByteArray how)
 	break;
     default:
 	fprintf(stderr, "openFile: unknown mode `%s'\n", how);
-	exit(EXIT_FAILURE);
+	EXIT(EXIT_FAILURE);
     }
 
     /* First try to open without creating */
@@ -212,3 +213,5 @@ openFile(StgByteArray file, StgByteArray how)
 
     return (StgAddr) fp;
 }
+
+\end{code}
diff --git a/ghc/lib/std/cbits/readFile.c b/ghc/lib/std/cbits/readFile.lc
similarity index 79%
rename from ghc/lib/std/cbits/readFile.c
rename to ghc/lib/std/cbits/readFile.lc
index 2ae839c345c1..0cc9c2c7b931 100644
--- a/ghc/lib/std/cbits/readFile.c
+++ b/ghc/lib/std/cbits/readFile.lc
@@ -1,18 +1,20 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: readFile.c,v 1.1 1998/04/10 10:54:43 simonm Exp $
- *
- * hGetContents Runtime Support
- */
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1994
+%
+\subsection[readFile.lc]{hGetContents Runtime Support}
 
-#include "Rts.h"
+\begin{code}
+
+#include "rtsdefs.h"
 #include "stgio.h"
 
 #define EOT 4
 
 StgInt
-readBlock(StgAddr buf, StgAddr fp, StgInt size)
+readBlock(buf, fp, size)
+StgAddr buf;
+StgForeignObj fp;
+StgInt size;
 {
     int count;
 
@@ -39,7 +41,10 @@ readBlock(StgAddr buf, StgAddr fp, StgInt size)
 }
 
 StgInt
-readLine(StgAddr buf, StgAddr fp, StgInt size)
+readLine(buf, fp, size)
+StgAddr buf;
+StgForeignObj fp;
+StgInt size;
 {
     if (feof((FILE *) fp)) {
 	ghc_errtype = ERR_EOF;
@@ -64,7 +69,8 @@ readLine(StgAddr buf, StgAddr fp, StgInt size)
 }
 
 StgInt
-readChar(StgAddr fp)
+readChar(fp)
+StgForeignObj fp;
 {
     int c;
 
@@ -92,3 +98,5 @@ readChar(StgAddr fp)
     else
         return c;
 }
+
+\end{code}
diff --git a/ghc/lib/std/cbits/removeDirectory.c b/ghc/lib/std/cbits/removeDirectory.lc
similarity index 77%
rename from ghc/lib/std/cbits/removeDirectory.c
rename to ghc/lib/std/cbits/removeDirectory.lc
index 9eb53109f4d0..3347fd7c0908 100644
--- a/ghc/lib/std/cbits/removeDirectory.c
+++ b/ghc/lib/std/cbits/removeDirectory.lc
@@ -1,12 +1,11 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: removeDirectory.c,v 1.1 1998/04/10 10:54:44 simonm Exp $
- *
- * removeDirectory Runtime Support
- */
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1995
+%
+\subsection[removeDirectory.lc]{removeDirectory Runtime Support}
 
-#include "Rts.h"
+\begin{code}
+
+#include "rtsdefs.h"
 #include "stgio.h"
 
 #ifdef HAVE_SYS_TYPES_H
@@ -18,7 +17,8 @@
 #endif
 
 StgInt
-removeDirectory(StgByteArray path)
+removeDirectory(path)
+StgByteArray path;
 {
     struct stat sb;
 
@@ -53,3 +53,5 @@ removeDirectory(StgByteArray path)
     }
     return 0;
 }
+
+\end{code}
diff --git a/ghc/lib/std/cbits/removeFile.c b/ghc/lib/std/cbits/removeFile.lc
similarity index 72%
rename from ghc/lib/std/cbits/removeFile.c
rename to ghc/lib/std/cbits/removeFile.lc
index 12f2e99fc33d..095b6215b529 100644
--- a/ghc/lib/std/cbits/removeFile.c
+++ b/ghc/lib/std/cbits/removeFile.lc
@@ -1,12 +1,11 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: removeFile.c,v 1.1 1998/04/10 10:54:45 simonm Exp $
- *
- * removeFile Runtime Support
- */
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1995
+%
+\subsection[removeFile.lc]{removeFile Runtime Support}
 
-#include "Rts.h"
+\begin{code}
+
+#include "rtsdefs.h"
 #include "stgio.h"
 
 #ifdef HAVE_SYS_TYPES_H
@@ -18,7 +17,8 @@
 #endif
 
 StgInt
-removeFile(StgByteArray path)
+removeFile(path)
+StgByteArray path;
 {
     struct stat sb;
 
@@ -44,3 +44,5 @@ removeFile(StgByteArray path)
     }
     return 0;
 }
+
+\end{code}
diff --git a/ghc/lib/std/cbits/renameDirectory.c b/ghc/lib/std/cbits/renameDirectory.lc
similarity index 69%
rename from ghc/lib/std/cbits/renameDirectory.c
rename to ghc/lib/std/cbits/renameDirectory.lc
index 95c3af121732..2a41186bfe17 100644
--- a/ghc/lib/std/cbits/renameDirectory.c
+++ b/ghc/lib/std/cbits/renameDirectory.lc
@@ -1,12 +1,11 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: renameDirectory.c,v 1.1 1998/04/10 10:54:47 simonm Exp $
- *
- * renameDirectory Runtime Support
- */
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1995
+%
+\subsection[renameDirectory.lc]{renameDirectory Runtime Support}
 
-#include "Rts.h"
+\begin{code}
+
+#include "rtsdefs.h"
 #include "stgio.h"
 
 #ifdef HAVE_SYS_TYPES_H
@@ -18,7 +17,9 @@
 #endif
 
 StgInt
-renameDirectory(StgByteArray opath, StgByteArray npath)
+renameDirectory(opath, npath)
+StgByteArray opath;
+StgByteArray npath;
 {
     struct stat sb;
 
@@ -44,3 +45,4 @@ renameDirectory(StgByteArray opath, StgByteArray npath)
     }
     return 0;
 }
+\end{code}
diff --git a/ghc/lib/std/cbits/renameFile.c b/ghc/lib/std/cbits/renameFile.lc
similarity index 91%
rename from ghc/lib/std/cbits/renameFile.c
rename to ghc/lib/std/cbits/renameFile.lc
index c52d5753508f..2bcb9c0e0486 100644
--- a/ghc/lib/std/cbits/renameFile.c
+++ b/ghc/lib/std/cbits/renameFile.lc
@@ -1,12 +1,11 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: renameFile.c,v 1.1 1998/04/10 10:54:48 simonm Exp $
- *
- * renameFile Runtime Support
- */
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1995
+%
+\subsection[renameFile.lc]{renameFile Runtime Support}
 
-#include "Rts.h"
+\begin{code}
+
+#include "rtsdefs.h"
 #include "stgio.h"
 
 #ifdef HAVE_SYS_TYPES_H
@@ -22,7 +21,9 @@
 #endif
 
 StgInt
-renameFile(StgByteArray opath, StgByteArray npath)
+renameFile(opath, npath)
+StgByteArray opath;
+StgByteArray npath;
 {
     struct stat sb;
     int fd;
@@ -128,3 +129,4 @@ renameFile(StgByteArray opath, StgByteArray npath)
     close(fd);    
     return 0;
 }
+\end{code}
diff --git a/ghc/lib/std/cbits/seekFile.c b/ghc/lib/std/cbits/seekFile.lc
similarity index 88%
rename from ghc/lib/std/cbits/seekFile.c
rename to ghc/lib/std/cbits/seekFile.lc
index 2946fe2e6302..48c0cf7d3b91 100644
--- a/ghc/lib/std/cbits/seekFile.c
+++ b/ghc/lib/std/cbits/seekFile.lc
@@ -1,12 +1,11 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: seekFile.c,v 1.1 1998/04/10 10:54:49 simonm Exp $
- *
- * hSeek and hIsSeekable Runtime Support
- */
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1994
+%
+\subsection[seekFile.lc]{hSeek and hIsSeekable Runtime Support}
 
-#include "Rts.h"
+\begin{code}
+
+#include "rtsdefs.h"
 #include "stgio.h"
 
 #ifdef HAVE_SYS_TYPES_H
@@ -18,7 +17,11 @@
 #endif
 
 StgInt
-seekFile(StgAddr fp, StgInt whence, StgInt size, StgByteArray d)
+seekFile(fp, whence, size, d)
+StgForeignObj fp;
+StgInt whence;
+StgInt size;
+StgByteArray d;
 {
     struct stat sb;
     long int offset;
@@ -102,7 +105,8 @@ seekFile(StgAddr fp, StgInt whence, StgInt size, StgByteArray d)
 }
 
 StgInt
-seekFileP(StgAddr fp)
+seekFileP(fp)
+StgForeignObj fp;
 {
     struct stat sb;
 
@@ -124,3 +128,8 @@ seekFileP(StgAddr fp)
 	return 0;
     }
 }
+
+\end{code}
+
+
+
diff --git a/ghc/lib/std/cbits/setBuffering.c b/ghc/lib/std/cbits/setBuffering.lc
similarity index 89%
rename from ghc/lib/std/cbits/setBuffering.c
rename to ghc/lib/std/cbits/setBuffering.lc
index b8cf4139fa35..0169b50ce2f2 100644
--- a/ghc/lib/std/cbits/setBuffering.c
+++ b/ghc/lib/std/cbits/setBuffering.lc
@@ -1,12 +1,11 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: setBuffering.c,v 1.1 1998/04/10 10:54:51 simonm Exp $
- *
- * hSetBuffering Runtime Support
- */
-
-#include "Rts.h"
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1994
+%
+\subsection[setBuffering.lc]{hSetBuffering Runtime Support}
+
+\begin{code}
+
+#include "rtsdefs.h"
 #include "stgio.h"
 
 #ifdef HAVE_SYS_TYPES_H
@@ -30,7 +29,9 @@
 #define SB_BB (-2)
 
 StgInt
-setBuffering(StgAddr fp, StgInt size)
+setBuffering(fp, size)
+StgForeignObj fp;
+StgInt size;
 {
     int flags;
     int input;
@@ -118,3 +119,5 @@ setBuffering(StgAddr fp, StgInt size)
     }
     return 0;
 }
+
+\end{code}
diff --git a/ghc/lib/std/cbits/setCurrentDirectory.c b/ghc/lib/std/cbits/setCurrentDirectory.c
deleted file mode 100644
index 60fbdaf520ae..000000000000
--- a/ghc/lib/std/cbits/setCurrentDirectory.c
+++ /dev/null
@@ -1,23 +0,0 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: setCurrentDirectory.c,v 1.1 1998/04/10 10:54:52 simonm Exp $
- *
- * setCurrentDirectory Runtime Support
- */
-
-#include "Rts.h"
-#include "stgio.h"
-
-StgInt
-setCurrentDirectory(StgByteArray path)
-{
-    while (chdir(path) != 0) {
-	if (errno != EINTR) {
-	    cvtErrno();
-	    stdErrno();
-	    return -1;
-	}
-    }
-    return 0;
-}
diff --git a/ghc/lib/std/cbits/setCurrentDirectory.lc b/ghc/lib/std/cbits/setCurrentDirectory.lc
new file mode 100644
index 000000000000..96fdf59fa9bb
--- /dev/null
+++ b/ghc/lib/std/cbits/setCurrentDirectory.lc
@@ -0,0 +1,25 @@
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1995
+%
+\subsection[setCurrentDirectory.lc]{setCurrentDirectory Runtime Support}
+
+\begin{code}
+
+#include "rtsdefs.h"
+#include "stgio.h"
+
+StgInt
+setCurrentDirectory(path)
+StgByteArray path;
+{
+    while (chdir(path) != 0) {
+	if (errno != EINTR) {
+	    cvtErrno();
+	    stdErrno();
+	    return -1;
+	}
+    }
+    return 0;
+}
+
+\end{code}
diff --git a/ghc/lib/std/cbits/showTime.c b/ghc/lib/std/cbits/showTime.lc
similarity index 83%
rename from ghc/lib/std/cbits/showTime.c
rename to ghc/lib/std/cbits/showTime.lc
index 3e2bfd7e9f98..08adcd50f4e7 100644
--- a/ghc/lib/std/cbits/showTime.c
+++ b/ghc/lib/std/cbits/showTime.lc
@@ -1,12 +1,11 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: showTime.c,v 1.1 1998/04/10 10:54:53 simonm Exp $
- *
- * ClockTime.showsPrec Runtime Support
- */
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1995
+%
+\subsection[showTime.lc]{ClockTime.showsPrec Runtime Support}
 
-#include "Rts.h"
+\begin{code}
+
+#include "rtsdefs.h"
 #include "stgio.h"
 
 #if TIME_WITH_SYS_TIME
@@ -49,3 +48,4 @@ showTime(I_ size, StgByteArray d, StgByteArray buf)
        return (StgAddr)buf;
     return (StgAddr)strcpy(buf, "ClockTime.show{LibTime}: internal error");
 }
+\end{code}
diff --git a/ghc/lib/std/cbits/system.c b/ghc/lib/std/cbits/system.lc
similarity index 86%
rename from ghc/lib/std/cbits/system.c
rename to ghc/lib/std/cbits/system.lc
index aff3a88e8ec8..924c8d463677 100644
--- a/ghc/lib/std/cbits/system.c
+++ b/ghc/lib/std/cbits/system.lc
@@ -1,12 +1,11 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: system.c,v 1.1 1998/04/10 10:54:55 simonm Exp $
- *
- * system Runtime Support
- */
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1995
+%
+\subsection[system.lc]{system Runtime Support}
 
-#include "Rts.h"
+\begin{code}
+
+#include "rtsdefs.h"
 #include "stgio.h"
 
 #ifdef HAVE_SYS_WAIT_H
@@ -22,7 +21,8 @@
 #endif
 
 StgInt
-systemCmd(StgByteArray cmd)
+systemCmd(cmd)
+StgByteArray cmd;
 {
 #if defined(cygwin32_TARGET_OS)
    /* The implementation of std. fork() has its problems
@@ -77,3 +77,5 @@ systemCmd(StgByteArray cmd)
     return -1;
 #endif
 }
+
+\end{code}
diff --git a/ghc/lib/std/cbits/toClockSec.c b/ghc/lib/std/cbits/toClockSec.lc
similarity index 75%
rename from ghc/lib/std/cbits/toClockSec.c
rename to ghc/lib/std/cbits/toClockSec.lc
index 3d4a5d171724..3107ae37e33b 100644
--- a/ghc/lib/std/cbits/toClockSec.c
+++ b/ghc/lib/std/cbits/toClockSec.lc
@@ -1,12 +1,11 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: toClockSec.c,v 1.1 1998/04/10 10:54:57 simonm Exp $
- *
- * toClockSec Runtime Support
- */
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1995
+%
+\subsection[toClockSec.lc]{toClockSec Runtime Support}
 
-#include "Rts.h"
+\begin{code}
+
+#include "rtsdefs.h"
 #include "timezone.h"
 #include "stgio.h"
 
@@ -39,3 +38,4 @@ toClockSec(I_ year, I_ mon, I_ mday, I_ hour, I_ min, I_ sec, I_ isdst, StgByteA
     *(time_t *)res = t;
     return res;
 }
+\end{code}
diff --git a/ghc/lib/std/cbits/toLocalTime.c b/ghc/lib/std/cbits/toLocalTime.lc
similarity index 87%
rename from ghc/lib/std/cbits/toLocalTime.c
rename to ghc/lib/std/cbits/toLocalTime.lc
index 6e775b7d792c..11a1e30d9b0f 100644
--- a/ghc/lib/std/cbits/toLocalTime.c
+++ b/ghc/lib/std/cbits/toLocalTime.lc
@@ -1,12 +1,11 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: toLocalTime.c,v 1.1 1998/04/10 10:54:58 simonm Exp $
- *
- * toCalendarTime Runtime Support
- */
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1995
+%
+\subsection[toLocalTime.lc]{toCalendarTime Runtime Support}
 
-#include "Rts.h"
+\begin{code}
+
+#include "rtsdefs.h"
 #include "timezone.h"
 #include "stgio.h"
 
@@ -65,3 +64,4 @@ toLocalTime(I_ size, StgByteArray d, StgByteArray res)
 
     return (StgAddr)res;
 }
+\end{code}
diff --git a/ghc/lib/std/cbits/toUTCTime.c b/ghc/lib/std/cbits/toUTCTime.lc
similarity index 88%
rename from ghc/lib/std/cbits/toUTCTime.c
rename to ghc/lib/std/cbits/toUTCTime.lc
index 80c41a36c29d..86f449e286ce 100644
--- a/ghc/lib/std/cbits/toUTCTime.c
+++ b/ghc/lib/std/cbits/toUTCTime.lc
@@ -1,12 +1,11 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: toUTCTime.c,v 1.1 1998/04/10 10:54:59 simonm Exp $
- *
- * toUTCTime Runtime Support
- */
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1995
+%
+\subsection[toUTCTime.lc]{toUTCTime Runtime Support}
 
-#include "Rts.h"
+\begin{code}
+
+#include "rtsdefs.h"
 #include "timezone.h"
 #include "stgio.h"
 
@@ -70,3 +69,4 @@ toUTCTime(I_ size, StgByteArray d, StgByteArray res)
 
     return (StgAddr)res;
 }
+\end{code}
diff --git a/ghc/lib/std/cbits/writeFile.c b/ghc/lib/std/cbits/writeFile.lc
similarity index 69%
rename from ghc/lib/std/cbits/writeFile.c
rename to ghc/lib/std/cbits/writeFile.lc
index 65e1f95b7e30..80b946f11724 100644
--- a/ghc/lib/std/cbits/writeFile.c
+++ b/ghc/lib/std/cbits/writeFile.lc
@@ -1,16 +1,18 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: writeFile.c,v 1.1 1998/04/10 10:55:00 simonm Exp $
- *
- * hPutStr Runtime Support
- */
-
-#include "Rts.h"
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1994
+%
+\subsection[writeFile.lc]{hPutStr Runtime Support}
+
+\begin{code}
+
+#include "rtsdefs.h"
 #include "stgio.h"
 
 StgInt
-writeFile(StgAddr buf, StgAddr fp, StgInt bytes)
+writeFile(buf, fp, bytes)
+StgAddr buf;
+StgForeignObj fp;
+StgInt bytes;
 {
     int count;
     char *p = (char *) buf;
@@ -35,7 +37,11 @@ writeFile(StgAddr buf, StgAddr fp, StgInt bytes)
 
 
 StgInt
-writeBuf(StgAddr fp, W_ elt_sz, I_ len, StgAddr buf)
+writeBuf(fp, elt_sz, len, buf)
+StgForeignObj fp;
+StgWord elt_sz;
+StgInt  len;
+StgAddr buf;
 {
     int count;
     char *p = (char *) buf;
@@ -57,3 +63,5 @@ writeBuf(StgAddr fp, W_ elt_sz, I_ len, StgAddr buf)
 
     return 0;
 }
+
+\end{code}
-- 
GitLab