SCCS-vsn: lib/libc/net/res_init.c 6.6
*/
#if defined(LIBC_SCCS) && !defined(lint)
*/
#if defined(LIBC_SCCS) && !defined(lint)
-static char sccsid[] = "@(#)res_init.c 6.5 (Berkeley) %G%";
+static char sccsid[] = "@(#)res_init.c 6.6 (Berkeley) %G%";
#endif LIBC_SCCS and not lint
#include <sys/types.h>
#endif LIBC_SCCS and not lint
#include <sys/types.h>
* Resolver state default settings
*/
* Resolver state default settings
*/
-#ifndef RES_TIMEOUT
-#define RES_TIMEOUT 4
-#endif
-
- RES_TIMEOUT, /* retransmition time interval */
- 4, /* number of times to retransmit */
- RES_RECURSE|RES_DEFNAMES, /* options flags */
- 1, /* number of name servers */
+ RES_TIMEOUT, /* retransmition time interval */
+ 4, /* number of times to retransmit */
+ RES_DEFAULT, /* options flags */
+ 1, /* number of name servers */
res_init()
{
register FILE *fp;
res_init()
{
register FILE *fp;
+ register char *cp, **pp;
+ char buf[BUFSIZ];
extern u_long inet_addr();
extern char *index();
extern char *strcpy(), *strncpy();
extern u_long inet_addr();
extern char *index();
extern char *strcpy(), *strncpy();
int n = 0; /* number of nameserver records read from file */
_res.nsaddr.sin_addr.s_addr = INADDR_ANY;
int n = 0; /* number of nameserver records read from file */
_res.nsaddr.sin_addr.s_addr = INADDR_ANY;
(void)strcpy(_res.defdname, cp + 1);
}
(void)strcpy(_res.defdname, cp + 1);
}
/* Allow user to override the local domain definition */
if ((cp = getenv("LOCALDOMAIN")) != NULL)
(void)strncpy(_res.defdname, cp, sizeof(_res.defdname));
/* Allow user to override the local domain definition */
if ((cp = getenv("LOCALDOMAIN")) != NULL)
(void)strncpy(_res.defdname, cp, sizeof(_res.defdname));
+
+ /* find components of local domain that might be searched */
+ pp = _res.dnsrch;
+ *pp++ = _res.defdname;
+ for (cp = _res.defdname, n = 0; *cp; cp++)
+ if (*cp == '.')
+ n++;
+ cp = _res.defdname;
+ for (; n >= LOCALDOMAINPARTS && pp < _res.dnsrch + MAXDNSRCH; n--) {
+ cp = index(cp, '.');
+ *pp++ = ++cp;
+ }
_res.options |= RES_INIT;
return(0);
}
_res.options |= RES_INIT;
return(0);
}