1 /* -----------------------------------------------------------------------------
2 * $Id: stgio.h,v 1.20 2000/05/18 11:33:21 panne Exp $
4 * (c) The GRASP/AQUA Project, Glasgow University, 1994-1999
6 * Helper code for GHC's IO subsystem.
8 * ---------------------------------------------------------------------------*/
14 #include "fileObject.h"
16 /* Function prototypes for the I/O subsytem...
20 StgAddr allocMemory__ (StgInt);
23 StgInt closeFile (StgForeignPtr,StgInt);
25 /* createDirectory.c */
26 StgInt createDirectory (StgByteArray);
29 StgAddr openDir__ (StgByteArray);
30 StgAddr readDir__ (StgAddr);
31 StgAddr get_dirent_d_name (StgAddr);
32 StgWord get_stat_st_mode (StgAddr);
33 StgInt64 get_stat_st_mtime(StgAddr);
34 void set_stat_st_mtime(StgByteArray, StgByteArray);
35 StgInt sizeof_stat (void);
36 StgInt prim_stat (StgAddr,StgAddr);
37 StgInt const_F_OK (void);
38 StgWord const_S_IRUSR (void);
39 StgWord const_S_IWUSR (void);
40 StgWord const_S_IXUSR (void);
41 StgInt prim_S_ISDIR (StgWord);
42 StgInt prim_S_ISREG (StgWord);
45 StgInt setTerminalEcho (StgForeignPtr, StgInt);
46 StgInt getTerminalEcho (StgForeignPtr);
47 StgInt isTerminalDevice (StgForeignPtr);
50 char * strDup (const char *);
51 int setenviron (char **);
58 extern int ghc_errtype;
59 extern char* ghc_errstr;
63 void convertErrno(void);
64 StgAddr getErrStr__(void);
65 StgInt getErrNo__(void);
66 StgInt getErrType__(void);
69 int execvpe (char *, char **, char **);
72 StgInt fileEOF (StgForeignPtr);
74 StgInt fileGetc (StgForeignPtr);
77 StgInt fileLookAhead (StgForeignPtr);
78 StgInt ungetChar (StgForeignPtr,StgChar);
81 void setBufFlags (StgForeignPtr, StgInt);
82 void setBufWPtr (StgForeignPtr, StgInt);
83 StgInt getBufWPtr (StgForeignPtr);
84 void setBuf (StgForeignPtr, StgAddr, StgInt);
85 StgAddr getBuf (StgForeignPtr);
86 StgAddr getWriteableBuf (StgForeignPtr);
87 StgAddr getBufStart (StgForeignPtr,StgInt);
88 StgInt getBufSize (StgForeignPtr);
89 void setFilePtr (StgForeignPtr, StgAddr);
90 StgAddr getFilePtr (StgForeignPtr);
91 void setConnectedTo (StgForeignPtr, StgForeignPtr, StgInt);
92 void setPushbackBufSize (StgInt);
93 StgInt getPushbackBufSize (void);
94 void setNonBlockingIOFlag__ (StgForeignPtr);
95 void clearNonBlockingIOFlag__ (StgForeignPtr);
96 void setConnNonBlockingIOFlag__ (StgForeignPtr);
97 void clearConnNonBlockingIOFlag__ (StgForeignPtr);
98 StgInt getFileFd (StgForeignPtr);
99 StgInt getConnFileFd (StgForeignPtr);
100 StgInt fill_up_line_buffer(IOFileObject*);
103 StgInt getFilePosn (StgForeignPtr);
104 StgInt setFilePosn (StgForeignPtr, StgInt, StgByteArray);
107 StgInt filePutc (StgForeignPtr, StgChar);
110 StgInt fileSize (StgForeignPtr, StgByteArray);
111 StgInt fileSize_int64 (StgForeignPtr, StgByteArray);
114 StgInt flushFile (StgForeignPtr);
115 StgInt flushBuffer (StgForeignPtr);
116 StgInt flushReadBuffer (StgForeignPtr);
117 void flushConnectedBuf (StgForeignPtr);
120 void freeStdFile (StgAddr);
121 void freeStdFileObject (StgAddr);
122 void freeFileObject (StgAddr);
124 StgAddr ref_freeStdFileObject (void);
125 StgAddr ref_freeFileObject (void);
127 /* getBufferMode.c */
128 StgInt getBufferMode (StgForeignPtr);
131 StgInt getClockTime (StgByteArray, StgByteArray);
132 StgInt prim_getClockTime(StgByteArray, StgByteArray);
135 StgInt getCPUTime (StgByteArray);
136 StgInt clockTicks(void);
138 /* getCurrentDirectory.c */
139 StgAddr getCurrentDirectory(void);
141 /* getDirectoryContents.c */
142 StgAddr getDirectoryContents (StgByteArray);
145 int lockFile (int, int, int);
146 int unlockFile (int);
147 StgInt getLock (StgInt, StgInt);
150 StgInt inputReady (StgForeignPtr, StgInt);
153 IOFileObject* openFile (StgByteArray, StgInt, StgInt);
154 IOFileObject* openFd (StgInt, StgInt, StgInt);
155 IOFileObject* openStdFile (StgInt, StgInt);
158 StgAddr get_prog_argv(void);
159 StgInt get_prog_argc(void);
162 StgInt readBlock (StgForeignPtr);
163 StgInt readChunk (StgForeignPtr,StgAddr,StgInt,StgInt);
164 StgInt readLine (StgForeignPtr);
165 StgInt readChar (StgForeignPtr);
167 /* removeDirectory.c */
168 StgInt removeDirectory (StgByteArray);
171 StgInt removeFile (StgByteArray);
173 /* renameDirectory.c */
174 StgInt renameDirectory (StgByteArray, StgByteArray);
177 StgInt renameFile (StgByteArray, StgByteArray);
180 StgInt seekFile (StgForeignPtr, StgInt, StgInt, StgByteArray);
181 StgInt seekFile_int64 (StgForeignPtr, StgInt, StgInt64);
182 StgInt seekFileP (StgForeignPtr);
184 /* setBinaryMode.c */
185 StgInt setBinaryMode__ (StgForeignPtr, StgInt);
188 StgInt setBuffering (StgForeignPtr, StgInt);
189 StgInt const_BUFSIZ (void);
191 /* setCurrentDirectory.c */
192 StgInt setCurrentDirectory (StgByteArray);
195 StgInt showTime (StgInt, StgByteArray, StgInt, StgByteArray);
198 StgInt systemCmd (StgByteArray);
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 void prim_SETZONE ( StgAddr, StgAddr );
213 StgInt sizeof_word ( void );
214 StgInt sizeof_struct_tm ( void );
215 StgInt sizeof_time_t ( void );
216 char* get_ZONE ( StgAddr );
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 StgInt toClockSec (StgInt, StgInt, StgInt, StgInt, StgInt, StgInt, StgInt, StgByteArray);
230 StgAddr addrOf_ErrorHdrHook(void);
231 void writeErrString__ (StgAddr, StgByteArray, StgInt);
234 StgInt writeBuf (StgForeignPtr, StgAddr, StgInt, StgInt);
235 StgInt writeBufBA (StgForeignPtr, StgByteArray, StgInt, StgInt);
236 StgInt writeFileObject (StgForeignPtr, StgInt);
237 StgInt writeBuffer (StgForeignPtr, StgInt);
238 StgInt write_ (StgForeignPtr ptr, StgAddr buf, StgInt len);
240 #endif /* ! STGIO_H */