This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] getaddrinfo: remove redundant GAIH_OKIFUNSPEC


----- Original Message -----
> From: "Siddhesh Poyarekar" <siddhesh@redhat.com>
> To: "Pavel Simerda" <psimerda@redhat.com>
> Cc: "libc-alpha" <libc-alpha@sourceware.org>, "Carlos O'Donell" <codonell@redhat.com>
> Sent: Monday, December 2, 2013 10:32:00 AM
> Subject: Re: [PATCH] getaddrinfo: remove redundant GAIH_OKIFUNSPEC
> 
> On Mon, Nov 25, 2013 at 12:35:57PM -0500, Pavel Simerda wrote:
> > Hi,
> > 
> > I found out that the GAIH_OKIFUNSPEC has no meaning in the current
> > getaddrinfo code.
> > 
> > Cheers,
> > 
> > Pavel
> > 
> > 	* sysdeps/posix/getaddrinfo.c: Remove redundant GAIH_OKIFUNSPEC.
> 
> The ChangeLog is wrong again here.  Could you please fix it up and
> repost?

Remove redundant GAIH_OKIFUNSPEC and GAIH_EAI.

Only gaih_inet() and gaih_inet_serv() use a special bit flag denoted by the GAIH_OKIFUNSPEC macro. Only the return value of gaih_inet_serv() is actively checked for the bit flag which is redundant because it just copies the nonzero property of the value otherwise returned. The return value of gaih_inet() is only checked for being zero and then the bit flag is filtered out. As the bit flag is set only for otherwise nonzero return values, it doesn't affect the zero comparison. GAIH_EAI just an alias to ~GAIH_OKIFUNSPEC.

	* sysdeps/posix/getaddrinfo.c (extern int __idna_to_unicode_lzlz): Remove the macros.
	(gaih_inet_serv): Likewise.
	(gaih_inet): Likewise.
	(getaddrinfo): Likewise.

diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c
index 387c22f..8218237 100644
--- a/sysdeps/posix/getaddrinfo.c
+++ b/sysdeps/posix/getaddrinfo.c
@@ -71,9 +71,6 @@ extern int __idna_to_unicode_lzlz (const char *input, char **output,
 # include <libidn/idna.h>
 #endif
 
-#define GAIH_OKIFUNSPEC 0x0100
-#define GAIH_EAI        ~(GAIH_OKIFUNSPEC)
-
 struct gaih_service
   {
     const char *name;
@@ -157,7 +154,7 @@ gaih_inet_serv (const char *servicename, const struct gaih_typeproto *tp,
 	  if (r == ERANGE)
 	    tmpbuflen *= 2;
 	  else
-	    return GAIH_OKIFUNSPEC | -EAI_SERVICE;
+	    return -EAI_SERVICE;
 	}
     }
   while (r);
@@ -299,9 +296,9 @@ gaih_inet (const char *name, const struct gaih_service *service,
       if (! tp->name[0])
 	{
 	  if (req->ai_socktype)
-	    return GAIH_OKIFUNSPEC | -EAI_SOCKTYPE;
+	    return -EAI_SOCKTYPE;
 	  else
-	    return GAIH_OKIFUNSPEC | -EAI_SERVICE;
+	    return -EAI_SERVICE;
 	}
     }
 
@@ -309,7 +306,7 @@ gaih_inet (const char *name, const struct gaih_service *service,
   if (service != NULL)
     {
       if ((tp->protoflag & GAI_PROTO_NOSERVICE) != 0)
-	return GAIH_OKIFUNSPEC | -EAI_SERVICE;
+	return -EAI_SERVICE;
 
       if (service->num < 0)
 	{
@@ -345,7 +342,7 @@ gaih_inet (const char *name, const struct gaih_service *service,
 
 		  if ((rc = gaih_inet_serv (service->name, tp, req, newp)))
 		    {
-		      if (rc & GAIH_OKIFUNSPEC)
+		      if (rc)
 			continue;
 		      return rc;
 		    }
@@ -354,7 +351,7 @@ gaih_inet (const char *name, const struct gaih_service *service,
 		  pst = &(newp->next);
 		}
 	      if (st == (struct gaih_servtuple *) &nullserv)
-		return GAIH_OKIFUNSPEC | -EAI_SERVICE;
+		return -EAI_SERVICE;
 	    }
 	}
       else
@@ -546,7 +543,7 @@ gaih_inet (const char *name, const struct gaih_service *service,
 							10);
 		      if (*end != '\0')
 			{
-			  result = GAIH_OKIFUNSPEC | -EAI_NONAME;
+			  result = -EAI_NONAME;
 			  goto free_and_return;
 			}
 		    }
@@ -667,7 +664,7 @@ gaih_inet (const char *name, const struct gaih_service *service,
 		  else
 		    /* We made requests but they turned out no data.
 		       The name is known, though.  */
-		    result = GAIH_OKIFUNSPEC | -EAI_NODATA;
+		    result = -EAI_NODATA;
 
 		  goto free_and_return;
 		}
@@ -773,7 +770,7 @@ gaih_inet (const char *name, const struct gaih_service *service,
 
 		  if (at->family == AF_UNSPEC)
 		    {
-		      result = GAIH_OKIFUNSPEC | -EAI_NONAME;
+		      result = -EAI_NONAME;
 		      goto free_and_return;
 		    }
 
@@ -1064,7 +1061,7 @@ gaih_inet (const char *name, const struct gaih_service *service,
 
 	  if (h_errno == NETDB_INTERNAL)
 	    {
-	      result = GAIH_OKIFUNSPEC | -EAI_SYSTEM;
+	      result = -EAI_SYSTEM;
 	      goto free_and_return;
 	    }
 
@@ -1076,7 +1073,7 @@ gaih_inet (const char *name, const struct gaih_service *service,
 	      else
 		/* We made requests but they turned out no data.  The name
 		   is known, though.  */
-		result = GAIH_OKIFUNSPEC | -EAI_NODATA;
+		result = -EAI_NODATA;
 
 	      goto free_and_return;
 	    }
@@ -1085,7 +1082,7 @@ gaih_inet (const char *name, const struct gaih_service *service,
     process_list:
       if (at->family == AF_UNSPEC)
 	{
-	  result = GAIH_OKIFUNSPEC | -EAI_NONAME;
+	  result = -EAI_NONAME;
 	  goto free_and_return;
 	}
     }
@@ -2412,7 +2409,7 @@ getaddrinfo (const char *name, const char *service,
 	  freeaddrinfo (p);
 	  __free_in6ai (in6ai);
 
-	  return -(last_i & GAIH_EAI);
+	  return -last_i;
 	}
       while (*end)
 	{
@@ -2645,7 +2642,7 @@ getaddrinfo (const char *name, const char *service,
       return 0;
     }
 
-  return last_i ? -(last_i & GAIH_EAI) : EAI_NONAME;
+  return last_i ? -last_i : EAI_NONAME;
 }
 libc_hidden_def (getaddrinfo)
 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]