From e4a33cd4945f1d675cb9ea8b80a284514788f3aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ask=20Bj=C3=B8rn=20Hansen?= Date: Fri, 10 May 2013 22:51:23 -0700 Subject: [PATCH] Work without resolv.conf if the nameserver is specified with @... --- ex/q/q.go | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/ex/q/q.go b/ex/q/q.go index fcc1cf80..ba12a5e7 100644 --- a/ex/q/q.go +++ b/ex/q/q.go @@ -47,8 +47,6 @@ func main() { flag.PrintDefaults() } - conf, _ := dns.ClientConfigFromFile("/etc/resolv.conf") - nameserver := "@" + conf.Servers[0] qtype := uint16(0) qclass := uint16(dns.ClassINET) var qname []string @@ -70,6 +68,8 @@ func main() { } } + var nameserver string + Flags: for i := 0; i < flag.NArg(); i++ { // If it starts with @ it is a nameserver @@ -109,6 +109,15 @@ Flags: qtype = dns.TypeA } + if len(nameserver) == 0 { + conf, err := dns.ClientConfigFromFile("/etc/resolv.conf") + if err != nil { + fmt.Fprintln(os.Stderr, err) + os.Exit(2) + } + nameserver = "@" + conf.Servers[0] + } + nameserver = string([]byte(nameserver)[1:]) // chop off @ // if the nameserver is from /etc/resolv.conf the [ and ] are already // added, thereby breaking net.ParseIP. Check for this and don't