change all stat, statfs, statvfs and calendar structs

db4
Doug Coleman 2009-08-30 04:06:41 -05:00
parent 7276fe44d7
commit 783eb0bb53
30 changed files with 486 additions and 542 deletions

View File

@ -1,28 +1,27 @@
! Copyright (C) 2008 Doug Coleman. ! Copyright (C) 2008 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: alien alien.c-types alien.syntax arrays calendar USING: alien alien.c-types alien.syntax arrays calendar
kernel math unix unix.time unix.types namespaces system ; kernel math unix unix.time unix.types namespaces system
accessors classes.struct ;
IN: calendar.unix IN: calendar.unix
: timeval>seconds ( timeval -- seconds ) : timeval>seconds ( timeval -- seconds )
[ timeval-sec seconds ] [ timeval-usec microseconds ] bi [ sec>> seconds ] [ usec>> microseconds ] bi time+ ;
time+ ;
: timeval>unix-time ( timeval -- timestamp ) : timeval>unix-time ( timeval -- timestamp )
timeval>seconds since-1970 ; timeval>seconds since-1970 ;
: timespec>seconds ( timespec -- seconds ) : timespec>seconds ( timespec -- seconds )
[ timespec-sec seconds ] [ timespec-nsec nanoseconds ] bi [ sec>> seconds ] [ nsec>> nanoseconds ] bi time+ ;
time+ ;
: timespec>unix-time ( timespec -- timestamp ) : timespec>unix-time ( timespec -- timestamp )
timespec>seconds since-1970 ; timespec>seconds since-1970 ;
: get-time ( -- alien ) : get-time ( -- alien )
f time <time_t> localtime ; f time <time_t> localtime tm memory>struct ;
: timezone-name ( -- string ) : timezone-name ( -- string )
get-time tm-zone ; get-time zone>> ;
M: unix gmt-offset ( -- hours minutes seconds ) M: unix gmt-offset ( -- hours minutes seconds )
get-time tm-gmtoff 3600 /mod 60 /mod ; get-time gmtoff>> 3600 /mod 60 /mod ;

View File

@ -12,10 +12,7 @@ M: bsd new-file-info ( -- class ) bsd-file-info new ;
M: bsd stat>file-info ( stat -- file-info ) M: bsd stat>file-info ( stat -- file-info )
[ call-next-method ] keep [ call-next-method ] keep
{ {
[ stat-st_flags >>flags ] [ st_flags>> >>flags ]
[ stat-st_gen >>gen ] [ st_gen>> >>gen ]
[ [ st_birthtimespec>> timespec>unix-time >>birth-time ]
stat-st_birthtimespec timespec>unix-time
>>birth-time
]
} cleave ; } cleave ;

View File

@ -4,7 +4,8 @@ USING: accessors alien.c-types alien.syntax combinators
io.backend io.files io.files.info io.files.unix kernel math system unix io.backend io.files io.files.info io.files.unix kernel math system unix
unix.statfs.freebsd unix.statvfs.freebsd unix.getfsstat.freebsd unix.statfs.freebsd unix.statvfs.freebsd unix.getfsstat.freebsd
sequences grouping alien.strings io.encodings.utf8 unix.types sequences grouping alien.strings io.encodings.utf8 unix.types
specialized-arrays.direct.uint arrays io.files.info.unix ; specialized-arrays.direct.uint arrays io.files.info.unix
classes.struct ;
IN: io.files.info.unix.freebsd IN: io.files.info.unix.freebsd
TUPLE: freebsd-file-system-info < unix-file-system-info TUPLE: freebsd-file-system-info < unix-file-system-info
@ -13,43 +14,43 @@ version io-size owner syncreads syncwrites asyncreads asyncwrites ;
M: freebsd new-file-system-info freebsd-file-system-info new ; M: freebsd new-file-system-info freebsd-file-system-info new ;
M: freebsd file-system-statfs ( path -- byte-array ) M: freebsd file-system-statfs ( path -- byte-array )
"statfs" <c-object> [ statfs io-error ] keep ; \ statfs <struct> [ statfs io-error ] keep ;
M: freebsd statfs>file-system-info ( file-system-info statvfs -- file-system-info ) M: freebsd statfs>file-system-info ( file-system-info statvfs -- file-system-info )
{ {
[ statfs-f_version >>version ] [ f_version>> >>version ]
[ statfs-f_type >>type ] [ f_type>> >>type ]
[ statfs-f_flags >>flags ] [ f_flags>> >>flags ]
[ statfs-f_bsize >>block-size ] [ f_bsize>> >>block-size ]
[ statfs-f_iosize >>io-size ] [ f_iosize>> >>io-size ]
[ statfs-f_blocks >>blocks ] [ f_blocks>> >>blocks ]
[ statfs-f_bfree >>blocks-free ] [ f_bfree>> >>blocks-free ]
[ statfs-f_bavail >>blocks-available ] [ f_bavail>> >>blocks-available ]
[ statfs-f_files >>files ] [ f_files>> >>files ]
[ statfs-f_ffree >>files-free ] [ f_ffree>> >>files-free ]
[ statfs-f_syncwrites >>syncwrites ] [ f_syncwrites>> >>syncwrites ]
[ statfs-f_asyncwrites >>asyncwrites ] [ f_asyncwrites>> >>asyncwrites ]
[ statfs-f_syncreads >>syncreads ] [ f_syncreads>> >>syncreads ]
[ statfs-f_asyncreads >>asyncreads ] [ f_asyncreads>> >>asyncreads ]
[ statfs-f_namemax >>name-max ] [ f_namemax>> >>name-max ]
[ statfs-f_owner >>owner ] [ f_owner>> >>owner ]
[ statfs-f_fsid 2 <direct-uint-array> >array >>id ] [ f_fsid>> 2 <direct-uint-array> >array >>id ]
[ statfs-f_fstypename utf8 alien>string >>type ] [ f_fstypename>> utf8 alien>string >>type ]
[ statfs-f_mntfromname utf8 alien>string >>device-name ] [ f_mntfromname>> utf8 alien>string >>device-name ]
[ statfs-f_mntonname utf8 alien>string >>mount-point ] [ f_mntonname>> utf8 alien>string >>mount-point ]
} cleave ; } cleave ;
M: freebsd file-system-statvfs ( path -- byte-array ) M: freebsd file-system-statvfs ( path -- byte-array )
"statvfs" <c-object> [ statvfs io-error ] keep ; \ statvfs <struct> [ \ statvfs io-error ] keep ;
M: freebsd statvfs>file-system-info ( file-system-info statvfs -- file-system-info ) M: freebsd statvfs>file-system-info ( file-system-info statvfs -- file-system-info )
{ {
[ statvfs-f_favail >>files-available ] [ f_favail>> >>files-available ]
[ statvfs-f_frsize >>preferred-block-size ] [ f_frsize>> >>preferred-block-size ]
} cleave ; } cleave ;
M: freebsd file-systems ( -- array ) M: freebsd file-systems ( -- array )
f 0 0 getfsstat dup io-error f 0 0 getfsstat dup io-error
"statfs" <c-array> dup dup length 0 getfsstat io-error \ statfs <struct> dup dup length 0 getfsstat io-error
"statfs" heap-size group statfs heap-size group
[ statfs-f_mntonname alien>native-string file-system-info ] map ; [ f_mntonname>> alien>native-string file-system-info ] map ;

View File

