bin/161548: commit references a PR

dfilter service dfilter at FreeBSD.ORG
Sun Sep 30 16:20:18 UTC 2012


The following reply was made to PR bin/161548; it has been noted by GNATS.

From: dfilter at FreeBSD.ORG (dfilter service)
To: bug-followup at FreeBSD.org
Cc:  
Subject: Re: bin/161548: commit references a PR
Date: Sun, 30 Sep 2012 16:19:10 +0000 (UTC)

 Author: kevlo
 Date: Sun Sep 30 16:17:54 2012
 New Revision: 241075
 URL: http://svn.freebsd.org/changeset/base/241075
 
 Log:
   MFC r240954:
   Teach getent(1) to look up a hostname and find IPv6 addresses.
   
   PR:	bin/161548
   Submitted by:	matthew
 
 Modified:
   stable/9/usr.bin/getent/getent.c
 Directory Properties:
   stable/9/usr.bin/   (props changed)
 
 Modified: stable/9/usr.bin/getent/getent.c
 ==============================================================================
 --- stable/9/usr.bin/getent/getent.c	Sun Sep 30 16:11:50 2012	(r241074)
 +++ stable/9/usr.bin/getent/getent.c	Sun Sep 30 16:17:54 2012	(r241075)
 @@ -277,7 +277,7 @@ hostsprint(const struct hostent *he)
  static int
  hosts(int argc, char *argv[])
  {
 -	struct hostent	*he;
 +	struct hostent	*he4, *he6;
  	char		addr[IN6ADDRSZ];
  	int		i, rv;
  
 @@ -285,21 +285,31 @@ hosts(int argc, char *argv[])
  	assert(argv != NULL);
  
  	sethostent(1);
 +	he4 = he6 = NULL;
  	rv = RV_OK;
  	if (argc == 2) {
 -		while ((he = gethostent()) != NULL)
 -			hostsprint(he);
 +		while ((he4 = gethostent()) != NULL)
 +			hostsprint(he4);
  	} else {
  		for (i = 2; i < argc; i++) {
 -			if (inet_pton(AF_INET6, argv[i], (void *)addr) > 0)
 -				he = gethostbyaddr(addr, IN6ADDRSZ, AF_INET6);
 -			else if (inet_pton(AF_INET, argv[i], (void *)addr) > 0)
 -				he = gethostbyaddr(addr, INADDRSZ, AF_INET);
 -			else
 -				he = gethostbyname(argv[i]);
 -			if (he != NULL)
 -				hostsprint(he);
 -			else {
 +			if (inet_pton(AF_INET6, argv[i], (void *)addr) > 0) {
 +				he6 = gethostbyaddr(addr, IN6ADDRSZ, AF_INET6);
 +				if (he6 != NULL)
 +					hostsprint(he6);
 +			} else if (inet_pton(AF_INET, argv[i],
 +			    (void *)addr) > 0) {
 +				he4 = gethostbyaddr(addr, INADDRSZ, AF_INET);
 +				if (he4 != NULL)
 +					hostsprint(he4);
 +	       		} else {
 +				he6 = gethostbyname2(argv[i], AF_INET6);
 +				if (he6 != NULL)
 +					hostsprint(he6);
 +				he4 = gethostbyname(argv[i]);
 +				if (he4 != NULL)
 +					hostsprint(he4);
 +			}
 +			if ( he4 == NULL && he6 == NULL ) {
  				rv = RV_NOTFOUND;
  				break;
  			}
 _______________________________________________
 svn-src-all at freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/svn-src-all
 To unsubscribe, send any mail to "svn-src-all-unsubscribe at freebsd.org"
 


More information about the freebsd-bugs mailing list