]> gitweb.factorcode.org Git - factor.git/blob - basis/unix/sysctl/sysctl.factor
Support multiline entries in the UI Listener
[factor.git] / basis / unix / sysctl / sysctl.factor
1 ! Copyright (C) 2008 Doug Coleman, John Benediktsson.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: alien.c-types alien.data alien.strings alien.syntax
4 byte-arrays io.encodings.utf8 kernel libc sequences
5 specialized-arrays ;
6 IN: unix.sysctl
7
8 SPECIALIZED-ARRAY: int
9
10 LIBRARY: libc
11 FUNCTION: int sysctl ( int* name, uint namelen, void* oldp, size_t* oldlenp, void* newp, size_t newlen )
12 FUNCTION: int sysctlbyname ( c-string name, void* oldp, size_t* oldlenp, void* newp, size_t newlen )
13
14 : (sysctl-query) ( name namelen oldp oldlenp -- oldp )
15     over [ f 0 sysctl io-error ] dip ;
16
17 : (sysctl-name-query) ( name oldp oldlenp -- oldp )
18     over [ f 0 sysctlbyname io-error ] dip ;
19
20 : sysctl-query ( seq n -- byte-array )
21     [ [ int >c-array ] [ length ] bi ] dip
22     [ <byte-array> ] [ uint <ref> ] bi (sysctl-query) ;
23
24 : sysctl-name-query ( name n -- byte-array )
25     [ <byte-array> ] [ uint <ref> ] bi (sysctl-name-query) ;
26
27 : sysctl-query-string ( seq -- n )
28     4096 sysctl-query utf8 alien>string ;
29
30 : sysctl-name-query-string ( str -- n )
31     4096 sysctl-name-query utf8 alien>string ;
32
33 : sysctl-query-uint ( seq -- n )
34     4 sysctl-query uint deref ;
35
36 : sysctl-name-query-uint ( str -- n )
37     4 sysctl-name-query uint deref ;
38
39 : sysctl-query-ulonglong ( seq -- n )
40     8 sysctl-query ulonglong deref ;
41
42 : sysctl-name-query-ulonglong ( str -- n )
43     8 sysctl-name-query ulonglong deref ;