diff --git a/extra/ifaddrs/authors.txt b/extra/ifaddrs/authors.txt new file mode 100644 index 0000000000..e091bb8164 --- /dev/null +++ b/extra/ifaddrs/authors.txt @@ -0,0 +1 @@ +John Benediktsson diff --git a/extra/ifaddrs/ifaddrs.factor b/extra/ifaddrs/ifaddrs.factor new file mode 100644 index 0000000000..e50ef94960 --- /dev/null +++ b/extra/ifaddrs/ifaddrs.factor @@ -0,0 +1,34 @@ +! Copyright (C) 2016 John Benediktsson +! See http://factorcode.org/license.txt for BSD license +USING: accessors alien.c-types alien.data alien.destructors +alien.syntax classes.struct destructors libc sequences sets +sorting ; +IN: ifaddrs + +STRUCT: sockaddr + { sa_len uint8_t } + { sa_family uint8_t } + { sa_data char[14] } ; + +STRUCT: ifaddrs + { ifa_next ifaddrs* } + { ifa_name c-string } + { ifa_flags uint } + { ifa_addr sockaddr* } + { ifa_netmask sockaddr* } + { ifa_dstaddr sockaddr* } + { ifa_data void* } ; + +FUNCTION: int getifaddrs ( ifaddrs** ifap ) + +FUNCTION: void freeifaddrs ( ifaddrs* ifp ) + +DESTRUCTOR: freeifaddrs + +: interface-names ( -- ifaddrs ) + [ + { void* } [ getifaddrs io-error ] with-out-parameters + &freeifaddrs ifaddrs deref + [ ifa_next>> ] follow + [ ifa_name>> ] map members natural-sort + ] with-destructors ; diff --git a/extra/ifaddrs/platforms.txt b/extra/ifaddrs/platforms.txt new file mode 100644 index 0000000000..509143d863 --- /dev/null +++ b/extra/ifaddrs/platforms.txt @@ -0,0 +1 @@ +unix