]> gitweb.factorcode.org Git - factor.git/commitdiff
Implemented unix.stat for freebsd
authorMatthew Willis <matthew.willis@mac.com>
Tue, 11 Mar 2008 07:38:51 +0000 (00:38 -0700)
committerMatthew Willis <matthew.willis@mac.com>
Tue, 11 Mar 2008 07:38:51 +0000 (00:38 -0700)
extra/unix/stat/freebsd/freebsd.factor [new file with mode: 0644]
extra/unix/stat/stat.factor
extra/unix/types/freebsd/freebsd.factor [new file with mode: 0644]
extra/unix/types/types.factor

diff --git a/extra/unix/stat/freebsd/freebsd.factor b/extra/unix/stat/freebsd/freebsd.factor
new file mode 100644 (file)
index 0000000..a81fc4f
--- /dev/null
@@ -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
index 6d60caf9872546bb71fdce3585210b0815a2ba62..e0a6a9fb76228b924c6d41f4e996fde6547498ff 100644 (file)
@@ -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 (file)
index 0000000..8d2d11e
--- /dev/null
@@ -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
index 23698d2c9b784484c77a79700f4f5f9bc0cac100..f046197d308d567b2e50e128b255c76b4f950256 100644 (file)
@@ -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