+ if ((fp = fopen(CONFFILE, "r")) != NULL) {
+ /* read the config file */
+ while (fgets(buf, sizeof(buf), fp) != NULL) {
+ /* read default domain name */
+ if (!strncmp(buf, "domain", sizeof("domain") - 1)) {
+ cp = buf + sizeof("domain") - 1;
+ while (*cp == ' ' || *cp == '\t')
+ cp++;
+ if (*cp == '\0')
+ continue;
+ (void)strncpy(_res.defdname, cp, sizeof(_res.defdname));
+ _res.defdname[sizeof(_res.defdname) - 1] = '\0';
+ if ((cp = index(_res.defdname, '\n')) != NULL)
+ *cp = '\0';
+ continue;
+ }
+ /* read nameservers to query */
+ if (!strncmp(buf, "nameserver",
+ sizeof("nameserver") - 1) && (n < MAXNS)) {
+ cp = buf + sizeof("nameserver") - 1;
+ while (*cp == ' ' || *cp == '\t')
+ cp++;
+ if (*cp == '\0')
+ continue;
+ _res.nsaddr_list[n].sin_addr.s_addr = inet_addr(cp);
+ if (_res.nsaddr_list[n].sin_addr.s_addr == (unsigned)-1)
+ _res.nsaddr_list[n].sin_addr.s_addr = INADDR_ANY;
+ _res.nsaddr_list[n].sin_family = AF_INET;
+ _res.nsaddr_list[n].sin_port = htons(NAMESERVER_PORT);
+ if ( ++n >= MAXNS) {
+ n = MAXNS;
+#ifdef DEBUG
+ if ( _res.options & RES_DEBUG )
+ printf("MAXNS reached, reading resolv.conf\n");
+#endif DEBUG
+ }
+ continue;
+ }
+ }
+ if ( n > 1 )
+ _res.nscount = n;
+ (void) fclose(fp);
+ }
+ if (_res.defdname[0] == 0) {
+ if (gethostname(buf, sizeof(_res.defdname)) == 0 &&
+ (cp = index(buf, '.')))
+ (void)strcpy(_res.defdname, cp + 1);
+ }