* Copyright (c) 1985 Regents of the University of California.
* All rights reserved. The Berkeley software License Agreement
* specifies the terms and conditions for redistribution.
static char sccsid
[] = "@(#)res_init.c 5.7 (Berkeley) %G%";
#include <arpa/nameser.h>
* Resolver configuration file. Contains the address of the
* inital name server to query and the default domain for
* non fully qualified domain names.
char *conffile
= CONFFILE
;
char *conffile
= "/etc/resolv.conf";
* Resolver state default settings
RES_RECURSE
|RES_DEFNAMES
,
* Set up default settings. If the configuration file exist, the values
* there will have precedence. Otherwise, the server address is set to
* INADDR_ANY and the default domain name comes from the gethostname().
* The configuration file should only be used if you want to redefine your
* domain or run without a server on your machine.
* Return 0 if completes successfully, -1 on error
extern u_long
inet_addr();
extern char *strcpy(), *strncpy();
_res
.nsaddr
.sin_family
= AF_INET
;
_res
.nsaddr
.sin_addr
.s_addr
= INADDR_ANY
;
_res
.nsaddr
.sin_port
= htons(NAMESERVER_PORT
);
if ((fp
= fopen(conffile
, "r")) != NULL
) {
while (fgets(buf
, sizeof(buf
), fp
) != NULL
) {
if (!strncmp(buf
, "domain", sizeof("domain") - 1)) {
cp
= buf
+ sizeof("domain") - 1;
while (*cp
== ' ' || *cp
== '\t')
(void)strncpy(_res
.defdname
, cp
,
_res
.defdname
[sizeof(_res
.defdname
) - 1] = '\0';
if ((cp
= index(_res
.defdname
, '\n')) != NULL
)
if (!strncmp(buf
, "resolver", sizeof("resolver") - 1)) {
cp
= buf
+ sizeof("resolver") - 1;
while (*cp
== ' ' || *cp
== '\t')
_res
.nsaddr
.sin_addr
.s_addr
= inet_addr(cp
);
if (_res
.nsaddr
.sin_addr
.s_addr
== (unsigned)-1)
_res
.nsaddr
.sin_addr
.s_addr
=
if (_res
.defdname
[0] == 0) {
if (gethostname(buf
, sizeof(_res
.defdname
)) == -1)
if ((cp
= index(buf
, '.')) == NULL
)
(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
));
_res
.options
|= RES_INIT
;