@ -5,7 +5,7 @@ io.backend io.encodings.utf8 io.files io.files.info io.streams.string
io.files.unix kernel math.order namespaces sequences sorting io.files.unix kernel math.order namespaces sequences sorting
system unix unix.statfs.linux unix.statvfs.linux io.files.links system unix unix.statfs.linux unix.statvfs.linux io.files.links
specialized-arrays.direct.uint arrays io.files.info.unix assocs specialized-arrays.direct.uint arrays io.files.info.unix assocs
io.pathnames unix.types ; io.pathnames unix.types classes.struct ;
FROM: csv => delimiter ; FROM: csv => delimiter ;
IN: io.files.info.unix.linux IN: io.files.info.unix.linux
@ -15,30 +15,30 @@ namelen ;
M: linux new-file-system-info linux-file-system-info new ; M: linux new-file-system-info linux-file-system-info new ;
M: linux file-system-statfs ( path -- byte-array ) M: linux file-system-statfs ( path -- byte-array )
"statfs64" <c-object> [ statfs64 io-error ] keep ; \ statfs64 <struct> [ statfs64 io-error ] keep ;
M: linux statfs>file-system-info ( struct -- statfs ) M: linux statfs>file-system-info ( struct -- statfs )
{ {
[ statfs64-f_type >>type ] [ f_type>> >>type ]
[ statfs64-f_bsize >>block-size ] [ f_bsize>> >>block-size ]
[ statfs64-f_blocks >>blocks ] [ f_blocks>> >>blocks ]
[ statfs64-f_bfree >>blocks-free ] [ f_bfree>> >>blocks-free ]
[ statfs64-f_bavail >>blocks-available ] [ f_bavail>> >>blocks-available ]
[ statfs64-f_files >>files ] [ f_files>> >>files ]
[ statfs64-f_ffree >>files-free ] [ f_ffree>> >>files-free ]
[ statfs64-f_fsid 2 <direct-uint-array> >array >>id ] [ f_fsid>> 2 <direct-uint-array> >array >>id ]
[ statfs64-f_namelen >>namelen ] [ f_namelen>> >>namelen ]
[ statfs64-f_frsize >>preferred-block-size ] [ f_frsize>> >>preferred-block-size ]
! [ statfs64-f_spare >>spare ] ! [ statfs64-f_spare >>spare ]
} cleave ; } cleave ;
M: linux file-system-statvfs ( path -- byte-array ) M: linux file-system-statvfs ( path -- byte-array )
"statvfs64" <c-object> [ statvfs64 io-error ] keep ; \ statvfs64 <struct> [ statvfs64 io-error ] keep ;
M: linux statvfs>file-system-info ( struct -- statfs ) M: linux statvfs>file-system-info ( struct -- statfs )
{ {
[ statvfs64-f_flag >>flags ] [ f_flag>> >>flags ]
[ statvfs64-f_namemax >>name-max ] [ f_namemax>> >>name-max ]
} cleave ; } cleave ;
TUPLE: mtab-entry file-system-name mount-point type options TUPLE: mtab-entry file-system-name mount-point type options

View File

@ -4,7 +4,7 @@ USING: accessors alien.c-types alien.strings combinators
grouping io.encodings.utf8 io.files kernel math sequences grouping io.encodings.utf8 io.files kernel math sequences
system unix io.files.unix specialized-arrays.direct.uint arrays system unix io.files.unix specialized-arrays.direct.uint arrays
unix.statfs.macosx unix.statvfs.macosx unix.getfsstat.macosx unix.statfs.macosx unix.statvfs.macosx unix.getfsstat.macosx
io.files.info.unix io.files.info ; io.files.info.unix io.files.info classes.struct struct-arrays ;
IN: io.files.info.unix.macosx IN: io.files.info.unix.macosx
TUPLE: macosx-file-system-info < unix-file-system-info TUPLE: macosx-file-system-info < unix-file-system-info
@ -12,41 +12,39 @@ io-size owner type-id filesystem-subtype ;
M: macosx file-systems ( -- array ) M: macosx file-systems ( -- array )
f <void*> dup 0 getmntinfo64 dup io-error f <void*> dup 0 getmntinfo64 dup io-error
[ *void* ] dip [ *void* ] dip \ statfs64 <direct-struct-array>
"statfs64" heap-size [ * memory>byte-array ] keep group [ f_mntonname>> utf8 alien>string file-system-info ] { } map-as ;
[ statfs64-f_mntonname utf8 alien>string file-system-info ] map ;
! [ [ new-file-system-info ] dip statfs>file-system-info ] map ;
M: macosx new-file-system-info macosx-file-system-info new ; M: macosx new-file-system-info macosx-file-system-info new ;
M: macosx file-system-statfs ( normalized-path -- statfs ) M: macosx file-system-statfs ( normalized-path -- statfs )
"statfs64" <c-object> [ statfs64 io-error ] keep ; \ statfs64 <struct> [ statfs64 io-error ] keep ;
M: macosx file-system-statvfs ( normalized-path -- statvfs ) M: macosx file-system-statvfs ( normalized-path -- statvfs )
"statvfs" <c-object> [ statvfs io-error ] keep ; \ statvfs <struct> [ statvfs io-error ] keep ;
M: macosx statfs>file-system-info ( file-system-info byte-array -- file-system-info' ) M: macosx statfs>file-system-info ( file-system-info byte-array -- file-system-info' )
{ {
[ statfs64-f_bsize >>block-size ] [ f_bsize>> >>block-size ]
[ statfs64-f_iosize >>io-size ] [ f_iosize>> >>io-size ]
[ statfs64-f_blocks >>blocks ] [ f_blocks>> >>blocks ]
[ statfs64-f_bfree >>blocks-free ] [ f_bfree>> >>blocks-free ]
[ statfs64-f_bavail >>blocks-available ] [ f_bavail>> >>blocks-available ]
[ statfs64-f_files >>files ] [ f_files>> >>files ]
[ statfs64-f_ffree >>files-free ] [ f_ffree>> >>files-free ]
[ statfs64-f_fsid 2 <direct-uint-array> >array >>id ] [ f_fsid>> >>id ]
[ statfs64-f_owner >>owner ] [ f_owner>> >>owner ]
[ statfs64-f_type >>type-id ] [ f_type>> >>type-id ]
[ statfs64-f_flags >>flags ] [ f_flags>> >>flags ]
[ statfs64-f_fssubtype >>filesystem-subtype ] [ f_fssubtype>> >>filesystem-subtype ]
[ statfs64-f_fstypename utf8 alien>string >>type ] [ f_fstypename>> utf8 alien>string >>type ]
[ statfs64-f_mntonname utf8 alien>string >>mount-point ] [ f_mntonname>> utf8 alien>string >>mount-point ]
[ statfs64-f_mntfromname utf8 alien>string >>device-name ] [ f_mntfromname>> utf8 alien>string >>device-name ]
} cleave ; } cleave ;
M: macosx statvfs>file-system-info ( file-system-info byte-array -- file-system-info' ) M: macosx statvfs>file-system-info ( file-system-info byte-array -- file-system-info' )
{ {
[ statvfs-f_frsize >>preferred-block-size ] [ f_frsize>> >>preferred-block-size ]
[ statvfs-f_favail >>files-available ] [ f_favail>> >>files-available ]
[ statvfs-f_namemax >>name-max ] [ f_namemax>> >>name-max ]
} cleave ; } cleave ;

View File

