diff --git a/basis/unix/ffi/linux/linux.factor b/basis/unix/ffi/linux/linux.factor index 8d7bec607a..9e3a9b7f65 100644 --- a/basis/unix/ffi/linux/linux.factor +++ b/basis/unix/ffi/linux/linux.factor @@ -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 index 0000000000..7c1b2f2279 --- /dev/null +++ b/basis/unix/utmpx/linux/authors.txt @@ -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 index 0000000000..e218183087 --- /dev/null +++ b/basis/unix/utmpx/linux/linux.factor @@ -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 index 0000000000..a08e1f35eb --- /dev/null +++ b/basis/unix/utmpx/linux/platforms.txt @@ -0,0 +1 @@ +linux diff --git a/basis/unix/utmpx/macosx/authors.txt b/basis/unix/utmpx/macosx/authors.txt new file mode 100644 index 0000000000..7c1b2f2279 --- /dev/null +++ b/basis/unix/utmpx/macosx/authors.txt @@ -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 index 0000000000..3ca89a0687 --- /dev/null +++ b/basis/unix/utmpx/macosx/macosx.factor @@ -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 index 0000000000..6e806f449e --- /dev/null +++ b/basis/unix/utmpx/macosx/platforms.txt @@ -0,0 +1 @@ +macosx diff --git a/basis/unix/utmpx/utmpx.factor b/basis/unix/utmpx/utmpx.factor index ef3731de2a..bbfa5771b2 100644 --- a/basis/unix/utmpx/utmpx.factor +++ b/basis/unix/utmpx/utmpx.factor @@ -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