[project @ 2000-08-24 10:27:01 by simonmar]
[ghc-hetmet.git] / ghc / lib / std / cbits / stgio.h
1 /* -----------------------------------------------------------------------------
2  * $Id: stgio.h,v 1.23 2000/08/24 10:27:01 simonmar Exp $
3  *
4  * (c) The GRASP/AQUA Project, Glasgow University, 1994-1999
5  *
6  * Helper code for GHC's IO subsystem.
7  *
8  * ---------------------------------------------------------------------------*/
9
10 #ifndef STGIO_H
11 #define STGIO_H
12
13 #include "stgerror.h"
14 #include "fileObject.h"
15
16 /* Function prototypes for the I/O subsytem...
17  */
18
19 /* closeFile.c */
20 StgAddr allocMemory__ (StgInt);
21
22 /* closeFile.c */
23 StgInt closeFile (StgForeignPtr,StgInt);
24
25 /* createDirectory.c */
26 StgInt createDirectory (StgByteArray);
27
28 /* directoryAux.c */
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 StgWord const_S_IRUSR     (void);
38 StgWord const_S_IWUSR     (void);
39 StgWord const_S_IXUSR     (void);
40 StgWord const_R_OK        (void);
41 StgWord const_W_OK        (void);
42 StgWord const_X_OK        (void);
43 StgWord const_F_OK        (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, StgByteArray);
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 void    flushConnectedBuf (StgForeignPtr);
121
122 /* freeFile.c */
123 void freeStdFile (StgAddr);
124 void freeStdFileObject (StgAddr);
125 void freeFileObject (StgAddr);
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 StgInt 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, 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);
157 IOFileObject* openFd      (StgInt, StgInt, StgInt);
158 IOFileObject* openStdFile (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,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 /* setBinaryMode.c */
188 StgInt  setBinaryMode__ (StgForeignPtr, StgInt);
189
190 /* setBuffering.c */
191 StgInt  setBuffering (StgForeignPtr, StgInt);
192 StgInt  const_BUFSIZ (void);
193
194 /* setCurrentDirectory.c */
195 StgInt setCurrentDirectory (StgByteArray);
196
197 /* showTime.c */
198 StgInt showTime (StgInt, StgByteArray, StgInt, StgByteArray);
199
200 /* system.c */
201 StgInt  systemCmd (StgByteArray);
202
203 /* timezone.c */
204 StgInt  get_tm_sec       ( StgAddr );
205 StgInt  get_tm_min       ( StgAddr );
206 StgInt  get_tm_hour      ( StgAddr );
207 StgInt  get_tm_mday      ( StgAddr );
208 StgInt  get_tm_mon       ( StgAddr );
209 StgInt  get_tm_year      ( StgAddr );
210 StgInt  get_tm_wday      ( StgAddr );
211 StgInt  get_tm_yday      ( StgAddr );
212 StgInt  get_tm_isdst     ( StgAddr );
213 StgAddr prim_ZONE        ( StgAddr );
214 StgInt  prim_GMTOFF      ( StgAddr );
215 void    prim_SETZONE     ( StgAddr, StgAddr );
216 StgInt  sizeof_word      ( void ); 
217 StgInt  sizeof_struct_tm ( void );
218 StgInt  sizeof_time_t    ( void );
219 char*   get_ZONE         ( StgAddr );
220
221 /* toLocalTime.c */
222 StgInt toLocalTime (StgInt, StgByteArray, StgByteArray);
223 StgInt prim_toLocalTime ( StgInt64,StgByteArray );
224
225 /* toUTCTime.c */
226 StgInt toUTCTime (StgInt, StgByteArray, StgByteArray);
227 StgInt prim_toUTCTime ( StgInt64,StgByteArray );
228
229 /* toClockSec.c */
230 StgInt toClockSec (StgInt, StgInt, StgInt, StgInt, StgInt, StgInt, StgInt, StgInt, StgByteArray);
231
232 /* writeError.c */
233 StgAddr addrOf_ErrorHdrHook(void);
234 void    writeErrString__ (StgAddr, StgByteArray, StgInt);
235
236 /* writeFile.c */
237 StgInt  writeBuf  (StgForeignPtr, StgAddr, StgInt, StgInt);
238 StgInt  writeBufBA  (StgForeignPtr, StgByteArray, StgInt, StgInt);
239 StgInt  writeFileObject (StgForeignPtr, StgInt);
240 StgInt  writeBuffer (StgForeignPtr, StgInt);
241 StgInt  write_ (StgForeignPtr ptr, StgAddr buf, StgInt len);
242
243 #endif /* ! STGIO_H */
244
245