@ -4,7 +4,7 @@ USING: alien.syntax kernel unix.stat math unix
combinators system io.backend accessors alien.c-types combinators system io.backend accessors alien.c-types
io.encodings.utf8 alien.strings unix.types io.files.unix io.encodings.utf8 alien.strings unix.types io.files.unix
io.files io.files.info unix.statvfs.netbsd unix.getfsstat.netbsd arrays io.files io.files.info unix.statvfs.netbsd unix.getfsstat.netbsd arrays
grouping sequences io.encodings.utf8 grouping sequences io.encodings.utf8 classes.struct
specialized-arrays.direct.uint io.files.info.unix ; specialized-arrays.direct.uint io.files.info.unix ;
IN: io.files.info.unix.netbsd IN: io.files.info.unix.netbsd
@ -16,38 +16,37 @@ idx mount-from ;
M: netbsd new-file-system-info netbsd-file-system-info new ; M: netbsd new-file-system-info netbsd-file-system-info new ;
M: netbsd file-system-statvfs M: netbsd file-system-statvfs
"statvfs" <c-object> [ statvfs io-error ] keep ; \ statvfs <struct> [ statvfs io-error ] keep ;
M: netbsd statvfs>file-system-info ( file-system-info statvfs -- file-system-info' ) M: netbsd statvfs>file-system-info ( file-system-info statvfs -- file-system-info' )
{ {
[ statvfs-f_flag >>flags ] [ f_flag>> >>flags ]
[ statvfs-f_bsize >>block-size ] [ f_bsize>> >>block-size ]
[ statvfs-f_frsize >>preferred-block-size ] [ f_frsize>> >>preferred-block-size ]
[ statvfs-f_iosize >>io-size ] [ f_iosize>> >>io-size ]
[ statvfs-f_blocks >>blocks ] [ f_blocks>> >>blocks ]
[ statvfs-f_bfree >>blocks-free ] [ f_bfree>> >>blocks-free ]
[ statvfs-f_bavail >>blocks-available ] [ f_bavail>> >>blocks-available ]
[ statvfs-f_bresvd >>blocks-reserved ] [ f_bresvd>> >>blocks-reserved ]
[ statvfs-f_files >>files ] [ f_files>> >>files ]
[ statvfs-f_ffree >>files-free ] [ f_ffree>> >>files-free ]
[ statvfs-f_favail >>files-available ] [ f_favail>> >>files-available ]
[ statvfs-f_fresvd >>files-reserved ] [ f_fresvd>> >>files-reserved ]
[ statvfs-f_syncreads >>sync-reads ] [ f_syncreads>> >>sync-reads ]
[ statvfs-f_syncwrites >>sync-writes ] [ f_syncwrites>> >>sync-writes ]
[ statvfs-f_asyncreads >>async-reads ] [ f_asyncreads>> >>async-reads ]
[ statvfs-f_asyncwrites >>async-writes ] [ f_asyncwrites>> >>async-writes ]
[ statvfs-f_fsidx 2 <direct-uint-array> >array >>idx ] [ f_fsidx>> 2 <direct-uint-array> >array >>idx ]
[ statvfs-f_fsid >>id ] [ f_fsid>> >>id ]
[ statvfs-f_namemax >>name-max ] [ f_namemax>> >>name-max ]
[ statvfs-f_owner >>owner ] [ f_owner>> >>owner ]
! [ statvfs-f_spare >>spare ] [ f_fstypename>> utf8 alien>string >>type ]
[ statvfs-f_fstypename utf8 alien>string >>type ] [ f_mntonname>> utf8 alien>string >>mount-point ]
[ statvfs-f_mntonname utf8 alien>string >>mount-point ] [ f_mntfromname>> utf8 alien>string >>device-name ]
[ statvfs-f_mntfromname utf8 alien>string >>device-name ]
} cleave ; } cleave ;
M: netbsd file-systems ( -- array ) M: netbsd file-systems ( -- array )
f 0 0 getvfsstat dup io-error f 0 0 getvfsstat dup io-error
"statvfs" <c-array> dup dup length 0 getvfsstat io-error \ statvfs <c-type-array> dup dup length 0 getvfsstat io-error
"statvfs" heap-size group \ statvfs heap-size group
[ statvfs-f_mntonname utf8 alien>string file-system-info ] map ; [ f_mntonname>> utf8 alien>string file-system-info ] map ;

View File

@ -4,7 +4,8 @@ USING: accessors alien.c-types alien.strings alien.syntax
combinators io.backend io.files io.files.info io.files.unix kernel math combinators io.backend io.files io.files.info io.files.unix kernel math
sequences system unix unix.getfsstat.openbsd grouping sequences system unix unix.getfsstat.openbsd grouping
unix.statfs.openbsd unix.statvfs.openbsd unix.types unix.statfs.openbsd unix.statvfs.openbsd unix.types
specialized-arrays.direct.uint arrays io.files.info.unix ; specialized-arrays.direct.uint arrays io.files.info.unix
classes.struct ;
IN: io.files.unix.openbsd IN: io.files.unix.openbsd
TUPLE: freebsd-file-system-info < unix-file-system-info TUPLE: freebsd-file-system-info < unix-file-system-info
@ -14,42 +15,39 @@ owner ;
M: openbsd new-file-system-info freebsd-file-system-info new ; M: openbsd new-file-system-info freebsd-file-system-info new ;
M: openbsd file-system-statfs M: openbsd file-system-statfs
"statfs" <c-object> [ statfs io-error ] keep ; \ statfs <struct> [ statfs io-error ] keep ;
M: openbsd statfs>file-system-info ( file-system-info statfs -- file-system-info' ) M: openbsd statfs>file-system-info ( file-system-info statfs -- file-system-info' )
{ {
[ statfs-f_flags >>flags ] [ f_flags>> >>flags ]
[ statfs-f_bsize >>block-size ] [ f_bsize>> >>block-size ]
[ statfs-f_iosize >>io-size ] [ f_iosize>> >>io-size ]
[ statfs-f_blocks >>blocks ] [ f_blocks>> >>blocks ]
[ statfs-f_bfree >>blocks-free ] [ f_bfree>> >>blocks-free ]
[ statfs-f_bavail >>blocks-available ] [ f_bavail>> >>blocks-available ]
[ statfs-f_files >>files ] [ f_files>> >>files ]
[ statfs-f_ffree >>files-free ] [ f_ffree>> >>files-free ]
[ statfs-f_favail >>files-available ] [ f_favail>> >>files-available ]
[ statfs-f_syncwrites >>sync-writes ] [ f_syncwrites>> >>sync-writes ]
[ statfs-f_syncreads >>sync-reads ] [ f_syncreads>> >>sync-reads ]
[ statfs-f_asyncwrites >>async-writes ] [ f_asyncwrites>> >>async-writes ]
[ statfs-f_asyncreads >>async-reads ] [ f_asyncreads>> >>async-reads ]
[ statfs-f_fsid 2 <direct-uint-array> >array >>id ] [ f_fsid>> 2 <direct-uint-array> >array >>id ]
[ statfs-f_namemax >>name-max ] [ f_namemax>> >>name-max ]
[ statfs-f_owner >>owner ] [ f_owner>> >>owner ]
! [ statfs-f_spare >>spare ] [ f_fstypename>> alien>native-string >>type ]
[ statfs-f_fstypename alien>native-string >>type ] [ f_mntonname>> alien>native-string >>mount-point ]
[ statfs-f_mntonname alien>native-string >>mount-point ] [ f_mntfromname>> alien>native-string >>device-name ]
[ statfs-f_mntfromname alien>native-string >>device-name ]
} cleave ; } cleave ;
M: openbsd file-system-statvfs ( normalized-path -- statvfs ) M: openbsd file-system-statvfs ( normalized-path -- statvfs )
"statvfs" <c-object> [ statvfs io-error ] keep ; \ statvfs <struct> [ statvfs io-error ] keep ;
M: openbsd statvfs>file-system-info ( file-system-info statvfs -- file-system-info' ) M: openbsd statvfs>file-system-info ( file-system-info statvfs -- file-system-info' )
{ f_frsize>> >>preferred-block-size ;
[ statvfs-f_frsize >>preferred-block-size ]
} cleave ;
M: openbsd file-systems ( -- seq ) M: openbsd file-systems ( -- seq )
f 0 0 getfsstat dup io-error f 0 0 getfsstat dup io-error
"statfs" <c-array> dup dup length 0 getfsstat io-error statfs <c-type-array> dup dup length 0 getfsstat io-error
"statfs" heap-size group statfs heap-size group
[ statfs-f_mntonname alien>native-string file-system-info ] map ; [ f_mntonname>> alien>native-string file-system-info ] map ;

View File

