Module Name:    src
Committed By:   christos
Date:           Sun Aug 25 08:46:34 UTC 2013

Modified Files:
        src/distrib/utils/libhack: gethost.c

Log Message:
provide the symbols sethostent.c in libc is missing.


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 src/distrib/utils/libhack/gethost.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/distrib/utils/libhack/gethost.c
diff -u src/distrib/utils/libhack/gethost.c:1.9 src/distrib/utils/libhack/gethost.c:1.10
--- src/distrib/utils/libhack/gethost.c:1.9	Tue Aug 20 11:44:17 2013
+++ src/distrib/utils/libhack/gethost.c	Sun Aug 25 04:46:34 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: gethost.c,v 1.9 2013/08/20 15:44:17 christos Exp $	*/
+/*	$NetBSD: gethost.c,v 1.10 2013/08/25 08:46:34 christos Exp $	*/
 
 /*-
  * Copyright (c) 1985, 1988, 1993
@@ -87,11 +87,11 @@ static struct hostent host;
 static char *host_aliases[MAXALIASES];
 static char hostbuf[BUFSIZ+1];
 static struct in_addr host_addr;
-static FILE *hostf = NULL;
-static int stayopen = 0;
 
-void _sethtent(int);
-void _endhtent(void);
+FILE *_h_file = NULL;
+void sethostent_r(FILE **);
+void endhostent_r(FILE **);
+
 struct hostent *_gethtent(void);
 struct hostent *_gethtbyname(const char *);
 struct hostent *_gethtbyaddr(const void *, socklen_t, int);
@@ -166,21 +166,20 @@ gethostbyaddr(const void *addr, socklen_
 }
 
 void
-_sethtent(int f)
+sethostent_r(FILE **hf)
 {
-	if (hostf == NULL)
-		hostf = fopen(_PATH_HOSTS, "r" );
+	if (*hf == NULL)
+		*hf = fopen(_PATH_HOSTS, "r");
 	else
-		rewind(hostf);
-	stayopen = f;
+		rewind(*hf);
 }
 
 void
-_endhtent(void)
+endhostent_r(FILE **hf)
 {
-	if (hostf && !stayopen) {
-		(void) fclose(hostf);
-		hostf = NULL;
+	if (*hf) {
+		(void)fclose(*hf);
+		*hf = NULL;
 	}
 }
 
@@ -190,10 +189,10 @@ _gethtent(void)
 	char *p;
 	char *cp, **q;
 
-	if (hostf == NULL && (hostf = fopen(_PATH_HOSTS, "r" )) == NULL)
+	if (_h_file == NULL && (_h_file = fopen(_PATH_HOSTS, "r" )) == NULL)
 		return NULL;
 again:
-	if ((p = fgets(hostbuf, BUFSIZ, hostf)) == NULL)
+	if ((p = fgets(hostbuf, BUFSIZ, _h_file)) == NULL)
 		return NULL;
 	if (*p == '#')
 		goto again;
@@ -239,8 +238,11 @@ _gethtbyname(const char *name)
 {
 	struct hostent *p;
 	char **cp;
+	FILE *hf = NULL;
 	
-	_sethtent(0);
+	sethostent_r(&hf);
+	if (hf == NULL)
+		return NULL;
 	while ((p = _gethtent()) != NULL) {
 		if (strcasecmp(p->h_name, name) == 0)
 			break;
@@ -249,7 +251,7 @@ _gethtbyname(const char *name)
 				goto found;
 	}
 found:
-	_endhtent();
+	endhostent_r(&hf);
 	if (p == NULL)
 		h_errno = HOST_NOT_FOUND;
 	return p;
@@ -259,12 +261,15 @@ struct hostent *
 _gethtbyaddr(const void *addr, socklen_t len, int type)
 {
 	struct hostent *p;
-
-	_sethtent(0);
+	FILE *hf = NULL;
+	
+	sethostent_r(&hf);
+	if (hf == NULL)
+		return NULL;
 	while ((p = _gethtent()) != NULL)
 		if (p->h_addrtype == type && !memcmp(p->h_addr, addr, len))
 			break;
-	_endhtent();
+	endhostent_r(&hf);
 	if (p == NULL)
 		h_errno = HOST_NOT_FOUND;
 	return p;

Reply via email to