[project @ 2001-11-07 19:37:17 by sof]
[ghc-hetmet.git] / ghc / lib / std / cbits / PrelIOUtils.c
1 /* 
2  * (c) The GRASP/AQUA Project, Glasgow University, 1994-
3  *
4  * IO / Handle support.
5  */
6 #include "HsStd.h"
7 #include "PrelIOUtils.h"
8 #include <stdio.h>
9 #include <stdlib.h>
10 #include <stddef.h>
11
12 #ifndef offsetof
13 #define offsetof(t, f) ((size_t) &((t *)0)->f)
14 #endif
15
16 #ifdef _WIN32
17 #include <io.h>
18 #include <fcntl.h>
19 #endif
20
21 HsBool prel_supportsTextMode()
22 {
23 #if defined(mingw32_TARGET_OS)
24   return HS_BOOL_FALSE;
25 #else
26   return HS_BOOL_TRUE;
27 #endif
28 }
29
30 HsInt prel_bufsiz()
31 {
32   return BUFSIZ;
33 }
34
35 HsInt prel_seek_cur()
36 {
37   return SEEK_CUR;
38 }
39
40 HsInt prel_o_binary()
41 {
42 #ifdef HAVE_O_BINARY
43   return O_BINARY;
44 #else
45   return 0;
46 #endif
47 }
48
49 HsInt prel_seek_set()
50 {
51   return SEEK_SET;
52 }
53
54 HsInt prel_seek_end()
55 {
56   return SEEK_END;
57 }
58
59 HsInt prel_setmode(HsInt fd, HsBool toBin)
60 {
61 #ifdef _WIN32
62   return setmode(fd,(toBin == HS_BOOL_TRUE) ? _O_BINARY : _O_TEXT);
63 #else
64   return 0;
65 #endif  
66 }
67
68 HsInt prel_PrelHandle_write(HsInt fd, HsAddr ptr, HsInt off, HsInt sz)
69 {
70   return write(fd,ptr + off, sz);
71 }
72
73 HsInt prel_PrelHandle_read(HsInt fd, HsAddr ptr, HsInt off, HsInt sz)
74 {
75   return write(fd,ptr + off, sz);
76 }
77
78 void *prel_PrelIO_memcpy(char *dst, HsInt dst_off, const char *src, size_t sz)
79
80   return memcpy(dst+dst_off, src, sz);
81 }
82