@ -4,7 +4,7 @@ USING: accessors kernel system math math.bitwise strings arrays
sequences combinators combinators.short-circuit alien.c-types sequences combinators combinators.short-circuit alien.c-types
vocabs.loader calendar calendar.unix io.files.info vocabs.loader calendar calendar.unix io.files.info
io.files.types io.backend io.directories unix unix.stat unix.time unix.users io.files.types io.backend io.directories unix unix.stat unix.time unix.users
unix.groups ; unix.groups classes.struct struct-arrays ;
IN: io.files.info.unix IN: io.files.info.unix
TUPLE: unix-file-system-info < file-system-info TUPLE: unix-file-system-info < file-system-info
@ -69,19 +69,19 @@ M: unix stat>file-info ( stat -- file-info )
[ new-file-info ] dip [ new-file-info ] dip
{ {
[ stat>type >>type ] [ stat>type >>type ]
[ stat-st_size >>size ] [ st_size>> >>size ]
[ stat-st_mode >>permissions ] [ st_mode>> >>permissions ]
[ stat-st_ctimespec timespec>unix-time >>created ] [ st_ctimespec>> timespec>unix-time >>created ]
[ stat-st_mtimespec timespec>unix-time >>modified ] [ st_mtimespec>> timespec>unix-time >>modified ]
[ stat-st_atimespec timespec>unix-time >>accessed ] [ st_atimespec>> timespec>unix-time >>accessed ]
[ stat-st_uid >>uid ] [ st_uid>> >>uid ]
[ stat-st_gid >>gid ] [ st_gid>> >>gid ]
[ stat-st_dev >>dev ] [ st_dev>> >>dev ]
[ stat-st_ino >>ino ] [ st_ino>> >>ino ]
[ stat-st_nlink >>nlink ] [ st_nlink>> >>nlink ]
[ stat-st_rdev >>rdev ] [ st_rdev>> >>rdev ]
[ stat-st_blocks >>blocks ] [ st_blocks>> >>blocks ]
[ stat-st_blksize >>blocksize ] [ st_blksize>> >>blocksize ]
[ drop dup blocks>> standard-unix-block-size * >>size-on-disk ] [ drop dup blocks>> standard-unix-block-size * >>size-on-disk ]
} cleave ; } cleave ;
@ -98,12 +98,12 @@ M: unix stat>file-info ( stat -- file-info )
} case ; } case ;
M: unix stat>type ( stat -- type ) M: unix stat>type ( stat -- type )
stat-st_mode n>file-type ; st_mode>> n>file-type ;
<PRIVATE <PRIVATE
: stat-mode ( path -- mode ) : stat-mode ( path -- mode )
normalize-path file-status stat-st_mode ; normalize-path file-status st_mode>> ;
: chmod-set-bit ( path mask ? -- ) : chmod-set-bit ( path mask ? -- )
[ dup stat-mode ] 2dip [ dup stat-mode ] 2dip
@ -179,14 +179,12 @@ M: unix copy-file-and-info ( from to -- )
<PRIVATE <PRIVATE
: make-timeval-array ( array -- byte-array )
[ [ "timeval" <c-object> ] unless* ] map concat ;
: timestamp>timeval ( timestamp -- timeval ) : timestamp>timeval ( timestamp -- timeval )
unix-1970 time- duration>microseconds make-timeval ; unix-1970 time- duration>microseconds make-timeval ;
: timestamps>byte-array ( timestamps -- byte-array ) : timestamps>byte-array ( timestamps -- byte-array )
[ dup [ timestamp>timeval ] when ] map make-timeval-array ; [ [ timestamp>timeval ] [ \ timeval <struct> ] if* ] map
\ timeval >struct-array ;
PRIVATE> PRIVATE>
@ -202,8 +200,7 @@ PRIVATE>
f swap 2array set-file-times ; f swap 2array set-file-times ;
: set-file-ids ( path uid gid -- ) : set-file-ids ( path uid gid -- )
[ normalize-path ] 2dip [ normalize-path ] 2dip [ -1 or ] bi@ chown io-error ;
[ [ -1 ] unless* ] bi@ chown io-error ;
GENERIC: set-file-user ( path string/id -- ) GENERIC: set-file-user ( path string/id -- )

View File

@ -1,30 +0,0 @@
USING: kernel alien.syntax math ;
IN: unix.stat
! FreeBSD 8.0-CURRENT
C-STRUCT: stat
{ "__dev_t" "st_dev" }
{ "ino_t" "st_ino" }
{ "mode_t" "st_mode" }
{ "nlink_t" "st_nlink" }
{ "uid_t" "st_uid" }
{ "gid_t" "st_gid" }
{ "__dev_t" "st_rdev" }
{ "timespec" "st_atimespec" }
{ "timespec" "st_mtimespec" }
{ "timespec" "st_ctimespec" }
{ "off_t" "st_size" }
{ "blkcnt_t" "st_blocks" }
{ "blksize_t" "st_blksize" }
{ "fflags_t" "st_flags" }
{ "__uint32_t" "st_gen" }
{ "__int32_t" "st_lspare" }
{ "timespec" "st_birthtimespec" }
! not sure about the padding here.
{ "__uint32_t" "pad0" }
{ "__uint32_t" "pad1" } ;
FUNCTION: int stat ( char* pathname, stat* buf ) ;
FUNCTION: int lstat ( char* pathname, stat* buf ) ;

View File

@ -1 +0,0 @@
unportable

View File

@ -1,30 +0,0 @@
USING: kernel alien.syntax math ;
IN: unix.stat
! FreeBSD 8.0-CURRENT
! untested
C-STRUCT: stat
{ "__dev_t" "st_dev" }
{ "ino_t" "st_ino" }
{ "mode_t" "st_mode" }
{ "nlink_t" "st_nlink" }
{ "uid_t" "st_uid" }
{ "gid_t" "st_gid" }
{ "__dev_t" "st_rdev" }
{ "timespec" "st_atimespec" }
{ "timespec" "st_mtimespec" }
{ "timespec" "st_ctimespec" }
{ "off_t" "st_size" }
{ "blkcnt_t" "st_blocks" }
{ "blksize_t" "st_blksize" }
{ "fflags_t" "st_flags" }
{ "__uint32_t" "st_gen" }
{ "__int32_t" "st_lspare" }
{ "timespec" "st_birthtimespec" }
! not sure about the padding here.
{ "__uint32_t" "pad0" }
{ "__uint32_t" "pad1" } ;
FUNCTION: int stat ( char* pathname, stat* buf ) ;
FUNCTION: int lstat ( char* pathname, stat* buf ) ;

View File

@ -1 +0,0 @@
unportable

View File

@ -1,7 +1,27 @@
USING: layouts combinators vocabs.loader ; USING: kernel alien.syntax math classes.struct ;
IN: unix.stat IN: unix.stat
cell-bits { ! FreeBSD 8.0-CURRENT
{ 32 [ "unix.stat.freebsd.32" require ] }
{ 64 [ "unix.stat.freebsd.64" require ] } STRUCT: stat
} case { st_dev __dev_t }
{ st_ino ino_t }
{ st_mode mode_t }
{ st_nlink nlink_t }
{ st_uid uid_t }
{ st_gid git_t }
{ st_rdev __dev_t }
{ st_atimespec timespec }
{ st_mtimespec timespec }
{ st_ctimespec timespec }
{ st_size off_t }
{ st_blocks blkcnt_t }
{ st_blksize blksize_t }
{ st_flags fflags_t }
{ st_gen _uint32_t }
{ st_lspare __int32_t }
{ st_birthtimespec timespec }
{ pad0 __int32_t[2] }
FUNCTION: int stat ( char* pathname, stat* buf ) ;
FUNCTION: int lstat ( char* pathname, stat* buf ) ;

View File

@ -1,25 +1,24 @@
USING: kernel alien.syntax math sequences unix USING: kernel alien.syntax math classes.struct ;
alien.c-types arrays accessors combinators ;
IN: unix.stat IN: unix.stat
! stat64 ! stat64
C-STRUCT: stat STRUCT: stat
{ "dev_t" "st_dev" } { st_dev dev_t }
{ "ushort" "__pad1" } { __pad1 ushort }
{ "__ino_t" "__st_ino" } { __st_ino __ino_t }
{ "mode_t" "st_mode" } { st_mode mode_t }
{ "nlink_t" "st_nlink" } { st_nlink nlink_t }
{ "uid_t" "st_uid" } { st_uid uid_t }
{ "gid_t" "st_gid" } { st_gid gid_t }
{ "dev_t" "st_rdev" } { st_rdev dev_t }
{ { "ushort" 2 } "__pad2" } { __pad2 ushort[2] }
{ "off64_t" "st_size" } { st_size off64_t }
{ "blksize_t" "st_blksize" } { st_blksize blksize_t }
{ "blkcnt64_t" "st_blocks" } { st_blocks blkcnt64_t }
{ "timespec" "st_atimespec" } { st_atimespec timespec }
{ "timespec" "st_mtimespec" } { st_mtimespec timespec }
{ "timespec" "st_ctimespec" } { st_ctimespec timespec }
{ "ulonglong" "st_ino" } ; { st_ino ulonglong } ;
FUNCTION: int __xstat64 ( int ver, char* pathname, stat* buf ) ; FUNCTION: int __xstat64 ( int ver, char* pathname, stat* buf ) ;
FUNCTION: int __lxstat64 ( int ver, char* pathname, stat* buf ) ; FUNCTION: int __lxstat64 ( int ver, char* pathname, stat* buf ) ;

