Import Upstream version 20180207
[hcoop/debian/mlton.git] / basis-library / posix / io.sig
1 signature POSIX_IO =
2 sig
3 eqtype file_desc
4 eqtype pid
5
6 val pipe: unit -> {infd: file_desc, outfd: file_desc}
7 val dup: file_desc -> file_desc
8 val dup2: {old: file_desc, new: file_desc} -> unit
9
10 val close: file_desc -> unit
11 val readVec: file_desc * int -> Word8Vector.vector
12 val readArr: file_desc * Word8ArraySlice.slice -> int
13 val writeVec: file_desc * Word8VectorSlice.slice -> int
14 val writeArr: file_desc * Word8ArraySlice.slice -> int
15
16 datatype whence = SEEK_SET | SEEK_CUR | SEEK_END
17
18 structure FD:
19 sig
20 include BIT_FLAGS
21
22 val cloexec: flags
23 end
24
25 structure O:
26 sig
27 include BIT_FLAGS
28
29 val append: flags
30 val nonblock: flags
31 val sync: flags
32 end
33
34 datatype open_mode = O_RDONLY | O_WRONLY | O_RDWR
35
36 val dupfd: {old: file_desc, base: file_desc} -> file_desc
37 val getfd: file_desc -> FD.flags
38 val setfd: file_desc * FD.flags -> unit
39 val getfl: file_desc -> O.flags * open_mode
40 val setfl: file_desc * O.flags -> unit
41 val lseek: file_desc * Position.int * whence -> Position.int
42 val fsync: file_desc -> unit
43
44 datatype lock_type = F_RDLCK | F_WRLCK | F_UNLCK
45
46 structure FLock:
47 sig
48 type flock
49 val flock: {ltype: lock_type,
50 whence: whence,
51 start: Position.int,
52 len: Position.int,
53 pid: pid option} -> flock
54 val ltype: flock -> lock_type
55 val whence: flock -> whence
56 val start: flock -> Position.int
57 val len: flock -> Position.int
58 val pid: flock -> pid option
59 end
60
61 val getlk: file_desc * FLock.flock -> FLock.flock
62 val setlk: file_desc * FLock.flock -> FLock.flock
63 val setlkw: file_desc * FLock.flock -> FLock.flock
64
65 val mkBinReader: {fd: file_desc,
66 name: string,
67 initBlkMode: bool} -> BinPrimIO.reader
68 val mkTextReader: {fd: file_desc,
69 name: string,
70 initBlkMode: bool} -> TextPrimIO.reader
71 val mkBinWriter: {fd: file_desc,
72 name: string,
73 appendMode: bool,
74 initBlkMode: bool,
75 chunkSize: int} -> BinPrimIO.writer
76 val mkTextWriter: {fd: file_desc,
77 name: string,
78 appendMode: bool,
79 initBlkMode: bool,
80 chunkSize: int} -> TextPrimIO.writer
81 end