6530eeeca852fd5678f991db57fc335752b1e0ee
[ghc-hetmet.git] / ghc / lib / std / cbits / stgio.h
1 /* -----------------------------------------------------------------------------
2  * $Id: stgio.h,v 1.22 2000/06/19 13:28:35 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 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);
43
44 /* echoAux.c */
45 StgInt setTerminalEcho (StgForeignPtr, StgInt);
46 StgInt getTerminalEcho (StgForeignPtr);
47 StgInt isTerminalDevice (StgForeignPtr);
48
49 /* env.c */
50 char *  strDup          (const char *);
51 int     setenviron      (char **);
52 int     copyenv         (void);
53 int     _setenv         (char *);
54 int     delenv          (char *);
55
56 /* errno.c */
57 extern  int ghc_errno;
58 extern  int ghc_errtype;
59 extern  char* ghc_errstr;
60
61 void    cvtErrno(void);
62 void    stdErrno(void);
63 void    convertErrno(void);
64 StgAddr getErrStr__(void);
65 StgInt  getErrNo__(void);
66 StgInt  getErrType__(void);
67
68 /* execvpe.c */
69 int     execvpe (char *, char **, char **);
70
71 /* fileEOF.c */
72 StgInt  fileEOF (StgForeignPtr);
73 /* fileGetc.c */
74 StgInt  fileGetc (StgForeignPtr);
75
76 /* fileLookAhead.c */
77 StgInt  fileLookAhead (StgForeignPtr);
78 StgInt  ungetChar (StgForeignPtr,StgChar);
79
80 /* fileObject.c */
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*);
101
102 /* filePosn.c */
103 StgInt  getFilePosn (StgForeignPtr);
104 StgInt  setFilePosn (StgForeignPtr, StgInt, StgByteArray);
105
106 /* filePutc.c */
107 StgInt  filePutc    (StgForeignPtr, StgChar);
108
109 /* fileSize.c */
110 StgInt  fileSize    (StgForeignPtr, StgByteArray);
111 StgInt  fileSize_int64 (StgForeignPtr, StgByteArray);
112
113 /* flushFile.c */
114 StgInt  flushFile   (StgForeignPtr);
115 StgInt  flushBuffer (StgForeignPtr);
116 StgInt  flushReadBuffer (StgForeignPtr);
117 void    flushConnectedBuf (StgForeignPtr);
118
119 /* freeFile.c */
120 void freeStdFile (StgAddr);
121 void freeStdFileObject (StgAddr);
122 void freeFileObject (StgAddr);
123
124 StgAddr ref_freeStdFileObject (void);
125 StgAddr ref_freeFileObject    (void);
126
127 /* getBufferMode.c */
128 StgInt  getBufferMode (StgForeignPtr);
129
130 /* getClockTime.c */
131 StgInt  getClockTime (StgByteArray, StgByteArray);
132 StgInt  prim_getClockTime(StgByteArray, StgByteArray);
133
134 /* getCPUTime.c */
135 StgInt getCPUTime (StgByteArray);
136 StgInt clockTicks(void);
137
138 /* getCurrentDirectory.c */
139 StgAddr getCurrentDirectory(void);
140
141 /* getDirectoryContents.c */
142 StgAddr getDirectoryContents (StgByteArray);
143
144 /* getLock.c */
145 int     lockFile    (int, int, int);
146 int     unlockFile  (int);
147 StgInt  getLock     (StgInt, StgInt);
148
149 /* inputReady.c */
150 StgInt  inputReady  (StgForeignPtr, StgInt);
151
152 /* openFile.c */
153 IOFileObject* openFile    (StgByteArray, StgInt, StgInt);
154 IOFileObject* openFd      (StgInt, StgInt, StgInt);
155 IOFileObject* openStdFile (StgInt, StgInt);
156
157 /* progargs.c */
158 StgAddr get_prog_argv(void);
159 StgInt  get_prog_argc(void);
160
161 /* readFile.c */
162 StgInt  readBlock (StgForeignPtr);
163 StgInt  readChunk (StgForeignPtr,StgAddr,StgInt,StgInt);
164 StgInt  readLine  (StgForeignPtr);
165 StgInt  readChar  (StgForeignPtr);
166
167 /* removeDirectory.c */
168 StgInt removeDirectory (StgByteArray);
169
170 /* removeFile.c */
171 StgInt removeFile (StgByteArray);
172
173 /* renameDirectory.c */
174 StgInt renameDirectory (StgByteArray, StgByteArray);
175
176 /* renameFile.c */
177 StgInt renameFile (StgByteArray, StgByteArray);
178
179 /* seekFile.c */
180 StgInt  seekFile  (StgForeignPtr, StgInt, StgInt, StgByteArray);
181 StgInt  seekFile_int64 (StgForeignPtr, StgInt, StgInt64);
182 StgInt  seekFileP (StgForeignPtr);
183
184 /* setBinaryMode.c */
185 StgInt  setBinaryMode__ (StgForeignPtr, StgInt);
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 StgInt showTime (StgInt, StgByteArray, StgInt, 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 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 );
217
218 /* toLocalTime.c */
219 StgInt toLocalTime (StgInt, StgByteArray, StgByteArray);
220 StgInt prim_toLocalTime ( StgInt64,StgByteArray );
221
222 /* toUTCTime.c */
223 StgInt toUTCTime (StgInt, StgByteArray, StgByteArray);
224 StgInt prim_toUTCTime ( StgInt64,StgByteArray );
225
226 /* toClockSec.c */
227 StgInt toClockSec (StgInt, StgInt, StgInt, StgInt, StgInt, StgInt, StgInt, StgInt, StgByteArray);
228
229 /* writeError.c */
230 StgAddr addrOf_ErrorHdrHook(void);
231 void    writeErrString__ (StgAddr, StgByteArray, StgInt);
232
233 /* writeFile.c */
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);
239
240 #endif /* ! STGIO_H */
241
242