]> gitweb.factorcode.org Git - factor.git/commitdiff
unix.utmpx: Fix bootstrap on linux, add platform-specific structs.
authorDoug Coleman <doug.coleman@gmail.com>
Wed, 5 Jun 2013 01:09:52 +0000 (18:09 -0700)
committerDoug Coleman <doug.coleman@gmail.com>
Wed, 5 Jun 2013 01:09:52 +0000 (18:09 -0700)
basis/unix/ffi/linux/linux.factor
basis/unix/utmpx/linux/authors.txt [new file with mode: 0644]
basis/unix/utmpx/linux/linux.factor [new file with mode: 0644]
basis/unix/utmpx/linux/platforms.txt [new file with mode: 0644]
basis/unix/utmpx/macosx/authors.txt [new file with mode: 0644]
basis/unix/utmpx/macosx/macosx.factor [new file with mode: 0644]
basis/unix/utmpx/macosx/platforms.txt [new file with mode: 0644]
basis/unix/utmpx/utmpx.factor

index 8d7bec607a10c7622e7ac1225d9be1b9b265bdc3..9e3a9b7f6565d2cd1625b063b8cf54b6a3061abe 100644 (file)
@@ -1,6 +1,7 @@
 ! Copyright (C) 2010 Doug Coleman.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: alien.c-types alien.syntax classes.struct unix.types ;
+USING: alien.c-types alien.syntax classes.struct unix.time
+unix.types ;
 IN: unix.ffi
 
 CONSTANT: MAXPATHLEN 1024
@@ -290,10 +291,10 @@ STRUCT: exit_status
 STRUCT: utmpx
     { ut_type short }
     { ut_pid pid_t }
-    { ut_line short }
-    { ut_id short }
-    { ut_user short }
-    { ut_host short }
+    { ut_line char[__UT_LINESIZE] }
+    { ut_id char[4] }
+    { ut_user char[__UT_NAMESIZE] }
+    { ut_host char[__UT_HOSTSIZE] }
     { ut_exit exit_status }
     { ut_session long }
     { ut_tv timeval }
diff --git a/basis/unix/utmpx/linux/authors.txt b/basis/unix/utmpx/linux/authors.txt
new file mode 100644 (file)
index 0000000..7c1b2f2
--- /dev/null
@@ -0,0 +1 @@
+Doug Coleman
diff --git a/basis/unix/utmpx/linux/linux.factor b/basis/unix/utmpx/linux/linux.factor
new file mode 100644 (file)
index 0000000..e218183
--- /dev/null
@@ -0,0 +1,17 @@
+! Copyright (C) 2013 Doug Coleman.
+! See http://factorcode.org/license.txt for BSD license.
+USING: accessors calendar.unix combinators kernel system
+unix.ffi unix.utmpx ;
+IN: unix.utmpx.linux
+
+M: linux utmpx>utmpx-record ( utmpx -- utmpx-record )
+    [ new-utmpx-record ] dip {
+        [ ut_user>> __UT_NAMESIZE memory>string >>user ]
+        [ ut_id>>   4 memory>string >>id ]
+        [ ut_line>> __UT_LINESIZE memory>string >>line ]
+        [ ut_pid>>  >>pid ]
+        [ ut_type>> >>type ]
+        [ ut_tv>>   timeval>unix-time >>timestamp ]
+        [ ut_host>> __UT_HOSTSIZE memory>string >>host ]
+    } cleave ;
+
diff --git a/basis/unix/utmpx/linux/platforms.txt b/basis/unix/utmpx/linux/platforms.txt
new file mode 100644 (file)
index 0000000..a08e1f3
--- /dev/null
@@ -0,0 +1 @@
+linux
diff --git a/basis/unix/utmpx/macosx/authors.txt b/basis/unix/utmpx/macosx/authors.txt
new file mode 100644 (file)
index 0000000..7c1b2f2
--- /dev/null
@@ -0,0 +1 @@
+Doug Coleman
diff --git a/basis/unix/utmpx/macosx/macosx.factor b/basis/unix/utmpx/macosx/macosx.factor
new file mode 100644 (file)
index 0000000..3ca89a0
--- /dev/null
@@ -0,0 +1,16 @@
+! Copyright (C) 2013 Doug Coleman.
+! See http://factorcode.org/license.txt for BSD license.
+USING: accessors calendar.unix combinators kernel system
+unix.ffi unix.utmpx ;
+IN: unix.utmpx.macosx
+
+M: macosx utmpx>utmpx-record ( utmpx -- utmpx-record )
+    [ new-utmpx-record ] dip {
+        [ ut_user>> _UTX_USERSIZE memory>string >>user ]
+        [ ut_id>>   _UTX_IDSIZE memory>string >>id ]
+        [ ut_line>> _UTX_LINESIZE memory>string >>line ]
+        [ ut_pid>>  >>pid ]
+        [ ut_type>> >>type ]
+        [ ut_tv>>   timeval>unix-time >>timestamp ]
+        [ ut_host>> _UTX_HOSTSIZE memory>string >>host ]
+    } cleave ;
diff --git a/basis/unix/utmpx/macosx/platforms.txt b/basis/unix/utmpx/macosx/platforms.txt
new file mode 100644 (file)
index 0000000..6e806f4
--- /dev/null
@@ -0,0 +1 @@
+macosx
index ef3731de2ae22b4045e2a3f6ffa920105a2c3db1..bbfa5771b2816373a458379af03e237c82e9898e 100644 (file)
@@ -37,17 +37,6 @@ HOOK: utmpx>utmpx-record os ( utmpx -- utmpx-record )
 
 M: unix new-utmpx-record
     utmpx-record new ;
-    
-M: unix utmpx>utmpx-record ( utmpx -- utmpx-record )
-    [ new-utmpx-record ] dip {
-        [ ut_user>> _UTX_USERSIZE memory>string >>user ]
-        [ ut_id>>   _UTX_IDSIZE memory>string >>id ]
-        [ ut_line>> _UTX_LINESIZE memory>string >>line ]
-        [ ut_pid>>  >>pid ]
-        [ ut_type>> >>type ]
-        [ ut_tv>>   timeval>unix-time >>timestamp ]
-        [ ut_host>> _UTX_HOSTSIZE memory>string >>host ]
-    } cleave ;
 
 : with-utmpx ( quot -- )
     setutxent [ endutxent ] [ ] cleanup ; inline
@@ -58,3 +47,8 @@ M: unix utmpx>utmpx-record ( utmpx -- utmpx-record )
         [ utmpx>utmpx-record ]
         produce nip
     ] with-utmpx ;
+
+os {
+    { macosx [ "unix.utmpx.macosx" require ] }
+    { linux [ "unix.utmpx.linux" require ] }
+} case