View File

@ -1,27 +1,24 @@
USING: kernel alien.syntax math sequences unix USING: kernel alien.syntax math classes.struct ;
alien.c-types arrays accessors combinators ;
IN: unix.stat IN: unix.stat
! Ubuntu 7.10 64-bit ! Ubuntu 7.10 64-bit
C-STRUCT: stat STRUCT: stat
{ "dev_t" "st_dev" } { st_dev dev_t }
{ "ino_t" "st_ino" } { st_ino ino_t }
{ "nlink_t" "st_nlink" } { st_nlink nlink_t }
{ "mode_t" "st_mode" } { st_mode mode_t }
{ "uid_t" "st_uid" } { st_uid uid_t }
{ "gid_t" "st_gid" } { st_gid gid_t }
{ "int" "pad0" } { pad0 int }
{ "dev_t" "st_rdev" } { st_rdev dev_t }
{ "off64_t" "st_size" } { st_size off64_t }
{ "blksize_t" "st_blksize" } { st_blksize blksize_t }
{ "blkcnt64_t" "st_blocks" } { st_blocks blkcnt64_t }
{ "timespec" "st_atimespec" } { st_atimespec timespec }
{ "timespec" "st_mtimespec" } { st_mtimespec timespec }
{ "timespec" "st_ctimespec" } { st_ctimespec timespec }
{ "long" "__unused0" } { __unused0 long[3] } ;
{ "long" "__unused1" }
{ "long" "__unused2" } ;
FUNCTION: int __xstat64 ( int ver, char* pathname, stat* buf ) ; FUNCTION: int __xstat64 ( int ver, char* pathname, stat* buf ) ;
FUNCTION: int __lxstat64 ( int ver, char* pathname, stat* buf ) ; FUNCTION: int __lxstat64 ( int ver, char* pathname, stat* buf ) ;

View File

@ -1,30 +1,30 @@
USING: kernel alien.syntax math unix math.bitwise USING: alien.c-types arrays accessors combinators classes.struct
alien.c-types alien sequences grouping accessors combinators ; alien.syntax ;
IN: unix.stat IN: unix.stat
! Mac OS X ppc ! Mac OS X ppc
! stat64 structure ! stat64 structure
C-STRUCT: stat STRUCT: stat
{ "dev_t" "st_dev" } { st_dev dev_t }
{ "mode_t" "st_mode" } { st_mode mode_t }
{ "nlink_t" "st_nlink" } { st_nlink nlink_t }
{ "ino64_t" "st_ino" } { st_ino ino64_t }
{ "uid_t" "st_uid" } { st_uid uid_t }
{ "gid_t" "st_gid" } { st_gid gid_t }
{ "dev_t" "st_rdev" } { st_rdev dev_t }
{ "timespec" "st_atimespec" } { st_atimespec timespec }
{ "timespec" "st_mtimespec" } { st_mtimespec timespec }
{ "timespec" "st_ctimespec" } { st_ctimespec timespec }
{ "timespec" "st_birthtimespec" } { st_birthtimespec timespec }
{ "off_t" "st_size" } { st_size off_t }
{ "blkcnt_t" "st_blocks" } { st_blocks blkcnt_t }
{ "blksize_t" "st_blksize" } { st_blksize blksize_t }
{ "__uint32_t" "st_flags" } { st_flags __uint32_t }
{ "__uint32_t" "st_gen" } { st_gen __uint32_t }
{ "__int32_t" "st_lspare" } { st_lspare __int32_t }
{ "__int64_t" "st_qspare0" } { st_qspare0 __int64_t }
{ "__int64_t" "st_qspare1" } ; { st_qspare1 __int64_t } ;
FUNCTION: int stat64 ( char* pathname, stat* buf ) ; FUNCTION: int stat64 ( char* pathname, stat* buf ) ;
FUNCTION: int lstat64 ( char* pathname, stat* buf ) ; FUNCTION: int lstat64 ( char* pathname, stat* buf ) ;

View File

@ -1,26 +1,26 @@
USING: kernel alien.syntax math ; USING: kernel alien.syntax math classes.struct ;
IN: unix.stat IN: unix.stat
! NetBSD 4.0 ! NetBSD 4.0
C-STRUCT: stat STRUCT: stat
{ "dev_t" "st_dev" } { st_dev dev_t }
{ "mode_t" "st_mode" } { st_mode mode_t }
{ "ino_t" "st_ino" } { st_ino ino_t }
{ "nlink_t" "st_nlink" } { st_nlink nlink_t }
{ "uid_t" "st_uid" } { st_uid uid_t }
{ "gid_t" "st_gid" } { st_gid gid_t }
{ "dev_t" "st_rdev" } { st_rdev dev_t }
{ "timespec" "st_atimespec" } { st_atimespec timespec }
{ "timespec" "st_mtimespec" } { st_mtimespec timespec }
{ "timespec" "st_ctimespec" } { st_ctimespec timespec }
{ "timespec" "st_birthtimespec" } { st_birthtimespec timespec }
{ "off_t" "st_size" } { st_size off_t }
{ "blkcnt_t" "st_blocks" } { st_blocks blkcnt_t }
{ "blksize_t" "st_blksize" } { st_blksize blksize_t }
{ "uint32_t" "st_flags" } { st_flags uint32_t }
{ "uint32_t" "st_gen" } { st_gen uint32_t }
{ { "uint32_t" 2 } "st_qspare" } ; { st_qspare uint32_t[2] } ;
FUNCTION: int __stat30 ( char* pathname, stat* buf ) ; FUNCTION: int __stat30 ( char* pathname, stat* buf ) ;
FUNCTION: int __lstat30 ( char* pathname, stat* buf ) ; FUNCTION: int __lstat30 ( char* pathname, stat* buf ) ;

View File

@ -1,26 +1,26 @@
USING: kernel alien.syntax math ; USING: kernel alien.syntax math classes.struct ;
IN: unix.stat IN: unix.stat
! NetBSD 4.0 ! NetBSD 4.0
C-STRUCT: stat STRUCT: stat
{ "dev_t" "st_dev" } { st_dev dev_t }
{ "ino_t" "st_ino" } { st_ino ino_t }
{ "mode_t" "st_mode" } { st_mode mode_t }
{ "nlink_t" "st_nlink" } { st_nlink nlink_t }
{ "uid_t" "st_uid" } { st_uid uid_t }
{ "gid_t" "st_gid" } { st_gid gid_t }
{ "dev_t" "st_rdev" } { st_rdev dev_t }
{ "timespec" "st_atimespec" } { st_atimespec timespec }
{ "timespec" "st_mtimespec" } { st_mtimespec timespec }
{ "timespec" "st_ctimespec" } { st_ctimespec timespec }
{ "off_t" "st_size" } { st_size off_t }
{ "blkcnt_t" "st_blocks" } { st_blocks blkcnt_t }
{ "blksize_t" "st_blksize" } { st_blksize blksize_t }
{ "uint32_t" "st_flags" } { st_flags uint32_t }
{ "uint32_t" "st_gen" } { st_gen uint32_t }
{ "uint32_t" "st_spare0" } { st_spare0 uint32_t }
{ "timespec" "st_birthtimespec" } ; { st_birthtimespec timespec } ;
FUNCTION: int __stat13 ( char* pathname, stat* buf ) ; FUNCTION: int __stat13 ( char* pathname, stat* buf ) ;
FUNCTION: int __lstat13 ( char* pathname, stat* buf ) ; FUNCTION: int __lstat13 ( char* pathname, stat* buf ) ;

View File

