]> gitweb.factorcode.org Git - factor.git/blobdiff - extra/resolv-conf/resolv-conf.factor
use reject instead of [ ... not ] filter.
[factor.git] / extra / resolv-conf / resolv-conf.factor
index 4ee0366f4543040d71385ffb4502a646dc2cc0e7..b6eefd214785192277c39d659655c6e38248bd0a 100644 (file)
@@ -6,24 +6,28 @@ unicode.categories ;
 IN: resolv-conf
 
 TUPLE: network ip netmask ;
-CONSTRUCTOR: network ( ip netmask -- network ) ;
+CONSTRUCTOR: <network> network ( ip netmask -- network ) ;
 
 TUPLE: options
 debug?
+edns0?
+insecure1?
+insecure2?
 { ndots integer initial: 1 }
 { timeout integer initial: 5 }
 { attempts integer initial: 2 }
-rotate? no-check-names? inet6? ;
+rotate? no-check-names? inet6? tcp? ;
 
-CONSTRUCTOR: options ( -- options ) ;
+CONSTRUCTOR: <options> options ( -- options ) ;
 
-TUPLE: resolv.conf nameserver domain search sortlist options ;
+TUPLE: resolv.conf nameserver domain lookup search sortlist options ;
 
-CONSTRUCTOR: resolv.conf ( -- resolv.conf )
+CONSTRUCTOR: <resolv.conf> resolv.conf ( -- resolv.conf )
     V{ } clone >>nameserver
     V{ } clone >>domain
     V{ } clone >>search
     V{ } clone >>sortlist
+    V{ } clone >>lookup
     <options> >>options ;
 
 <PRIVATE
@@ -40,6 +44,9 @@ CONSTRUCTOR: resolv.conf ( -- resolv.conf )
 : parse-domain ( resolv.conf string -- resolv.conf )
     split-line domain>> push-all ;
 
+: parse-lookup ( resolv.conf string -- resolv.conf )
+    split-line lookup>> push-all ;
+
 : parse-search ( resolv.conf string -- resolv.conf )
     split-line search>> push-all ;
 
@@ -70,6 +77,7 @@ ERROR: unsupported-resolv.conf-line string ;
     {
         { [ "nameserver" ?head ] [ parse-nameserver ] }
         { [ "domain" ?head ] [ parse-domain ] }
+        { [ "lookup" ?head ] [ parse-lookup ] }
         { [ "search" ?head ] [ parse-search ] }
         { [ "sortlist" ?head ] [ parse-sortlist ] }
         { [ "options" ?head ] [ parse-option ] }
@@ -82,7 +90,7 @@ PRIVATE>
     [ <resolv.conf> ] dip
     utf8 file-lines
     [ [ blank? ] trim ] map harvest
-    [ "#" head? not ] filter
+    [ "#" head? ] reject
     [ parse-resolv.conf-line ] each ;
 
 : default-resolv.conf ( -- resolv.conf )