From 27c4515be6be8b54a98c7f1cff8156f504cb9041 Mon Sep 17 00:00:00 2001 From: Matthew Willis Date: Tue, 11 Mar 2008 00:38:51 -0700 Subject: [PATCH] Implemented unix.stat for freebsd --- extra/unix/stat/freebsd/freebsd.factor | 30 +++++++++++++++++++++++++ extra/unix/stat/stat.factor | 5 +++-- extra/unix/types/freebsd/freebsd.factor | 19 ++++++++++++++++ extra/unix/types/types.factor | 5 +++-- 4 files changed, 55 insertions(+), 4 deletions(-) create mode 100644 extra/unix/stat/freebsd/freebsd.factor create mode 100644 extra/unix/types/freebsd/freebsd.factor diff --git a/extra/unix/stat/freebsd/freebsd.factor b/extra/unix/stat/freebsd/freebsd.factor new file mode 100644 index 0000000000..a81fc4f02e --- /dev/null +++ b/extra/unix/stat/freebsd/freebsd.factor @@ -0,0 +1,30 @@ +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_atim" } + { "timespec" "st_mtim" } + { "timespec" "st_ctim" } + { "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 ) ; \ No newline at end of file diff --git a/extra/unix/stat/stat.factor b/extra/unix/stat/stat.factor index 6d60caf987..e0a6a9fb76 100644 --- a/extra/unix/stat/stat.factor +++ b/extra/unix/stat/stat.factor @@ -60,8 +60,9 @@ FUNCTION: int mkdir ( char* path, mode_t mode ) ; << os { - { "linux" [ "unix.stat.linux" require ] } - { "macosx" [ "unix.stat.macosx" require ] } + { "linux" [ "unix.stat.linux" require ] } + { "macosx" [ "unix.stat.macosx" require ] } + { "freebsd" [ "unix.stat.freebsd" require ] } [ drop ] } case diff --git a/extra/unix/types/freebsd/freebsd.factor b/extra/unix/types/freebsd/freebsd.factor new file mode 100644 index 0000000000..8d2d11e8ee --- /dev/null +++ b/extra/unix/types/freebsd/freebsd.factor @@ -0,0 +1,19 @@ +USING: alien.syntax ; + +IN: unix.types + +TYPEDEF: ushort __uint16_t +TYPEDEF: uint __uint32_t +TYPEDEF: int __int32_t +TYPEDEF: longlong __int64_t + +TYPEDEF: __uint32_t __dev_t +TYPEDEF: __uint32_t ino_t +TYPEDEF: __uint16_t mode_t +TYPEDEF: __uint16_t nlink_t +TYPEDEF: __uint32_t uid_t +TYPEDEF: __uint32_t gid_t +TYPEDEF: __int64_t off_t +TYPEDEF: __int64_t blkcnt_t +TYPEDEF: __uint32_t blksize_t +TYPEDEF: __uint32_t fflags_t \ No newline at end of file diff --git a/extra/unix/types/types.factor b/extra/unix/types/types.factor index 23698d2c9b..f046197d30 100644 --- a/extra/unix/types/types.factor +++ b/extra/unix/types/types.factor @@ -7,8 +7,9 @@ TYPEDEF: void* caddr_t os { - { "linux" [ "unix.types.linux" require ] } - { "macosx" [ "unix.types.macosx" require ] } + { "linux" [ "unix.types.linux" require ] } + { "macosx" [ "unix.types.macosx" require ] } + { "freebsd" [ "unix.types.freebsd" require ] } [ drop ] } case \ No newline at end of file -- 2.34.1