@ -1,28 +1,28 @@
USING: kernel alien.syntax math ; USING: kernel alien.syntax math classes.struct ;
IN: unix.stat IN: unix.stat
! OpenBSD 4.2 ! OpenBSD 4.2
C-STRUCT: stat STRUCT: stat
{ "dev_t" "st_dev" } { st_dev dev_t }
{ "ino_t" "st_ino" } { st_ino ino_t }
{ "mode_t" "st_mode" } { st_mode mode_t }
{ "nlink_t" "st_nlink" } { st_nlink nlink_t }
{ "uid_t" "st_uid" } { st_uid uid_t }
{ "gid_t" "st_gid" } { st_gid gid_t }
{ "dev_t" "st_rdev" } { st_rdev dev_ti }
{ "int32_t" "st_lspare0" } { st_lspare0 int32_t }
{ "timespec" "st_atimespec" } { st_atimespec timespec }
{ "timespec" "st_mtimespec" } { st_mtimespec timespec }
{ "timespec" "st_ctimespec" } { st_ctimespec timespec }
{ "off_t" "st_size" } { st_size off_t }
{ "int64_t" "st_blocks" } { st_blocks int64_t }
{ "u_int32_t" "st_blksize" } { st_blksize u_int32_t }
{ "u_int32_t" "st_flags" } { st_flags u_int32_t }
{ "u_int32_t" "st_gen" } { st_gen u_int32_t }
{ "int32_t" "st_lspare1" } { st_lspare1 int32_t }
{ "timespec" "st_birthtimespec" } { st_birthtimespec timespec }
{ { "int64_t" 2 } "st_qspare" } ; { st_qspare int64_t[2] } ;
FUNCTION: int stat ( char* pathname, stat* buf ) ; FUNCTION: int stat ( char* pathname, stat* buf ) ;
FUNCTION: int lstat ( char* pathname, stat* buf ) ; FUNCTION: int lstat ( char* pathname, stat* buf ) ;

View File

@ -1,5 +1,5 @@
USING: kernel system combinators alien.syntax alien.c-types USING: kernel system combinators alien.syntax alien.c-types
math io.backend.unix vocabs.loader unix ; math io.backend.unix vocabs.loader unix classes.struct ;
IN: unix.stat IN: unix.stat
! File Types ! File Types
@ -15,8 +15,8 @@ CONSTANT: S_IFLNK OCT: 120000 ! Symbolic link.
CONSTANT: S_IFSOCK OCT: 140000 ! Socket. CONSTANT: S_IFSOCK OCT: 140000 ! Socket.
CONSTANT: S_IFWHT OCT: 160000 ! Whiteout. CONSTANT: S_IFWHT OCT: 160000 ! Whiteout.
C-STRUCT: fsid STRUCT: fsid
{ { "int" 2 } "__val" } ; { __val int[2] } ;
TYPEDEF: fsid __fsid_t TYPEDEF: fsid __fsid_t
TYPEDEF: fsid fsid_t TYPEDEF: fsid fsid_t
@ -30,7 +30,7 @@ TYPEDEF: fsid fsid_t
} case >> } case >>
: file-status ( pathname -- stat ) : file-status ( pathname -- stat )
"stat" <c-object> [ [ stat ] unix-system-call drop ] keep ; \ stat <struct> [ [ stat ] unix-system-call drop ] keep ;
: link-status ( pathname -- stat ) : link-status ( pathname -- stat )
"stat" <c-object> [ [ lstat ] unix-system-call drop ] keep ; \ stat <struct> [ [ lstat ] unix-system-call drop ] keep ;

View File

@ -1,34 +1,34 @@
! Copyright (C) 2008 Doug Coleman. ! Copyright (C) 2008 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: alien.syntax unix.types unix.stat ; USING: alien.syntax unix.types unix.stat classes.struct ;
IN: unix.statfs.freebsd IN: unix.statfs.freebsd
CONSTANT: MFSNAMELEN 16 ! length of type name including null */ CONSTANT: MFSNAMELEN 16 ! length of type name including null */
CONSTANT: MNAMELEN 88 ! size of on/from name bufs CONSTANT: MNAMELEN 88 ! size of on/from name bufs
CONSTANT: STATFS_VERSION HEX: 20030518 ! current version number CONSTANT: STATFS_VERSION HEX: 20030518 ! current version number
C-STRUCT: statfs STRUCT: statfs
{ "uint32_t" "f_version" } { f_version uint32_t }
{ "uint32_t" "f_type" } { f_type uint32_t }
{ "uint64_t" "f_flags" } { f_flags uint64_t }
{ "uint64_t" "f_bsize" } { f_bsize uint64_t }
{ "uint64_t" "f_iosize" } { f_iosize uint64_t }
{ "uint64_t" "f_blocks" } { f_blocks uint64_t }
{ "uint64_t" "f_bfree" } { f_bfree uint64_t }
{ "int64_t" "f_bavail" } { f_bavail int64_t }
{ "uint64_t" "f_files" } { f_files uint64_t }
{ "int64_t" "f_ffree" } { f_ffree int64_t }
{ "uint64_t" "f_syncwrites" } { f_syncwrites uint64_t }
{ "uint64_t" "f_asyncwrites" } { f_asyncwrites uint64_t }
{ "uint64_t" "f_syncreads" } { f_syncreads uint64_t }
{ "uint64_t" "f_asyncreads" } { f_asyncreads uint64_t }
{ { "uint64_t" 10 } "f_spare" } { f_spare uint64_t[10] }
{ "uint32_t" "f_namemax" } { f_namemax uint32_t }
{ "uid_t" "f_owner" } { f_owner uid_t }
{ "fsid_t" "f_fsid" } { f_fsid fsid_t }
{ { "char" 80 } "f_charspare" } { f_charspare char[80] }
{ { "char" MFSNAMELEN } "f_fstypename" } { f_fstypename { "char" MFSNAMELEN } }
{ { "char" MNAMELEN } "f_mntfromname" } { f_mntfromname { "char" MNAMELEN } }
{ { "char" MNAMELEN } "f_mntonname" } ; { f_mntonname { "char" MNAMELEN } } ;
FUNCTION: int statfs ( char* path, statvfs* buf ) ; FUNCTION: int statfs ( char* path, statvfs* buf ) ;

View File

@ -1,19 +1,19 @@
! Copyright (C) 2008 Doug Coleman. ! Copyright (C) 2008 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: alien.syntax unix.types unix.stat ; USING: alien.syntax unix.types unix.stat classes.struct ;
IN: unix.statfs.linux IN: unix.statfs.linux
C-STRUCT: statfs64 STRUCT: statfs64
{ "__SWORD_TYPE" "f_type" } { f_type __SWORD_TYPE }
{ "__SWORD_TYPE" "f_bsize" } { f_bsize __SWORD_TYPE }
{ "__fsblkcnt64_t" "f_blocks" } { f_blocks __fsblkcnt64_t }
{ "__fsblkcnt64_t" "f_bfree" } { f_bfree __fsblkcnt64_t }
{ "__fsblkcnt64_t" "f_bavail" } { f_bavail __fsblkcnt64_t }
{ "__fsfilcnt64_t" "f_files" } { f_files __fsblkcnt64_t }
{ "__fsfilcnt64_t" "f_ffree" } { f_ffree __fsblkcnt64_t }
{ "__fsid_t" "f_fsid" } { f_fsid __fsid_t }
{ "__SWORD_TYPE" "f_namelen" } { f_namelen __SWORD_TYPE }
{ "__SWORD_TYPE" "f_frsize" } { f_frsize __SWORD_TYPE }
{ { "__SWORD_TYPE" 5 } "f_spare" } ; { f_spare __SWORD_TYPE[5] } ;
FUNCTION: int statfs64 ( char* path, statfs64* buf ) ; FUNCTION: int statfs64 ( char* path, statfs64* buf ) ;

View File

