From fe67aae4f466cfda7c458d71c4597271c7b6492b Mon Sep 17 00:00:00 2001 From: Doug Coleman <doug.coleman@gmail.com> Date: Mon, 20 Oct 2008 02:05:15 -0500 Subject: [PATCH 1/6] add netbsd statvfs struct --- basis/unix/stat/netbsd/netbsd.factor | 32 ++++++++++++++++++++++++++- basis/unix/types/netbsd/netbsd.factor | 8 +++++++ 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/basis/unix/stat/netbsd/netbsd.factor b/basis/unix/stat/netbsd/netbsd.factor index 8057e5939b..f71e9f63d2 100644 --- a/basis/unix/stat/netbsd/netbsd.factor +++ b/basis/unix/stat/netbsd/netbsd.factor @@ -1,7 +1,37 @@ -USING: layouts combinators vocabs.loader ; +USING: layouts combinators vocabs.loader alien.syntax ; IN: unix.stat cell-bits { { 32 [ "unix.stat.netbsd.32" require ] } { 64 [ "unix.stat.netbsd.64" require ] } } case + +: _VFS_NAMELEN 32 ; inline +: _VFS_MNAMELEN 1024 ; inline + +C-STRUCT: statvfs + { "ulong" "f_flag" } + { "ulong" "f_bsize" } + { "ulong" "f_frsize" } + { "ulong" "f_iosize" } + { "fsblkcnt_t" "f_blocks" } + { "fsblkcnt_t" "f_bfree" } + { "fsblkcnt_t" "f_bavail" } + { "fsblkcnt_t" "f_bresvd" } + { "fsfilcnt_t" "f_files" } + { "fsfilcnt_t" "f_ffree" } + { "fsfilcnt_t" "f_favail" } + { "fsfilcnt_t" "f_fresvd" } + { "uint64_t" "f_syncreads" } + { "uint64_t" "f_syncwrites" } + { "uint64_t" "f_asyncreads" } + { "uint64_t" "f_asyncwrites" } + { "fsid_t" "f_fsidx" } + { "ulong" "f_fsid" } + { "ulong" "f_namemax" } + { "uid_t"" "f_owner" } + { { "uint32_t" 4 } "f_spare" } + { { "char" _VFS_NAMELEN } "f_fstypename" } + { { "char" _VFS_NAMELEN } "f_mntonname" } + { { "char" _VFS_NAMELEN } "f_mntfromname" } ; + diff --git a/basis/unix/types/netbsd/netbsd.factor b/basis/unix/types/netbsd/netbsd.factor index 3982d1e9f9..27b8966eda 100644 --- a/basis/unix/types/netbsd/netbsd.factor +++ b/basis/unix/types/netbsd/netbsd.factor @@ -8,6 +8,7 @@ TYPEDEF: __uint32_t dev_t TYPEDEF: __uint32_t mode_t TYPEDEF: __uint32_t nlink_t TYPEDEF: __uint32_t uid_t +TYPEDEF: __uint32_t __uid_t TYPEDEF: __uint32_t gid_t TYPEDEF: __int64_t off_t TYPEDEF: __int64_t blkcnt_t @@ -16,6 +17,13 @@ TYPEDEF: long ssize_t TYPEDEF: int pid_t TYPEDEF: int time_t + +TYPEDEF: __uint64_t fsblkcnt_t +TYPEDEF: fsblkcnt_t __fsblkcnt_t + +TYPEDEF: __uint64_t fsfilcnt_t +TYPEDEF: fsfilcnt_t __fsfilcnt_t + cell-bits { { 32 [ "unix.types.netbsd.32" require ] } { 64 [ "unix.types.netbsd.64" require ] } From 70fb131e82dd681eb0a94528e5ec864f4da705f1 Mon Sep 17 00:00:00 2001 From: Doug Coleman <doug.coleman@gmail.com> Date: Mon, 20 Oct 2008 02:27:09 -0500 Subject: [PATCH 2/6] add netbsd --- basis/unix/statfs/netbsd/authors.txt | 1 + basis/unix/statfs/netbsd/netbsd-tests.factor | 4 ++++ basis/unix/statfs/netbsd/netbsd.factor | 7 +++++++ 3 files changed, 12 insertions(+) create mode 100644 basis/unix/statfs/netbsd/authors.txt create mode 100644 basis/unix/statfs/netbsd/netbsd-tests.factor create mode 100644 basis/unix/statfs/netbsd/netbsd.factor diff --git a/basis/unix/statfs/netbsd/authors.txt b/basis/unix/statfs/netbsd/authors.txt new file mode 100644 index 0000000000..b4bd0e7b35 --- /dev/null +++ b/basis/unix/statfs/netbsd/authors.txt @@ -0,0 +1 @@ +Doug Coleman \ No newline at end of file diff --git a/basis/unix/statfs/netbsd/netbsd-tests.factor b/basis/unix/statfs/netbsd/netbsd-tests.factor new file mode 100644 index 0000000000..be100c1cb6 --- /dev/null +++ b/basis/unix/statfs/netbsd/netbsd-tests.factor @@ -0,0 +1,4 @@ +! Copyright (C) 2008 Doug Coleman. +! See http://factorcode.org/license.txt for BSD license. +USING: tools.test unix.statfs.netbsd ; +IN: unix.statfs.netbsd.tests diff --git a/basis/unix/statfs/netbsd/netbsd.factor b/basis/unix/statfs/netbsd/netbsd.factor new file mode 100644 index 0000000000..f9c86e117f --- /dev/null +++ b/basis/unix/statfs/netbsd/netbsd.factor @@ -0,0 +1,7 @@ +! Copyright (C) 2008 Doug Coleman. +! See http://factorcode.org/license.txt for BSD license. +USING: alien.syntax kernel ; +IN: unix.statfs.netbsd + + + From ff918546c1cfaa5c19c57c02333ea10a19d5370f Mon Sep 17 00:00:00 2001 From: Doug Coleman <doug.coleman@gmail.com> Date: Mon, 20 Oct 2008 02:08:33 -0500 Subject: [PATCH 3/6] ffi work --- basis/unix/stat/linux/linux.factor | 6 ------ basis/unix/stat/netbsd/netbsd.factor | 2 +- basis/unix/stat/stat.factor | 6 ++++++ 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/basis/unix/stat/linux/linux.factor b/basis/unix/stat/linux/linux.factor index 4bcab0b477..f1c931617e 100644 --- a/basis/unix/stat/linux/linux.factor +++ b/basis/unix/stat/linux/linux.factor @@ -1,12 +1,6 @@ USING: alien.syntax layouts combinators vocabs.loader ; IN: unix.stat -C-STRUCT: fsid - { { "int" 2 } "__val" } ; - -TYPEDEF: fsid __fsid_t -TYPEDEF: fsid fsid_t - cell-bits { { 32 [ "unix.stat.linux.32" require ] } diff --git a/basis/unix/stat/netbsd/netbsd.factor b/basis/unix/stat/netbsd/netbsd.factor index f71e9f63d2..aefa9fd2cf 100644 --- a/basis/unix/stat/netbsd/netbsd.factor +++ b/basis/unix/stat/netbsd/netbsd.factor @@ -29,7 +29,7 @@ C-STRUCT: statvfs { "fsid_t" "f_fsidx" } { "ulong" "f_fsid" } { "ulong" "f_namemax" } - { "uid_t"" "f_owner" } + { "uid_t" "f_owner" } { { "uint32_t" 4 } "f_spare" } { { "char" _VFS_NAMELEN } "f_fstypename" } { { "char" _VFS_NAMELEN } "f_mntonname" } diff --git a/basis/unix/stat/stat.factor b/basis/unix/stat/stat.factor index f8ad74c213..17d6604fc0 100644 --- a/basis/unix/stat/stat.factor +++ b/basis/unix/stat/stat.factor @@ -18,6 +18,12 @@ FUNCTION: int chmod ( char* path, mode_t mode ) ; FUNCTION: int fchmod ( int fd, mode_t mode ) ; FUNCTION: int mkdir ( char* path, mode_t mode ) ; +C-STRUCT: fsid + { { "int" 2 } "__val" } ; + + TYPEDEF: fsid __fsid_t + TYPEDEF: fsid fsid_t + << os { { linux [ "unix.stat.linux" require ] } { macosx [ "unix.stat.macosx" require ] } From d686ea1293b88d50f5b241dab51465724e5cc5ea Mon Sep 17 00:00:00 2001 From: Doug Coleman <doug.coleman@gmail.com> Date: Mon, 20 Oct 2008 03:01:44 -0500 Subject: [PATCH 4/6] netbsd work --- basis/unix/statfs/netbsd/netbsd.factor | 43 +++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/basis/unix/statfs/netbsd/netbsd.factor b/basis/unix/statfs/netbsd/netbsd.factor index f9c86e117f..f72eb7da27 100644 --- a/basis/unix/statfs/netbsd/netbsd.factor +++ b/basis/unix/statfs/netbsd/netbsd.factor @@ -1,7 +1,48 @@ ! Copyright (C) 2008 Doug Coleman. ! See http://factorcode.org/license.txt for BSD license. -USING: alien.syntax kernel ; +USING: alien.syntax kernel io.files unix.stat math unix +combinators system io.backend accessors alien.c-types +io.encodings.utf8 alien.strings ; IN: unix.statfs.netbsd +TUPLE: netbsd-file-system-info < file-system-info +flag bsize frsize io-size +blocks blocks-free blocks-available blocks-reserved +files ffree +sync-reads sync-writes async-reads async-writes +fsidx fsid namemax owner spare fstype mnotonname mntfromname +file-system-type-name mount-from ; +: statvfs>file-system-info ( byte-array -- netbsd-file-system-info ) + [ \ netbsd-file-system-info new ] dip + { + [ + [ statvfs-f_bsize ] + [ statvfs-f_bavail ] bi * >>free-space + ] + [ statvfs-f_flag >>flag ] + [ statvfs-f_bsize >>bsize ] + [ statvfs-f_frsize >>frsize ] + [ statvfs-f_iosize >>io-size ] + [ statvfs-f_blocks >>blocks ] + [ statvfs-f_bfree >>blocks-free ] + [ statvfs-f_favail >>flag ] + [ statvfs-f_fresvd >>flag ] + [ statvfs-f_files >>files ] + [ statvfs-f_ffree >>ffree ] + [ statvfs-f_syncreads >>sync-reads ] + [ statvfs-f_syncwrites >>sync-writes ] + [ statvfs-f_asyncreads >>async-writes ] + [ statvfs-f_asyncwrites >>async-writes ] + [ statvfs-f_fsidx >>fsidx ] + [ statvfs-f_namemax >>namemax ] + [ statvfs-f_owner >>owner ] + [ statvfs-f_spare >>spare ] + [ statvfs-f_fstypename utf8 alien>string >>file-system-type-name ] + [ statvfs-f_mntonname utf8 alien>string >>mount-on ] + [ statvfs-f_mntfromname utf8 alien>string >>mount-from ] + } cleave ; +M: netbsd file-system-info + normalize-path "statvfs" <c-object> tuck statvfs io-error + statvfs>file-system-info ; From 74dab4f90a7b3efe2250c0ddce6df5849b425d61 Mon Sep 17 00:00:00 2001 From: Doug Coleman <doug.coleman@gmail.com> Date: Mon, 20 Oct 2008 04:30:01 -0500 Subject: [PATCH 5/6] netbsd work --- basis/unix/stat/netbsd/netbsd.factor | 30 ------------------------ basis/unix/statfs/netbsd/netbsd.factor | 32 ++++++++++++++++++++++++-- basis/unix/statfs/netbsd/tags.txt | 1 + basis/unix/types/netbsd/netbsd.factor | 1 - 4 files changed, 31 insertions(+), 33 deletions(-) create mode 100644 basis/unix/statfs/netbsd/tags.txt diff --git a/basis/unix/stat/netbsd/netbsd.factor b/basis/unix/stat/netbsd/netbsd.factor index aefa9fd2cf..6fccd570e3 100644 --- a/basis/unix/stat/netbsd/netbsd.factor +++ b/basis/unix/stat/netbsd/netbsd.factor @@ -5,33 +5,3 @@ cell-bits { { 32 [ "unix.stat.netbsd.32" require ] } { 64 [ "unix.stat.netbsd.64" require ] } } case - -: _VFS_NAMELEN 32 ; inline -: _VFS_MNAMELEN 1024 ; inline - -C-STRUCT: statvfs - { "ulong" "f_flag" } - { "ulong" "f_bsize" } - { "ulong" "f_frsize" } - { "ulong" "f_iosize" } - { "fsblkcnt_t" "f_blocks" } - { "fsblkcnt_t" "f_bfree" } - { "fsblkcnt_t" "f_bavail" } - { "fsblkcnt_t" "f_bresvd" } - { "fsfilcnt_t" "f_files" } - { "fsfilcnt_t" "f_ffree" } - { "fsfilcnt_t" "f_favail" } - { "fsfilcnt_t" "f_fresvd" } - { "uint64_t" "f_syncreads" } - { "uint64_t" "f_syncwrites" } - { "uint64_t" "f_asyncreads" } - { "uint64_t" "f_asyncwrites" } - { "fsid_t" "f_fsidx" } - { "ulong" "f_fsid" } - { "ulong" "f_namemax" } - { "uid_t" "f_owner" } - { { "uint32_t" 4 } "f_spare" } - { { "char" _VFS_NAMELEN } "f_fstypename" } - { { "char" _VFS_NAMELEN } "f_mntonname" } - { { "char" _VFS_NAMELEN } "f_mntfromname" } ; - diff --git a/basis/unix/statfs/netbsd/netbsd.factor b/basis/unix/statfs/netbsd/netbsd.factor index f72eb7da27..042cd79ada 100644 --- a/basis/unix/statfs/netbsd/netbsd.factor +++ b/basis/unix/statfs/netbsd/netbsd.factor @@ -5,11 +5,39 @@ combinators system io.backend accessors alien.c-types io.encodings.utf8 alien.strings ; IN: unix.statfs.netbsd +: _VFS_NAMELEN 32 ; inline +: _VFS_MNAMELEN 1024 ; inline + +C-STRUCT: statvfs + { "ulong" "f_flag" } + { "ulong" "f_bsize" } + { "ulong" "f_frsize" } + { "ulong" "f_iosize" } + { "fsblkcnt_t" "f_blocks" } + { "fsblkcnt_t" "f_bfree" } + { "fsblkcnt_t" "f_bavail" } + { "fsblkcnt_t" "f_bresvd" } + { "fsfilcnt_t" "f_files" } + { "fsfilcnt_t" "f_ffree" } + { "fsfilcnt_t" "f_favail" } + { "fsfilcnt_t" "f_fresvd" } + { "uint64_t" "f_syncreads" } + { "uint64_t" "f_syncwrites" } + { "uint64_t" "f_asyncreads" } + { "uint64_t" "f_asyncwrites" } + { "fsid_t" "f_fsidx" } + { "ulong" "f_fsid" } + { "ulong" "f_namemax" } + { "uid_t" "f_owner" } + { { "uint32_t" 4 } "f_spare" } + { { "char" _VFS_NAMELEN } "f_fstypename" } + { { "char" _VFS_NAMELEN } "f_mntonname" } + { { "char" _VFS_NAMELEN } "f_mntfromname" } ; + TUPLE: netbsd-file-system-info < file-system-info flag bsize frsize io-size blocks blocks-free blocks-available blocks-reserved -files ffree -sync-reads sync-writes async-reads async-writes +files ffree sync-reads sync-writes async-reads async-writes fsidx fsid namemax owner spare fstype mnotonname mntfromname file-system-type-name mount-from ; diff --git a/basis/unix/statfs/netbsd/tags.txt b/basis/unix/statfs/netbsd/tags.txt new file mode 100644 index 0000000000..6bf68304bb --- /dev/null +++ b/basis/unix/statfs/netbsd/tags.txt @@ -0,0 +1 @@ +unportable diff --git a/basis/unix/types/netbsd/netbsd.factor b/basis/unix/types/netbsd/netbsd.factor index 27b8966eda..d69d498704 100644 --- a/basis/unix/types/netbsd/netbsd.factor +++ b/basis/unix/types/netbsd/netbsd.factor @@ -17,7 +17,6 @@ TYPEDEF: long ssize_t TYPEDEF: int pid_t TYPEDEF: int time_t - TYPEDEF: __uint64_t fsblkcnt_t TYPEDEF: fsblkcnt_t __fsblkcnt_t From 1b03aaf63e931cc69ff3dcb5487073fd303fee10 Mon Sep 17 00:00:00 2001 From: Doug Coleman <doug.coleman@gmail.com> Date: Mon, 20 Oct 2008 04:35:15 -0500 Subject: [PATCH 6/6] typos --- basis/unix/statfs/netbsd/netbsd.factor | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/basis/unix/statfs/netbsd/netbsd.factor b/basis/unix/statfs/netbsd/netbsd.factor index 042cd79ada..c58d6e1a0d 100644 --- a/basis/unix/statfs/netbsd/netbsd.factor +++ b/basis/unix/statfs/netbsd/netbsd.factor @@ -54,13 +54,13 @@ file-system-type-name mount-from ; [ statvfs-f_iosize >>io-size ] [ statvfs-f_blocks >>blocks ] [ statvfs-f_bfree >>blocks-free ] - [ statvfs-f_favail >>flag ] - [ statvfs-f_fresvd >>flag ] + [ statvfs-f_favail >>blocks-available ] + [ statvfs-f_fresvd >>blocks-reserved ] [ statvfs-f_files >>files ] [ statvfs-f_ffree >>ffree ] [ statvfs-f_syncreads >>sync-reads ] [ statvfs-f_syncwrites >>sync-writes ] - [ statvfs-f_asyncreads >>async-writes ] + [ statvfs-f_asyncreads >>async-reads ] [ statvfs-f_asyncwrites >>async-writes ] [ statvfs-f_fsidx >>fsidx ] [ statvfs-f_namemax >>namemax ]