]> gitweb.factorcode.org Git - factor.git/blob - basis/io/files/info/info.factor
Make "foo.private" require load foo instead.
[factor.git] / basis / io / files / info / info.factor
1 ! Copyright (C) 2008 Doug Coleman, Eduardo Cavazos.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: accessors kernel system sequences combinators
4 vocabs vocabs.loader io.files.types io.directories math ;
5 IN: io.files.info
6
7 ! File info
8 TUPLE: file-info type size size-on-disk permissions created modified
9 accessed ;
10
11 HOOK: file-info os ( path -- info )
12
13 HOOK: link-info os ( path -- info )
14
15 : directory? ( file-info -- ? ) type>> +directory+ = ;
16
17 : sparse-file? ( file-info -- ? )
18     [ size-on-disk>> ] [ size>> ] bi < ;
19
20 ! File systems
21 HOOK: file-systems os ( -- array )
22
23 TUPLE: file-system-info device-name mount-point type
24 available-space free-space used-space total-space ;
25
26 HOOK: file-system-info os ( path -- file-system-info )
27
28 {
29     { [ os unix? ] [ "io.files.info.unix" ] }
30     { [ os windows? ] [ "io.files.info.windows" ] }
31 } cond require
32
33 HOOK: copy-file-and-info os ( from to -- )
34
35 M: object copy-file-and-info copy-file ;