@ -3,7 +3,7 @@
USING: alien.c-types io.encodings.utf8 io.encodings.string USING: alien.c-types io.encodings.utf8 io.encodings.string
kernel sequences unix.stat accessors unix combinators math kernel sequences unix.stat accessors unix combinators math
grouping system alien.strings math.bitwise alien.syntax grouping system alien.strings math.bitwise alien.syntax
unix.types ; unix.types classes.struct ;
IN: unix.statfs.macosx IN: unix.statfs.macosx
CONSTANT: MNT_RDONLY HEX: 00000001 CONSTANT: MNT_RDONLY HEX: 00000001
@ -65,9 +65,9 @@ CONSTANT: VFS_CTL_NEWADDR HEX: 00010004
CONSTANT: VFS_CTL_TIMEO HEX: 00010005 CONSTANT: VFS_CTL_TIMEO HEX: 00010005
CONSTANT: VFS_CTL_NOLOCKS HEX: 00010006 CONSTANT: VFS_CTL_NOLOCKS HEX: 00010006
C-STRUCT: vfsquery STRUCT: vfsquery
{ "uint32_t" "vq_flags" } { vq_flags uint32_t }
{ { "uint32_t" 31 } "vq_spare" } ; { vq_spare uint32_t[31] } ;
CONSTANT: VQ_NOTRESP HEX: 0001 CONSTANT: VQ_NOTRESP HEX: 0001
CONSTANT: VQ_NEEDAUTH HEX: 0002 CONSTANT: VQ_NEEDAUTH HEX: 0002
@ -95,26 +95,26 @@ CONSTANT: MFSNAMELEN 15
CONSTANT: MNAMELEN 90 CONSTANT: MNAMELEN 90
CONSTANT: MFSTYPENAMELEN 16 CONSTANT: MFSTYPENAMELEN 16
C-STRUCT: fsid_t STRUCT: fsid_t
{ { "int32_t" 2 } "val" } ; { val int32_t[2] } ;
C-STRUCT: statfs64 STRUCT: statfs64
{ "uint32_t" "f_bsize" } { f_bsize uint32_t }
{ "int32_t" "f_iosize" } { f_iosize int32_t }
{ "uint64_t" "f_blocks" } { f_blocks uint64_t }
{ "uint64_t" "f_bfree" } { f_bfree uint64_t }
{ "uint64_t" "f_bavail" } { f_bavail uint64_t }
{ "uint64_t" "f_files" } { f_files uint64_t }
{ "uint64_t" "f_ffree" } { f_ffree uint64_t }
{ "fsid_t" "f_fsid" } { f_fsid fsid_t }
{ "uid_t" "f_owner" } { f_owner uid_t }
{ "uint32_t" "f_type" } { f_type uint32_t }
{ "uint32_t" "f_flags" } { f_flags uint32_t }
{ "uint32_t" "f_fssubtype" } { f_fssubtype uint32_t }
{ { "char" MFSTYPENAMELEN } "f_fstypename" } { f_fstypename { "char" MFSTYPENAMELEN } }
{ { "char" MAXPATHLEN } "f_mntonname" } { f_mntonname { "char" MAXPATHLEN } }
{ { "char" MAXPATHLEN } "f_mntfromname" } { f_mntfromname { "char" MAXPATHLEN } }
{ { "uint32_t" 8 } "f_reserved" } ; { f_reserved uint32_t[8] } ;
FUNCTION: int statfs64 ( char* path, statfs64* buf ) ; FUNCTION: int statfs64 ( char* path, statfs64* buf ) ;
FUNCTION: int getmntinfo64 ( statfs64** mntbufp, int flags ) ; FUNCTION: int getmntinfo64 ( statfs64** mntbufp, int flags ) ;

View File

@ -1,33 +1,33 @@
! Copyright (C) 2008 Doug Coleman. ! Copyright (C) 2008 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: alien.syntax unix.types unix.stat ; USING: alien.syntax unix.types unix.stat classes.struct ;
IN: unix.statfs.openbsd IN: unix.statfs.openbsd
CONSTANT: MFSNAMELEN 16 CONSTANT: MFSNAMELEN 16
CONSTANT: MNAMELEN 90 CONSTANT: MNAMELEN 90
C-STRUCT: statfs STRUCT: statfs
{ "u_int32_t" "f_flags" } { f_flags u_int32_t }
{ "u_int32_t" "f_bsize" } { f_bsize u_int32_t }
{ "u_int32_t" "f_iosize" } { f_iosize u_int32_t }
{ "u_int64_t" "f_blocks" } { f_blocks u_int64_t }
{ "u_int64_t" "f_bfree" } { f_bfree u_int64_t }
{ "int64_t" "f_bavail" } { f_bavail int64_t }
{ "u_int64_t" "f_files" } { f_files u_int64_t }
{ "u_int64_t" "f_ffree" } { f_ffree u_int64_t }
{ "int64_t" "f_favail" } { f_favail int64_t }
{ "u_int64_t" "f_syncwrites" } { f_syncwrites u_int64_t }
{ "u_int64_t" "f_syncreads" } { f_syncreads u_int64_t }
{ "u_int64_t" "f_asyncwrites" } { f_asyncwrites u_int64_t }
{ "u_int64_t" "f_asyncreads" } { f_asyncreads u_int64_t }
{ "fsid_t" "f_fsid" } { f_fsid fsid_t }
{ "u_int32_t" "f_namemax" } { f_namemax u_int32_t }
{ "uid_t" "f_owner" } { f_owner uid_t }
{ "u_int32_t" "f_ctime" } { f_ctime u_int32_t }
{ { "u_int32_t" 3 } "f_spare" } { f_spare u_int32_t[3] }
{ { "char" MFSNAMELEN } "f_fstypename" } { f_fstypename { "char" MFSNAMELEN } }
{ { "char" MNAMELEN } "f_mntonname" } { f_mntonname { "char" MNAMELEN } }
{ { "char" MNAMELEN } "f_mntfromname" } { f_mntfromname { "char" MNAMELEN } }
{ { "char" 160 } "mount_info" } ; { mount_info char[160] } ;
FUNCTION: int statfs ( char* path, statvfs* buf ) ; FUNCTION: int statfs ( char* path, statvfs* buf ) ;

View File

@ -1,20 +1,20 @@
! Copyright (C) 2008 Doug Coleman. ! Copyright (C) 2008 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: alien.syntax ; USING: alien.syntax classes.struct ;
IN: unix.statvfs.freebsd IN: unix.statvfs.freebsd
C-STRUCT: statvfs STRUCT: statvfs
{ "fsblkcnt_t" "f_bavail" } { f_bavail fsblkcnt_t }
{ "fsblkcnt_t" "f_bfree" } { f_bfree fsblkcnt_t }
{ "fsblkcnt_t" "f_blocks" } { f_blocks fsblkcnt_t }
{ "fsfilcnt_t" "f_favail" } { f_favail fsfilcnt_t }
{ "fsfilcnt_t" "f_ffree" } { f_ffree fsfilcnt_t }
{ "fsfilcnt_t" "f_files" } { f_files fsfilcnt_t }
{ "ulong" "f_bsize" } { f_bsize ulong }
{ "ulong" "f_flag" } { f_flag ulong }
{ "ulong" "f_frsize" } { f_frsize ulong }
{ "ulong" "f_fsid" } { f_fsid ulong }
{ "ulong" "f_namemax" } ; { f_namemax ulong } ;
! Flags ! Flags
CONSTANT: ST_RDONLY HEX: 1 ! Read-only file system CONSTANT: ST_RDONLY HEX: 1 ! Read-only file system

View File

@ -1,21 +1,21 @@
! Copyright (C) 2008 Doug Coleman. ! Copyright (C) 2008 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: alien.syntax ; USING: alien.syntax classes.struct ;
IN: unix.statvfs.linux IN: unix.statvfs.linux
C-STRUCT: statvfs64 STRUCT: statvfs64
{ "ulong" "f_bsize" } { f_bsize ulong }
{ "ulong" "f_frsize" } { f_frsize ulong }
{ "__fsblkcnt64_t" "f_blocks" } { f_blocks __fsblkcnt64_t }
{ "__fsblkcnt64_t" "f_bfree" } { f_bfree __fsblkcnt64_t }
{ "__fsblkcnt64_t" "f_bavail" } { f_bavail __fsblkcnt64_t }
{ "__fsfilcnt64_t" "f_files" } { f_files __fsfilcnt64_t }
{ "__fsfilcnt64_t" "f_ffree" } { f_ffree __fsfilcnt64_t }
{ "__fsfilcnt64_t" "f_favail" } { f_favail __fsfilcnt64_t }
{ "ulong" "f_fsid" } { f_fsid ulong }
{ "ulong" "f_flag" } { f_flag ulong }
{ "ulong" "f_namemax" } { f_namemax ulong }
{ { "int" 6 } "__f_spare" } ; { __f_spare int[6] } ;
FUNCTION: int statvfs64 ( char* path, statvfs64* buf ) ; FUNCTION: int statvfs64 ( char* path, statvfs64* buf ) ;

