]> gitweb.factorcode.org Git - factor.git/blob - extra/ifaddrs/ifaddrs.factor
Reformat
[factor.git] / extra / ifaddrs / ifaddrs.factor
1 ! Copyright (C) 2016 John Benediktsson
2 ! See http://factorcode.org/license.txt for BSD license
3 USING: accessors alien.c-types alien.data alien.destructors
4 alien.syntax classes.struct destructors libc sequences sets
5 sorting ;
6 IN: ifaddrs
7
8 STRUCT: sockaddr
9     { sa_len uint8_t }
10     { sa_family uint8_t }
11     { sa_data char[14] } ;
12
13 STRUCT: ifaddrs
14     { ifa_next ifaddrs* }
15     { ifa_name c-string }
16     { ifa_flags uint }
17     { ifa_addr sockaddr* }
18     { ifa_netmask sockaddr* }
19     { ifa_dstaddr sockaddr* }
20     { ifa_data void* } ;
21
22 FUNCTION: int getifaddrs ( ifaddrs** ifap )
23
24 FUNCTION: void freeifaddrs ( ifaddrs* ifp )
25
26 DESTRUCTOR: freeifaddrs
27
28 : interface-names ( -- ifaddrs )
29     [
30         { void* } [ getifaddrs io-error ] with-out-parameters
31         &freeifaddrs ifaddrs deref
32         [ ifa_next>> ] follow
33         [ ifa_name>> ] map members natural-sort
34     ] with-destructors ;