1999-03-07 Mark Kettenis <kettenis@gnu.org>
[kopensolaris-gnu/glibc.git] / resolv / res_init.c
index 4599486..893072f 100644 (file)
@@ -95,7 +95,7 @@ static char rcsid[] = "$Id$";
  *   "search" property.
  * - The sortlist comprised of IP address netmask pairs are stored as
  *   values of the "sortlist" property. The IP address and optional netmask
- *   should be seperated by a slash (/) or ampersand (&) character.
+ *   should be separated by a slash (/) or ampersand (&) character.
  * - Internal resolver variables can be set from the value of the "options"
  *   property.
  */
@@ -110,7 +110,7 @@ static int netinfo_res_init __P((int *haveenv, int *havesearch));
 # include "../conf/options.h"
 #endif
 
-static void res_setoptions __P((char *, char *));
+static void res_setoptions __P((char *, char *)) internal_function;
 
 #ifdef RESOLVSORT
 static const char sort_mask[] = "/&";
@@ -159,7 +159,7 @@ res_init()
        register FILE *fp;
        register char *cp, **pp;
        register int n;
-       char buf[BUFSIZ];
+       char buf[MAXDNAME];
        int nserv = 0;    /* number of nameserver records read from file */
        int haveenv = 0;
        int havesearch = 0;
@@ -206,12 +206,13 @@ res_init()
 
 #ifdef USELOOPBACK
        _res.nsaddr.sin_addr = inet_makeaddr(IN_LOOPBACKNET, 1);
+       _res.nscount = 1;
 #else
        _res.nsaddr.sin_addr.s_addr = INADDR_ANY;
+       _res.nscount = 0;
 #endif
        _res.nsaddr.sin_family = AF_INET;
        _res.nsaddr.sin_port = htons(NAMESERVER_PORT);
-       _res.nscount = 1;
        _res.ndots = 1;
        _res.pfcode = 0;
 
@@ -259,7 +260,7 @@ res_init()
 #endif
        if ((fp = fopen(_PATH_RESCONF, "r")) != NULL) {
            /* read the config file */
-           while (fgets(buf, sizeof(buf), fp) != NULL) {
+           while (fgets_unlocked(buf, sizeof(buf), fp) != NULL) {
                /* skip comments */
                if (*buf == ';' || *buf == '#')
                        continue;
@@ -378,7 +379,7 @@ res_init()
                    continue;
                }
            }
-           if (nserv > 1)
+           if (nserv > _res.nscount)
                _res.nscount = nserv;
 #ifdef RESOLVSORT
            _res.nsort = nsort;
@@ -386,7 +387,7 @@ res_init()
            (void) fclose(fp);
        }
        if (_res.defdname[0] == 0 &&
-           gethostname(buf, sizeof(_res.defdname) - 1) == 0 &&
+           __gethostname(buf, sizeof(_res.defdname) - 1) == 0 &&
            (cp = strchr(buf, '.')) != NULL)
                strcpy(_res.defdname, cp + 1);
 
@@ -428,6 +429,7 @@ res_init()
 }
 
 static void
+internal_function
 res_setoptions(options, source)
        char *options, *source;
 {
@@ -570,7 +572,7 @@ netinfo_res_init(haveenv, havesearch)
                    ni_namelist_free(&nl);
                }
 
-               if (nserv > 1)
+               if (nserv > _res.nscount)
                    _res.nscount = nserv;
 
 #ifdef RESOLVSORT
@@ -650,6 +652,6 @@ res_randomid()
 {
        struct timeval now;
 
-       gettimeofday(&now, NULL);
-       return (0xffff & (now.tv_sec ^ now.tv_usec ^ getpid()));
+       __gettimeofday(&now, NULL);
+       return (0xffff & (now.tv_sec ^ now.tv_usec ^ __getpid()));
 }