1 ! Copyright (C) 2008 Doug Coleman.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: alien.c-types io.encodings.utf8 io.encodings.string
4 kernel sequences unix.stat accessors unix combinators math
5 grouping system alien.strings math.bitwise alien.syntax
6 unix.types classes.struct ;
9 CONSTANT: MNT_RDONLY HEX: 00000001
10 CONSTANT: MNT_SYNCHRONOUS HEX: 00000002
11 CONSTANT: MNT_NOEXEC HEX: 00000004
12 CONSTANT: MNT_NOSUID HEX: 00000008
13 CONSTANT: MNT_NODEV HEX: 00000010
14 CONSTANT: MNT_UNION HEX: 00000020
15 CONSTANT: MNT_ASYNC HEX: 00000040
16 CONSTANT: MNT_EXPORTED HEX: 00000100
17 CONSTANT: MNT_QUARANTINE HEX: 00000400
18 CONSTANT: MNT_LOCAL HEX: 00001000
19 CONSTANT: MNT_QUOTA HEX: 00002000
20 CONSTANT: MNT_ROOTFS HEX: 00004000
21 CONSTANT: MNT_DOVOLFS HEX: 00008000
22 CONSTANT: MNT_DONTBROWSE HEX: 00100000
23 CONSTANT: MNT_IGNORE_OWNERSHIP HEX: 00200000
24 CONSTANT: MNT_AUTOMOUNTED HEX: 00400000
25 CONSTANT: MNT_JOURNALED HEX: 00800000
26 CONSTANT: MNT_NOUSERXATTR HEX: 01000000
27 CONSTANT: MNT_DEFWRITE HEX: 02000000
28 CONSTANT: MNT_MULTILABEL HEX: 04000000
29 CONSTANT: MNT_NOATIME HEX: 10000000
30 ALIAS: MNT_UNKNOWNPERMISSIONS MNT_IGNORE_OWNERSHIP
32 : MNT_VISFLAGMASK ( -- n )
34 MNT_RDONLY MNT_SYNCHRONOUS MNT_NOEXEC
35 MNT_NOSUID MNT_NODEV MNT_UNION
36 MNT_ASYNC MNT_EXPORTED MNT_QUARANTINE
38 MNT_ROOTFS MNT_DOVOLFS MNT_DONTBROWSE
39 MNT_IGNORE_OWNERSHIP MNT_AUTOMOUNTED MNT_JOURNALED
40 MNT_NOUSERXATTR MNT_DEFWRITE MNT_MULTILABEL MNT_NOATIME
43 CONSTANT: MNT_UPDATE HEX: 00010000
44 CONSTANT: MNT_RELOAD HEX: 00040000
45 CONSTANT: MNT_FORCE HEX: 00080000
47 : MNT_CMDFLAGS ( -- n )
48 { MNT_UPDATE MNT_RELOAD MNT_FORCE } flags ; inline
50 CONSTANT: VFS_GENERIC 0
51 CONSTANT: VFS_NUMMNTOPS 1
52 CONSTANT: VFS_MAXTYPENUM 1
54 CONSTANT: VFS_SET_PACKAGE_EXTS 3
57 CONSTANT: MNT_NOWAIT 2
59 CONSTANT: VFS_CTL_VERS1 HEX: 01
61 CONSTANT: VFS_CTL_STATFS HEX: 00010001
62 CONSTANT: VFS_CTL_UMOUNT HEX: 00010002
63 CONSTANT: VFS_CTL_QUERY HEX: 00010003
64 CONSTANT: VFS_CTL_NEWADDR HEX: 00010004
65 CONSTANT: VFS_CTL_TIMEO HEX: 00010005
66 CONSTANT: VFS_CTL_NOLOCKS HEX: 00010006
70 { vq_spare uint32_t[31] } ;
72 CONSTANT: VQ_NOTRESP HEX: 0001
73 CONSTANT: VQ_NEEDAUTH HEX: 0002
74 CONSTANT: VQ_LOWDISK HEX: 0004
75 CONSTANT: VQ_MOUNT HEX: 0008
76 CONSTANT: VQ_UNMOUNT HEX: 0010
77 CONSTANT: VQ_DEAD HEX: 0020
78 CONSTANT: VQ_ASSIST HEX: 0040
79 CONSTANT: VQ_NOTRESPLOCK HEX: 0080
80 CONSTANT: VQ_UPDATE HEX: 0100
81 CONSTANT: VQ_FLAG0200 HEX: 0200
82 CONSTANT: VQ_FLAG0400 HEX: 0400
83 CONSTANT: VQ_FLAG0800 HEX: 0800
84 CONSTANT: VQ_FLAG1000 HEX: 1000
85 CONSTANT: VQ_FLAG2000 HEX: 2000
86 CONSTANT: VQ_FLAG4000 HEX: 4000
87 CONSTANT: VQ_FLAG8000 HEX: 8000
89 CONSTANT: NFSV4_MAX_FH_SIZE 128
90 CONSTANT: NFSV3_MAX_FH_SIZE 64
91 CONSTANT: NFSV2_MAX_FH_SIZE 32
92 ALIAS: NFS_MAX_FH_SIZE NFSV4_MAX_FH_SIZE
94 CONSTANT: MFSNAMELEN 15
96 CONSTANT: MFSTYPENAMELEN 16
104 { f_blocks uint64_t }
106 { f_bavail uint64_t }
113 { f_fssubtype uint32_t }
114 { f_fstypename { char MFSTYPENAMELEN } }
115 { f_mntonname { char MAXPATHLEN } }
116 { f_mntfromname { char MAXPATHLEN } }
117 { f_reserved uint32_t[8] } ;
119 FUNCTION: int statfs64 ( char* path, statfs64* buf ) ;
120 FUNCTION: int getmntinfo64 ( statfs64** mntbufp, int flags ) ;