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 io.files io.backend alien.strings math.bitwise
6 alien.syntax io.unix.files ;
9 : MNT_RDONLY HEX: 00000001 ; inline
10 : MNT_SYNCHRONOUS HEX: 00000002 ; inline
11 : MNT_NOEXEC HEX: 00000004 ; inline
12 : MNT_NOSUID HEX: 00000008 ; inline
13 : MNT_NODEV HEX: 00000010 ; inline
14 : MNT_UNION HEX: 00000020 ; inline
15 : MNT_ASYNC HEX: 00000040 ; inline
16 : MNT_EXPORTED HEX: 00000100 ; inline
17 : MNT_QUARANTINE HEX: 00000400 ; inline
18 : MNT_LOCAL HEX: 00001000 ; inline
19 : MNT_QUOTA HEX: 00002000 ; inline
20 : MNT_ROOTFS HEX: 00004000 ; inline
21 : MNT_DOVOLFS HEX: 00008000 ; inline
22 : MNT_DONTBROWSE HEX: 00100000 ; inline
23 : MNT_IGNORE_OWNERSHIP HEX: 00200000 ; inline
24 : MNT_AUTOMOUNTED HEX: 00400000 ; inline
25 : MNT_JOURNALED HEX: 00800000 ; inline
26 : MNT_NOUSERXATTR HEX: 01000000 ; inline
27 : MNT_DEFWRITE HEX: 02000000 ; inline
28 : MNT_MULTILABEL HEX: 04000000 ; inline
29 : MNT_NOATIME HEX: 10000000 ; inline
30 : MNT_UNKNOWNPERMISSIONS MNT_IGNORE_OWNERSHIP ; inline
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 : MNT_UPDATE HEX: 00010000 ; inline
44 : MNT_RELOAD HEX: 00040000 ; inline
45 : MNT_FORCE HEX: 00080000 ; inline
46 : MNT_CMDFLAGS { MNT_UPDATE MNT_RELOAD MNT_FORCE } flags ; inline
48 : VFS_GENERIC 0 ; inline
49 : VFS_NUMMNTOPS 1 ; inline
50 : VFS_MAXTYPENUM 1 ; inline
52 : VFS_SET_PACKAGE_EXTS 3 ; inline
55 : MNT_NOWAIT 2 ; inline
57 : VFS_CTL_VERS1 HEX: 01 ; inline
59 : VFS_CTL_STATFS HEX: 00010001 ; inline
60 : VFS_CTL_UMOUNT HEX: 00010002 ; inline
61 : VFS_CTL_QUERY HEX: 00010003 ; inline
62 : VFS_CTL_NEWADDR HEX: 00010004 ; inline
63 : VFS_CTL_TIMEO HEX: 00010005 ; inline
64 : VFS_CTL_NOLOCKS HEX: 00010006 ; inline
67 { "uint32_t" "vq_flags" }
68 { { "uint32_t" 31 } "vq_spare" } ;
70 : VQ_NOTRESP HEX: 0001 ; inline
71 : VQ_NEEDAUTH HEX: 0002 ; inline
72 : VQ_LOWDISK HEX: 0004 ; inline
73 : VQ_MOUNT HEX: 0008 ; inline
74 : VQ_UNMOUNT HEX: 0010 ; inline
75 : VQ_DEAD HEX: 0020 ; inline
76 : VQ_ASSIST HEX: 0040 ; inline
77 : VQ_NOTRESPLOCK HEX: 0080 ; inline
78 : VQ_UPDATE HEX: 0100 ; inline
79 : VQ_FLAG0200 HEX: 0200 ; inline
80 : VQ_FLAG0400 HEX: 0400 ; inline
81 : VQ_FLAG0800 HEX: 0800 ; inline
82 : VQ_FLAG1000 HEX: 1000 ; inline
83 : VQ_FLAG2000 HEX: 2000 ; inline
84 : VQ_FLAG4000 HEX: 4000 ; inline
85 : VQ_FLAG8000 HEX: 8000 ; inline
87 : NFSV4_MAX_FH_SIZE 128 ; inline
88 : NFSV3_MAX_FH_SIZE 64 ; inline
89 : NFSV2_MAX_FH_SIZE 32 ; inline
90 : NFS_MAX_FH_SIZE NFSV4_MAX_FH_SIZE ; inline
92 : MFSNAMELEN 15 ; inline
93 : MNAMELEN 90 ; inline
94 : MFSTYPENAMELEN 16 ; inline
97 { { "int32_t" 2 } "val" } ;
100 { "uint32_t" "f_bsize" }
101 { "int32_t" "f_iosize" }
102 { "uint64_t" "f_blocks" }
103 { "uint64_t" "f_bfree" }
104 { "uint64_t" "f_bavail" }
105 { "uint64_t" "f_files" }
106 { "uint64_t" "f_ffree" }
107 { "fsid_t" "f_fsid" }
108 { "uid_t" "f_owner" }
109 { "uint32_t" "f_type" }
110 { "uint32_t" "f_flags" }
111 { "uint32_t" "f_fssubtype" }
112 { { "char" MFSTYPENAMELEN } "f_fstypename" }
113 { { "char" MAXPATHLEN } "f_mntonname" }
114 { { "char" MAXPATHLEN } "f_mntfromname" }
115 { { "uint32_t" 8 } "f_reserved" } ;
117 FUNCTION: int statfs64 ( char* path, statfs64* buf ) ;