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