1 USING: arrays assocs environment hashtables io.encodings.utf8
2 io.files io.pathnames kernel memoize sequences splitting system
7 HOOK: hosts-path os ( -- path )
10 "SystemRoot" os-env "System32/drivers/etc/hosts" append-path ;
12 M: unix hosts-path "/etc/hosts" ;
14 : parse-hosts ( path -- hosts )
16 [ [ unicode:blank? ] trim ] map harvest
19 [ unicode:blank? ] split1-when
20 [ unicode:blank? ] split-when harvest
23 MEMO: system-hosts ( -- hosts ) hosts-path parse-hosts ;
25 : host>ips ( host -- ips )
26 system-hosts [ member? nip ] with assoc-filter keys ;
28 : ip>hosts ( ip -- hosts )