]> gitweb.factorcode.org Git - factor.git/blob - basis/alien/libraries/finder/freebsd/freebsd.factor
8523717cb65e8280504d304c9af468ec69847f63
[factor.git] / basis / alien / libraries / finder / freebsd / freebsd.factor
1 USING: alien.libraries.finder arrays assocs
2 combinators.short-circuit io io.encodings.utf8 io.files
3 io.files.info io.launcher kernel sequences sets splitting system
4 unicode ;
5 IN: alien.libraries.finder.freebsd
6 <PRIVATE
7
8 : parse-ldconfig-lines ( string -- triple )
9     [
10         ":-" split1 [ drop ] dip
11         "=>" split1 [ [ unicode:blank? ] trim ] bi@
12         2array
13     ] map ;
14
15 : load-ldconfig-cache ( -- seq )
16     "/sbin/ldconfig -r" utf8 [ read-lines ] with-process-reader
17     rest parse-ldconfig-lines ;
18
19 : name-matches? ( lib double -- ? )
20     first swap ?head [ ?first CHAR: . = ] [ drop f ] if ;
21
22 PRIVATE>
23
24 M: freebsd find-library*
25     "l" prepend load-ldconfig-cache
26     [ name-matches? ] with find nip ?first dup [ ".so" append ] when ;
27