]> gitweb.factorcode.org Git - factor.git/blob - basis/unix/utilities/utilities.factor
e1d26eab66f15b8aee02a9038cff23ac4be14611
[factor.git] / basis / unix / utilities / utilities.factor
1 ! Copyright (C) 2008 Doug Coleman.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: alien alien.c-types alien.strings
4 combinators.short-circuit fry kernel layouts sequences
5 specialized-arrays.alien accessors ;
6 IN: unix.utilities
7
8 : more? ( alien -- ? )
9     { [ ] [ *void* ] } 1&& ;
10
11 : advance ( void* -- void* )
12     cell swap <displaced-alien> ;
13
14 : alien>strings ( alien encoding -- strings )
15     [ [ dup more? ] ] dip
16     '[ [ advance ] [ *void* _ alien>string ] bi ]
17     produce nip ;
18
19 : strings>alien ( strings encoding -- array )
20     '[ _ malloc-string ] void*-array{ } map-as f suffix ;