Merge pull request #40 from abh/q-fixes

Make `q` work better if resolv.conf is missing
This commit is contained in:
Miek Gieben 2013-05-11 09:11:17 -07:00
commit 6f23a2e9f6
2 changed files with 12 additions and 3 deletions

View File

@ -25,10 +25,10 @@ type ClientConfig struct {
// a *ClientConfig.
func ClientConfigFromFile(conf string) (*ClientConfig, error) {
file, err := os.Open(conf)
defer file.Close()
if err != nil {
return nil, err
}
defer file.Close()
c := new(ClientConfig)
b := bufio.NewReader(file)
c.Servers = make([]string, 0)

View File

@ -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