[project @ 2000-03-10 15:23:40 by simonmar]
[ghc-hetmet.git] / ghc / lib / std / cbits / stgio.h
1 /* -----------------------------------------------------------------------------
2  * $Id: stgio.h,v 1.17 2000/03/10 15:23:40 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 (StgForeignPtr);
121 void freeFile (StgForeignPtr);
122 void freeStdFileObject (StgForeignPtr);
123 void freeFileObject (StgForeignPtr);
124
125 StgAddr ref_freeStdFileObject (void);
126 StgAddr ref_freeFileObject    (void);
127
128 /* getBufferMode.c */
129 StgInt  getBufferMode (StgForeignPtr);
130
131 /* getClockTime.c */
132 StgInt  getClockTime (StgByteArray, StgByteArray);
133 StgInt  prim_getClockTime(StgByteArray, StgByteArray);
134
135 /* getCPUTime.c */
136 StgInt getCPUTime (StgByteArray);
137 StgInt clockTicks(void);
138
139 /* getCurrentDirectory.c */
140 StgAddr getCurrentDirectory(void);
141
142 /* getDirectoryContents.c */
143 StgAddr getDirectoryContents (StgByteArray);
144
145 /* getLock.c */
146 int     lockFile    (int, int, int);
147 int     unlockFile  (int);
148 StgInt  getLock     (StgInt, StgInt);
149
150 /* inputReady.c */
151 StgInt  inputReady  (StgForeignPtr, StgInt);
152
153 /* openFile.c */
154 IOFileObject* openFile    (StgByteArray, StgInt, StgInt);
155 IOFileObject* openFd      (StgInt, StgInt, StgInt);
156 IOFileObject* openStdFile (StgInt, StgInt);
157
158 /* progargs.c */
159 StgAddr get_prog_argv(void);
160 StgInt  get_prog_argc(void);
161
162 /* readFile.c */
163 StgInt  readBlock (StgForeignPtr);
164 StgInt  readChunk (StgForeignPtr,StgAddr,StgInt,StgInt);
165 StgInt  readLine  (StgForeignPtr);
166 StgInt  readChar  (StgForeignPtr);
167
168 /* removeDirectory.c */
169 StgInt removeDirectory (StgByteArray);
170
171 /* removeFile.c */
172 StgInt removeFile (StgByteArray);
173
174 /* renameDirectory.c */
175 StgInt renameDirectory (StgByteArray, StgByteArray);
176
177 /* renameFile.c */
178 StgInt renameFile (StgByteArray, StgByteArray);
179
180 /* seekFile.c */
181 StgInt  seekFile  (StgForeignPtr, StgInt, StgInt, StgByteArray);
182 StgInt  seekFile_int64 (StgForeignPtr, StgInt, StgInt64);
183 StgInt  seekFileP (StgForeignPtr);
184
185 /* setBinaryMode.c */
186 StgInt  setBinaryMode__ (StgForeignPtr, StgInt);
187
188 /* setBuffering.c */
189 StgInt  setBuffering (StgForeignPtr, StgInt);
190 StgInt  const_BUFSIZ (void);
191
192 /* setCurrentDirectory.c */
193 StgInt setCurrentDirectory (StgByteArray);
194
195 /* showTime.c */
196 StgInt showTime (StgInt, StgByteArray, StgInt, StgByteArray);
197
198 /* system.c */
199 StgInt  systemCmd (StgByteArray);
200
201 /* timezone.c */
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 void    prim_SETZONE     ( StgAddr, StgAddr );
214 StgInt  sizeof_word      ( void ); 
215 StgInt  sizeof_struct_tm ( void );
216 StgInt  sizeof_time_t    ( void );
217 char*   get_ZONE         ( StgAddr );
218
219 /* toLocalTime.c */
220 StgAddr toLocalTime (StgInt, StgByteArray, StgByteArray);
221 StgInt prim_toLocalTime ( StgInt64,StgByteArray );
222
223 /* toUTCTime.c */
224 StgAddr toUTCTime (StgInt, StgByteArray, StgByteArray);
225 StgInt prim_toUTCTime ( StgInt64,StgByteArray );
226
227 /* toClockSec.c */
228 StgInt toClockSec (StgInt, StgInt, StgInt, StgInt, StgInt, StgInt, StgInt, StgByteArray);
229
230 /* writeError.c */
231 void    writeErrString__ (StgAddr, StgByteArray, StgInt);
232 /* writeFile.c */
233 StgInt  writeBuf  (StgForeignPtr, StgAddr, StgInt, StgInt);
234 StgInt  writeBufBA  (StgForeignPtr, StgByteArray, StgInt, StgInt);
235 StgInt  writeFileObject (StgForeignPtr, StgInt);
236 StgInt  writeBuffer (StgForeignPtr, StgInt);
237
238 #endif /* ! STGIO_H */
239
240