2 * (c) The GRASP/AQUA Project, Glasgow University, 1994-
7 #include "PrelIOUtils.h"
13 #define offsetof(t, f) ((size_t) &((t *)0)->f)
21 HsBool prel_supportsTextMode()
23 #if defined(mingw32_TARGET_OS)
121 int prel_o_nonblock()
130 HsInt prel_seek_set()
135 HsInt prel_seek_end()
140 HsInt prel_setmode(HsInt fd, HsBool toBin)
143 return setmode(fd,(toBin == HS_BOOL_TRUE) ? _O_BINARY : _O_TEXT);
149 HsInt prel_PrelHandle_write(HsInt fd, HsBool isSock, HsAddr ptr, HsInt off, int sz)
153 return send(fd,ptr + off, sz, 0);
156 return write(fd,ptr + off, sz);
159 HsInt prel_PrelHandle_read(HsInt fd, HsBool isSock, HsAddr ptr, HsInt off, int sz)
163 return recv(fd,ptr + off, sz, 0);
166 return read(fd,ptr + off, sz);
170 void *prel_PrelIO_memcpy(char *dst, HsInt dst_off, const char *src, HsInt src_off, size_t sz)
172 return memcpy(dst+dst_off, src+src_off, sz);
176 int s_isreg_PrelPosix_wrap(int m) { return S_ISREG(m); }
177 int s_isdir_PrelPosix_wrap(int m) { return S_ISDIR(m); }
178 int s_isfifo_PrelPosix_wrap(int m) { return S_ISFIFO(m); }
179 int s_isblk_PrelPosix_wrap(int m) { return S_ISBLK(m); }
180 int s_ischr_PrelPosix_wrap(int m) { return S_ISCHR(m); }
181 #ifndef mingw32_TARGET_OS
182 int s_issock_PrelPosix_wrap(int m) { return S_ISSOCK(m); }
183 void sigemptyset_PrelPosix_wrap(sigset_t *set) { sigemptyset(set); }
186 HsInt prel_sizeof_stat()
188 return sizeof(struct stat);
191 time_t prel_st_mtime(struct stat* st) { return st->st_mtime; }
192 off_t prel_st_size(struct stat* st) { return st->st_size; }
193 mode_t prel_st_mode(struct stat* st) { return st->st_mode; }
196 tcflag_t prel_lflag(struct termios* ts) { return ts->c_lflag; }
197 void prel_poke_lflag(struct termios* ts, tcflag_t t) { ts->c_lflag = t; }
198 unsigned char* prel_ptr_c_cc(struct termios* ts) { return ((unsigned char*)(ts + offsetof(struct termios, c_cc))); }
201 HsInt prel_sizeof_termios()
203 #ifndef mingw32_TARGET_OS
204 return sizeof(struct termios);
210 HsInt prel_sizeof_sigset_t()
212 #ifndef mingw32_TARGET_OS
213 return sizeof(sigset_t);
283 int prel_sig_setmask()