2 * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
4 * $Id: stgio.h,v 1.9 1999/01/15 17:54:23 sof Exp $
6 * Helper code for GHC's IO subsystem.
12 #include "fileObject.h"
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).
23 StgAddr allocMemory__ (StgInt);
26 StgInt closeFile (StgForeignPtr,StgInt);
28 /* createDirectory.c */
29 StgInt createDirectory (StgByteArray);
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);
48 StgInt setTerminalEcho (StgForeignPtr, StgInt);
49 StgInt getTerminalEcho (StgForeignPtr);
50 StgInt isTerminalDevice (StgForeignPtr);
53 char * strDup (const char *);
54 int setenviron (char **);
61 extern int ghc_errtype;
62 extern char* ghc_errstr;
66 void convertErrno(void);
67 StgAddr getErrStr__(void);
68 StgInt getErrNo__(void);
69 StgInt getErrType__(void);
72 int execvpe (char *, char **, char **);
75 StgInt fileEOF (StgForeignPtr);
77 StgInt fileGetc (StgForeignPtr);
80 StgInt fileLookAhead (StgForeignPtr);
81 StgInt ungetChar (StgForeignPtr,StgChar);
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*);
106 StgInt getFilePosn (StgForeignPtr);
107 StgInt setFilePosn (StgForeignPtr, StgInt);
110 StgInt filePutc (StgForeignPtr, StgChar);
113 StgInt fileSize (StgForeignPtr, StgByteArray);
114 StgInt fileSize_int64 (StgForeignPtr, StgByteArray);
117 StgInt flushFile (StgForeignPtr);
118 StgInt flushBuffer (StgForeignPtr);
119 StgInt flushReadBuffer (StgForeignPtr);
120 void flushConnectedBuf (StgForeignPtr);
123 void freeStdFile (StgForeignPtr);
124 void freeFile (StgForeignPtr);
125 void freeStdFileObject (StgForeignPtr);
126 void freeFileObject (StgForeignPtr);
128 StgAddr ref_freeStdFileObject (void);
129 StgAddr ref_freeFileObject (void);
131 /* getBufferMode.c */
132 StgInt getBufferMode (StgForeignPtr);
135 StgInt getClockTime (StgByteArray, StgByteArray);
136 StgInt prim_getClockTime(StgByteArray, StgByteArray);
139 StgByteArray getCPUTime (StgByteArray);
140 StgInt clockTicks(void);
142 /* getCurrentDirectory.c */
143 StgAddr getCurrentDirectory(void);
145 /* getDirectoryContents.c */
146 StgAddr getDirectoryContents (StgByteArray);
149 int lockFile (int, int);
150 int unlockFile (int);
151 StgInt getLock (StgInt, StgInt);
154 StgInt inputReady (StgForeignPtr, StgInt);
157 IOFileObject* openFile (StgByteArray, StgInt, StgInt, StgInt);
158 IOFileObject* openFd (StgInt, StgInt, StgInt);
159 IOFileObject* openStdFile (StgInt, StgInt, StgInt);
162 StgAddr get_prog_argv(void);
163 StgInt get_prog_argc(void);
166 StgInt readBlock (StgForeignPtr);
167 StgInt readChunk (StgForeignPtr,StgAddr,StgInt);
168 StgInt readLine (StgForeignPtr);
169 StgInt readChar (StgForeignPtr);
171 /* removeDirectory.c */
172 StgInt removeDirectory (StgByteArray);
175 StgInt removeFile (StgByteArray);
177 /* renameDirectory.c */
178 StgInt renameDirectory (StgByteArray, StgByteArray);
181 StgInt renameFile (StgByteArray, StgByteArray);
184 StgInt seekFile (StgForeignPtr, StgInt, StgInt, StgByteArray);
185 StgInt seekFile_int64 (StgForeignPtr, StgInt, StgInt64);
186 StgInt seekFileP (StgForeignPtr);
189 StgInt setBuffering (StgForeignPtr, StgInt);
190 StgInt const_BUFSIZ (void);
192 /* setCurrentDirectory.c */
193 StgInt setCurrentDirectory (StgByteArray);
196 StgAddr showTime (StgInt, StgByteArray, StgByteArray);
199 StgInt systemCmd (StgByteArray);
202 StgInt get_tm_sec ( StgAddr );
203 StgInt get_tm_min ( StgAddr );
204 StgInt get_tm_hour ( StgAddr );
205 StgInt get_tm_mday ( StgAddr );
206 StgInt get_tm_mon ( StgAddr );
207 StgInt get_tm_year ( StgAddr );
208 StgInt get_tm_wday ( StgAddr );
209 StgInt get_tm_yday ( StgAddr );
210 StgInt get_tm_isdst ( StgAddr );
211 StgAddr prim_ZONE ( StgAddr );
212 StgInt prim_GMTOFF ( StgAddr );
213 StgInt prim_SETZONE ( StgAddr, StgAddr );
214 StgInt sizeof_word ( void );
215 StgInt sizeof_struct_tm ( void );
216 StgInt sizeof_time_t ( void );
219 StgAddr toLocalTime (StgInt, StgByteArray, StgByteArray);
220 StgInt prim_toLocalTime ( StgInt64,StgByteArray );
223 StgAddr toUTCTime (StgInt, StgByteArray, StgByteArray);
224 StgInt prim_toUTCTime ( StgInt64,StgByteArray );
227 StgAddr toClockSec (StgInt, StgInt, StgInt, StgInt, StgInt, StgInt, StgInt, StgByteArray);
228 StgInt prim_toClockSec(StgInt, StgInt, StgInt, StgInt, StgInt, StgInt, StgInt, StgByteArray);
231 void writeErrString__ (StgAddr, StgByteArray, StgInt);
233 StgInt writeBuf (StgForeignPtr, StgAddr, StgInt);
234 StgInt writeBufBA (StgForeignPtr, StgByteArray, StgInt);
235 StgInt writeFileObject (StgForeignPtr, StgInt);
236 StgInt writeBuffer (StgForeignPtr, StgInt);
238 #endif /* ! STGIO_H */