[project @ 1998-12-02 13:17:09 by simonm]
[ghc-hetmet.git] / ghc / lib / std / cbits / stgio.h
1 /* 
2  * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
3  *
4  * $Id: stgio.h,v 1.8 1998/12/02 13:27:58 simonm Exp $
5  *
6  * Helper code for GHC's IO subsystem.
7  */
8
9 #ifndef STGIO_H
10 #define STGIO_H
11
12 #include "fileObject.h"
13
14 /* Decls for routines in ghc/lib/cbits/ only used there.
15  * This file is used when compiling the Haskell library
16  * that _ccalls_ those routines; and when compiling those
17  * routines (to check consistency).
18  */
19
20 #include "error.h"
21
22 /* closeFile.c */
23 StgAddr allocMemory__ (StgInt);
24
25 /* closeFile.c */
26 StgInt closeFile (StgForeignPtr,StgInt);
27
28 /* createDirectory.c */
29 StgInt createDirectory (StgByteArray);
30
31 /* directoryAux.c */
32 StgAddr openDir__         (StgByteArray);
33 StgAddr readDir__         (StgAddr);
34 StgAddr get_dirent_d_name (StgAddr);
35 StgWord get_stat_st_mode  (StgAddr);
36 StgInt64 get_stat_st_mtime(StgAddr);
37 void     set_stat_st_mtime(StgByteArray, StgByteArray);
38 StgInt  sizeof_stat       (void);
39 StgInt  prim_stat         (StgAddr,StgAddr);
40 StgInt  const_F_OK        (void);
41 StgWord const_S_IRUSR     (void);
42 StgWord const_S_IWUSR     (void);
43 StgWord const_S_IXUSR     (void);
44 StgInt  prim_S_ISDIR      (StgWord);
45 StgInt  prim_S_ISREG      (StgWord);
46
47 /* echoAux.c */
48 StgInt setTerminalEcho (StgForeignPtr, StgInt);
49 StgInt getTerminalEcho (StgForeignPtr);
50 StgInt isTerminalDevice (StgForeignPtr);
51
52 /* env.c */
53 char *  strDup          (const char *);
54 int     setenviron      (char **);
55 int     copyenv         (void);
56 int     _setenv         (char *);
57 int     delenv          (char *);
58
59 /* errno.c */
60 extern  int ghc_errno;
61 extern  int ghc_errtype;
62 extern  char* ghc_errstr;
63
64 void    cvtErrno(void);
65 void    stdErrno(void);
66 void    convertErrno(void);
67 StgAddr getErrStr__(void);
68 StgInt  getErrNo__(void);
69 StgInt  getErrType__(void);
70
71 /* execvpe.c */
72 int     execvpe (char *, char **, char **);
73
74 /* fileEOF.c */
75 StgInt  fileEOF (StgForeignPtr);
76 /* fileGetc.c */
77 StgInt  fileGetc (StgForeignPtr);
78
79 /* fileLookAhead.c */
80 StgInt  fileLookAhead (StgForeignPtr);
81 StgInt  ungetChar (StgForeignPtr,StgChar);
82
83 /* fileObject.c */
84 void    setBufFlags (StgForeignPtr, StgInt);
85 void    setBufWPtr  (StgForeignPtr, StgInt);
86 StgInt  getBufWPtr  (StgForeignPtr);
87 void    setBuf      (StgForeignPtr, StgAddr, StgInt);
88 StgAddr getBuf      (StgForeignPtr);
89 StgAddr getWriteableBuf (StgForeignPtr);
90 StgAddr getBufStart (StgForeignPtr,StgInt);
91 StgInt  getBufSize  (StgForeignPtr);
92 void    setFilePtr  (StgForeignPtr, StgAddr);
93 StgAddr getFilePtr  (StgForeignPtr);
94 void    setConnectedTo  (StgForeignPtr, StgForeignPtr, StgInt);
95 void    setPushbackBufSize (StgInt);
96 StgInt  getPushbackBufSize (void);
97 void    setNonBlockingIOFlag__ (StgForeignPtr);
98 void    clearNonBlockingIOFlag__ (StgForeignPtr);
99 void    setConnNonBlockingIOFlag__ (StgForeignPtr);
100 void    clearConnNonBlockingIOFlag__ (StgForeignPtr);
101 StgInt  getFileFd  (StgForeignPtr);
102 StgInt  getConnFileFd  (StgForeignPtr);
103 StgInt  fill_up_line_buffer(IOFileObject*);
104
105 /* filePosn.c */
106 StgInt  getFilePosn (StgForeignPtr);
107 StgInt  setFilePosn (StgForeignPtr, StgInt);
108
109 /* filePutc.c */
110 StgInt  filePutc    (StgForeignPtr, StgChar);
111
112 /* fileSize.c */
113 StgInt  fileSize    (StgForeignPtr, StgByteArray);
114 StgInt  fileSize_int64 (StgForeignPtr, StgByteArray);
115
116 /* flushFile.c */
117 StgInt  flushFile   (StgForeignPtr);
118 StgInt  flushBuffer (StgForeignPtr);
119 StgInt  flushReadBuffer (StgForeignPtr);
120
121 /* freeFile.c */
122 void freeStdFile (StgForeignPtr);
123 void freeFile (StgForeignPtr);
124 void freeStdFileObject (StgForeignPtr);
125 void freeFileObject (StgForeignPtr);
126
127 StgAddr ref_freeStdFileObject (void);
128 StgAddr ref_freeFileObject    (void);
129
130 /* getBufferMode.c */
131 StgInt  getBufferMode (StgForeignPtr);
132
133 /* getClockTime.c */
134 StgInt  getClockTime (StgByteArray, StgByteArray);
135 StgInt  prim_getClockTime(StgByteArray, StgByteArray);
136
137 /* getCPUTime.c */
138 StgByteArray getCPUTime (StgByteArray);
139 StgInt clockTicks(void);
140
141 /* getCurrentDirectory.c */
142 StgAddr getCurrentDirectory(void);
143
144 /* getDirectoryContents.c */
145 StgAddr getDirectoryContents (StgByteArray);
146
147 /* getLock.c */
148 int     lockFile    (int, int);
149 int     unlockFile  (int);
150 StgInt  getLock     (StgInt, StgInt);
151
152 /* inputReady.c */
153 StgInt  inputReady  (StgForeignPtr, StgInt);
154
155 /* openFile.c */
156 IOFileObject* openFile    (StgByteArray, StgInt, StgInt, StgInt);
157 IOFileObject* openFd      (StgInt, StgInt, StgInt);
158 IOFileObject* openStdFile (StgInt, StgInt, StgInt);
159
160 /* progargs.c */
161 StgAddr get_prog_argv(void);
162 StgInt  get_prog_argc(void);
163
164 /* readFile.c */
165 StgInt  readBlock (StgForeignPtr);
166 StgInt  readChunk (StgForeignPtr,StgAddr,StgInt);
167 StgInt  readLine  (StgForeignPtr);
168 StgInt  readChar  (StgForeignPtr);
169
170 /* removeDirectory.c */
171 StgInt removeDirectory (StgByteArray);
172
173 /* removeFile.c */
174 StgInt removeFile (StgByteArray);
175
176 /* renameDirectory.c */
177 StgInt renameDirectory (StgByteArray, StgByteArray);
178
179 /* renameFile.c */
180 StgInt renameFile (StgByteArray, StgByteArray);
181
182 /* seekFile.c */
183 StgInt  seekFile  (StgForeignPtr, StgInt, StgInt, StgByteArray);
184 StgInt  seekFile_int64 (StgForeignPtr, StgInt, StgInt64);
185 StgInt  seekFileP (StgForeignPtr);
186
187 /* setBuffering.c */
188 StgInt  setBuffering (StgForeignPtr, StgInt);
189 StgInt  const_BUFSIZ (void);
190
191 /* setCurrentDirectory.c */
192 StgInt setCurrentDirectory (StgByteArray);
193
194 /* showTime.c */
195 StgAddr showTime (StgInt, StgByteArray, StgByteArray);
196
197 /* system.c */
198 StgInt  systemCmd (StgByteArray);
199
200 /* timezone.c */
201 StgInt get_tm_sec   ( StgAddr );
202 StgInt get_tm_min   ( StgAddr );
203 StgInt get_tm_hour  ( StgAddr );
204 StgInt get_tm_mday  ( StgAddr );
205 StgInt get_tm_mon   ( StgAddr );
206 StgInt get_tm_year  ( StgAddr );
207 StgInt get_tm_wday  ( StgAddr );
208 StgInt get_tm_yday  ( StgAddr );
209 StgInt get_tm_isdst ( StgAddr );
210 StgAddr prim_ZONE    ( StgAddr );
211 StgInt prim_GMTOFF  ( StgAddr );
212 StgInt prim_SETZONE ( StgAddr, StgAddr );
213 StgInt sizeof_word      ( void ); 
214 StgInt sizeof_struct_tm ( void );
215 StgInt sizeof_time_t    ( void );
216
217 /* toLocalTime.c */
218 StgAddr toLocalTime (StgInt, StgByteArray, StgByteArray);
219 StgInt prim_toLocalTime ( StgInt64,StgByteArray );
220
221 /* toUTCTime.c */
222 StgAddr toUTCTime (StgInt, StgByteArray, StgByteArray);
223 StgInt prim_toUTCTime ( StgInt64,StgByteArray );
224
225 /* toClockSec.c */
226 StgAddr toClockSec (StgInt, StgInt, StgInt, StgInt, StgInt, StgInt, StgInt, StgByteArray);
227 StgInt prim_toClockSec(StgInt, StgInt, StgInt, StgInt, StgInt, StgInt, StgInt, StgByteArray);
228
229 /* writeError.c */
230 void    writeErrString__ (StgAddr, StgByteArray, StgInt);
231 /* writeFile.c */
232 StgInt  writeBuf  (StgForeignPtr, StgAddr, StgInt);
233 StgInt  writeBufBA  (StgForeignPtr, StgByteArray, StgInt);
234 StgInt  writeFileObject (StgForeignPtr, StgInt);
235 StgInt  writeBuffer (StgForeignPtr, StgInt);
236
237 #endif /* ! STGIO_H */
238
239