View File

@ -1,20 +1,20 @@
! Copyright (C) 2008 Doug Coleman. ! Copyright (C) 2008 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: alien.syntax ; USING: alien.syntax classes.struct ;
IN: unix.statvfs.macosx IN: unix.statvfs.macosx
C-STRUCT: statvfs STRUCT: statvfs
{ "ulong" "f_bsize" } { f_bsize ulong }
{ "ulong" "f_frsize" } { f_frsize ulong }
{ "fsblkcnt_t" "f_blocks" } { f_blocks fsblkcnt_t }
{ "fsblkcnt_t" "f_bfree" } { f_bfree fsblkcnt_t }
{ "fsblkcnt_t" "f_bavail" } { f_bavail fsblkcnt_t }
{ "fsfilcnt_t" "f_files" } { f_files fsfilcnt_t }
{ "fsfilcnt_t" "f_ffree" } { f_ffree fsfilcnt_t }
{ "fsfilcnt_t" "f_favail" } { f_favail fsfilcnt_t }
{ "ulong" "f_fsid" } { f_fsid ulong }
{ "ulong" "f_flag" } { f_flag ulong }
{ "ulong" "f_namemax" } ; { f_namemax ulong } ;
! Flags ! Flags
CONSTANT: ST_RDONLY HEX: 1 ! Read-only file system CONSTANT: ST_RDONLY HEX: 1 ! Read-only file system

View File

@ -1,35 +1,35 @@
! Copyright (C) 2008 Doug Coleman. ! Copyright (C) 2008 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: alien.syntax ; USING: alien.syntax classes.struct ;
IN: unix.statvfs.netbsd IN: unix.statvfs.netbsd
CONSTANT: _VFS_NAMELEN 32 CONSTANT: _VFS_NAMELEN 32
CONSTANT: _VFS_MNAMELEN 1024 CONSTANT: _VFS_MNAMELEN 1024
C-STRUCT: statvfs STRUCT: statvfs
{ "ulong" "f_flag" } { f_flag ulong }
{ "ulong" "f_bsize" } { f_bsize ulong }
{ "ulong" "f_frsize" } { f_frsize ulong }
{ "ulong" "f_iosize" } { f_iosize ulong }
{ "fsblkcnt_t" "f_blocks" } { f_blocks fsblkcnt_t }
{ "fsblkcnt_t" "f_bfree" } { f_bfree fsblkcnt_t }
{ "fsblkcnt_t" "f_bavail" } { f_bavail fsblkcnt_t }
{ "fsblkcnt_t" "f_bresvd" } { f_bresvd fsblkcnt_t }
{ "fsfilcnt_t" "f_files" } { f_files fsfilcnt_t }
{ "fsfilcnt_t" "f_ffree" } { f_ffree fsfilcnt_t }
{ "fsfilcnt_t" "f_favail" } { f_favail fsfilcnt_t }
{ "fsfilcnt_t" "f_fresvd" } { f_fresvd fsfilcnt_t }
{ "uint64_t" "f_syncreads" } { f_syncreads uint64_t }
{ "uint64_t" "f_syncwrites" } { f_syncwrites uint64_t }
{ "uint64_t" "f_asyncreads" } { f_asyncreads uint64_t }
{ "uint64_t" "f_asyncwrites" } { f_asyncwrites uint64_t }
{ "fsid_t" "f_fsidx" } { f_fsidx fsid_t }
{ "ulong" "f_fsid" } { f_fsid ulong }
{ "ulong" "f_namemax" } { f_namemax ulong }
{ "uid_t" "f_owner" } { f_owner uid_t }
{ { "uint32_t" 4 } "f_spare" } { f_spare uint32_t[4] }
{ { "char" _VFS_NAMELEN } "f_fstypename" } { f_fstypename { "char" _VFS_NAMELEN } }
{ { "char" _VFS_MNAMELEN } "f_mntonname" } { f_mntonname { "char" _VFS_MNAMELEN } }
{ { "char" _VFS_MNAMELEN } "f_mntfromname" } ; { f_mntfromname { "char" _VFS_MNAMELEN } } ;
FUNCTION: int statvfs ( char* path, statvfs* buf ) ; FUNCTION: int statvfs ( char* path, statvfs* buf ) ;

View File

@ -1,20 +1,20 @@
! Copyright (C) 2008 Doug Coleman. ! Copyright (C) 2008 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: alien.syntax ; USING: alien.syntax classes.struct ;
IN: unix.statvfs.openbsd IN: unix.statvfs.openbsd
C-STRUCT: statvfs STRUCT: statvfs
{ "ulong" "f_bsize" } { f_bsize ulong }
{ "ulong" "f_frsize" } { f_frsize ulong }
{ "fsblkcnt_t" "f_blocks" } { f_blocks fsblkcnt_t }
{ "fsblkcnt_t" "f_bfree" } { f_bfree fsblkcnt_t }
{ "fsblkcnt_t" "f_bavail" } { f_bavail fsblkcnt_t }
{ "fsfilcnt_t" "f_files" } { f_files fsfilcnt_t }
{ "fsfilcnt_t" "f_ffree" } { f_ffree fsfilcnt_t }
{ "fsfilcnt_t" "f_favail" } { f_favail fsfilcnt_t }
{ "ulong" "f_fsid" } { f_fsid ulong }
{ "ulong" "f_flag" } { f_flag ulong }
{ "ulong" "f_namemax" } ; { f_namemax ulong } ;
CONSTANT: ST_RDONLY 1 CONSTANT: ST_RDONLY 1
CONSTANT: ST_NOSUID 2 CONSTANT: ST_NOSUID 2

View File

@ -1,40 +1,41 @@
! Copyright (C) 2008 Doug Coleman. ! Copyright (C) 2008 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: kernel alien.syntax alien.c-types math unix.types ; USING: kernel alien.syntax alien.c-types math unix.types
classes.struct accessors ;
IN: unix.time IN: unix.time
C-STRUCT: timeval STRUCT: timeval
{ "long" "sec" } { sec long }
{ "long" "usec" } ; { usec long } ;
C-STRUCT: timespec STRUCT: timespec
{ "time_t" "sec" } { sec time_t }
{ "long" "nsec" } ; { nsec long } ;
: make-timeval ( us -- timeval ) : make-timeval ( us -- timeval )
1000000 /mod 1000000 /mod
"timeval" <c-object> timeval <struct>
[ set-timeval-usec ] keep swap >>usec
[ set-timeval-sec ] keep ; swap >>sec ;
: make-timespec ( us -- timespec ) : make-timespec ( us -- timespec )
1000000 /mod 1000 * 1000000 /mod 1000 *
"timespec" <c-object> timespec <struct>
[ set-timespec-nsec ] keep swap >>nsec
[ set-timespec-sec ] keep ; swap >>sec ;
C-STRUCT: tm STRUCT: tm
{ "int" "sec" } ! Seconds: 0-59 (K&R says 0-61?) { sec int }
{ "int" "min" } ! Minutes: 0-59 { min int }
{ "int" "hour" } ! Hours since midnight: 0-23 { hour int }
{ "int" "mday" } ! Day of the month: 1-31 { mday int }
{ "int" "mon" } ! Months *since* january: 0-11 { mon int }
{ "int" "year" } ! Years since 1900 { year int }
{ "int" "wday" } ! Days since Sunday (0-6) { wday int }
{ "int" "yday" } ! Days since Jan. 1: 0-365 { yday int }
{ "int" "isdst" } ! +1 Daylight Savings Time, 0 No DST, { isdst int }
{ "long" "gmtoff" } ! Seconds: 0-59 (K&R says 0-61?) { gmtoff long }
{ "char*" "zone" } ; { zone char* } ;
FUNCTION: time_t time ( time_t* t ) ; FUNCTION: time_t time ( time_t* t ) ;
FUNCTION: tm* localtime ( time_t* clock ) ; FUNCTION: tm* localtime ( time_t* clock ) ;