[project @ 1999-01-15 17:54:20 by sof]
[ghc-hetmet.git] / ghc / lib / std / cbits / stgio.h
1 /* 
2  * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
3  *
4  * $Id: stgio.h,v 1.9 1999/01/15 17:54:23 sof Exp $
5  *
6  * Helper code for GHC's IO subsystem.
7  */
8
9 #ifndef STGIO_H
10 #define STGIO_H
11
12 #include "fileObject.h"
13
14 /* Decls for routines in ghc/lib/cbits/ only used there.
15  * This file is used when compiling the Haskell library
16  * that _ccalls_ those routines; and when compiling those
17  * routines (to check consistency).
18  */
19
20 #include "error.h"
21
22 /* closeFile.c */
23 StgAddr allocMemory__ (StgInt);
24
25 /* closeFile.c */
26 StgInt closeFile (StgForeignPtr,StgInt);
27
28 /* createDirectory.c */
29 StgInt createDirectory (StgByteArray);
30
31 /* directoryAux.c */
32 StgAddr openDir__         (StgByteArray);
33 StgAddr readDir__         (StgAddr);
34 StgAddr get_dirent_d_name (StgAddr);
35 StgWord get_stat_st_mode  (StgAddr);
36 StgInt64 get_stat_st_mtime(StgAddr);
37 void     set_stat_st_mtime(StgByteArray, StgByteArray);
38 StgInt  sizeof_stat       (void);
39 StgInt  prim_stat         (StgAddr,StgAddr);
40 StgInt  const_F_OK        (void);
41 StgWord const_S_IRUSR     (void);
42 StgWord const_S_IWUSR     (void);
43 StgWord const_S_IXUSR     (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);
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 (StgForeignPtr);
124 void freeFile (StgForeignPtr);
125 void freeStdFileObject (StgForeignPtr);
126 void freeFileObject (StgForeignPtr);
127
128 StgAddr ref_freeStdFileObject (void);
129 StgAddr ref_freeFileObject    (void);
130
131 /* getBufferMode.c */
132 StgInt  getBufferMode (StgForeignPtr);
133
134 /* getClockTime.c */
135 StgInt  getClockTime (StgByteArray, StgByteArray);
136 StgInt  prim_getClockTime(StgByteArray, StgByteArray);
137
138 /* getCPUTime.c */
139 StgByteArray getCPUTime (StgByteArray);
140 StgInt clockTicks(void);
141
142 /* getCurrentDirectory.c */
143 StgAddr getCurrentDirectory(void);
144
145 /* getDirectoryContents.c */
146 StgAddr getDirectoryContents (StgByteArray);
147
148 /* getLock.c */
149 int     lockFile    (int, int);
150 int     unlockFile  (int);
151 StgInt  getLock     (StgInt, StgInt);
152
153 /* inputReady.c */
154 StgInt  inputReady  (StgForeignPtr, StgInt);
155
156 /* openFile.c */
157 IOFileObject* openFile    (StgByteArray, StgInt, StgInt, StgInt);
158 IOFileObject* openFd      (StgInt, StgInt, StgInt);
159 IOFileObject* openStdFile (StgInt, StgInt, StgInt);
160
161 /* progargs.c */
162 StgAddr get_prog_argv(void);
163 StgInt  get_prog_argc(void);
164
165 /* readFile.c */
166 StgInt  readBlock (StgForeignPtr);
167 StgInt  readChunk (StgForeignPtr,StgAddr,StgInt);
168 StgInt  readLine  (StgForeignPtr);
169 StgInt  readChar  (StgForeignPtr);
170
171 /* removeDirectory.c */
172 StgInt removeDirectory (StgByteArray);
173
174 /* removeFile.c */
175 StgInt removeFile (StgByteArray);
176
177 /* renameDirectory.c */
178 StgInt renameDirectory (StgByteArray, StgByteArray);
179
180 /* renameFile.c */
181 StgInt renameFile (StgByteArray, StgByteArray);
182
183 /* seekFile.c */
184 StgInt  seekFile  (StgForeignPtr, StgInt, StgInt, StgByteArray);
185 StgInt  seekFile_int64 (StgForeignPtr, StgInt, StgInt64);
186 StgInt  seekFileP (StgForeignPtr);
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 StgAddr showTime (StgInt, StgByteArray, 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 StgInt prim_SETZONE ( StgAddr, StgAddr );
214 StgInt sizeof_word      ( void ); 
215 StgInt sizeof_struct_tm ( void );
216 StgInt sizeof_time_t    ( void );
217
218 /* toLocalTime.c */
219 StgAddr toLocalTime (StgInt, StgByteArray, StgByteArray);
220 StgInt prim_toLocalTime ( StgInt64,StgByteArray );
221
222 /* toUTCTime.c */
223 StgAddr toUTCTime (StgInt, StgByteArray, StgByteArray);
224 StgInt prim_toUTCTime ( StgInt64,StgByteArray );
225
226 /* toClockSec.c */
227 StgAddr toClockSec (StgInt, StgInt, StgInt, StgInt, StgInt, StgInt, StgInt, StgByteArray);
228 StgInt prim_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);
234 StgInt  writeBufBA  (StgForeignPtr, StgByteArray, StgInt);
235 StgInt  writeFileObject (StgForeignPtr, StgInt);
236 StgInt  writeBuffer (StgForeignPtr, StgInt);
237
238 #endif /* ! STGIO_H */
239
240