diff --git a/basis/unix/utilities/authors.txt b/basis/unix/utilities/authors.txt new file mode 100644 index 0000000000..b4bd0e7b35 --- /dev/null +++ b/basis/unix/utilities/authors.txt @@ -0,0 +1 @@ +Doug Coleman \ No newline at end of file diff --git a/basis/unix/utilities/utilities.factor b/basis/unix/utilities/utilities.factor new file mode 100644 index 0000000000..1f3a6bf78a --- /dev/null +++ b/basis/unix/utilities/utilities.factor @@ -0,0 +1,19 @@ +! Copyright (C) 2008 Doug Coleman. +! See http://factorcode.org/license.txt for BSD license. +USING: alien alien.c-types alien.strings +combinators.short-circuit fry kernel layouts sequences ; +IN: unix.utilities + +: more? ( alien -- ? ) + { [ ] [ *void* ] } 1&& ; + +: advance ( void* -- void* ) + cell swap ; + +: alien>strings ( alien encoding -- strings ) + [ [ dup more? ] ] dip + '[ [ advance ] [ *void* _ alien>string ] bi ] + [ ] produce nip ; + +: strings>alien ( strings encoding -- alien ) + '[ _ malloc-string ] map f suffix >c-void*-array ;