⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 getaddrinfo-cygwin.patch

📁 开源备份软件源码 AMANDA, the Advanced Maryland Automatic Network Disk Archiver, is a backup system that a
💻 PATCH
字号:
--- gnulib/getaddrinfo.c.orig	2007-10-25 16:46:34.728843739 -0500+++ gnulib/getaddrinfo.c	2007-10-25 16:47:17.395395249 -0500@@ -42,6 +42,8 @@  #include "inet_ntop.h" +extern int h_errno;+ /* BeOS has AF_INET, but not PF_INET.  */ #ifndef PF_INET # define PF_INET AF_INET@@ -149,25 +151,29 @@     return getaddrinfo_ptr (nodename, servname, hints, res); #endif -  if (hints && (hints->ai_flags & ~(AI_CANONNAME|AI_PASSIVE)))+  if (hints && (hints->ai_flags & ~(AI_CANONNAME | AI_PASSIVE)))     /* FIXME: Support more flags. */     return EAI_BADFLAGS;    if (hints && !validate_family (hints->ai_family))     return EAI_FAMILY; -  if (hints &&-      hints->ai_socktype != SOCK_STREAM && hints->ai_socktype != SOCK_DGRAM)-    /* FIXME: Support other socktype. */-    return EAI_SOCKTYPE; /* FIXME: Better return code? */+  if ((hints != NULL) &&+      (hints->ai_socktype != 0) &&+      (hints->ai_socktype != SOCK_STREAM) &&+      (hints->ai_socktype != SOCK_DGRAM))+    {+      /* FIXME: Support other socktype. */+      return EAI_SOCKTYPE; /* FIXME: Better return code? */+    }    if (!nodename)     {-      if (!(hints->ai_flags & AI_PASSIVE))+      if (hints && !(hints->ai_flags & AI_PASSIVE)) 	return EAI_NONAME;  #ifdef HAVE_IPV6-      nodename = (hints->ai_family == AF_INET6) ? "::" : "0.0.0.0";+      nodename = (hints && (hints->ai_family == AF_INET6)) ? "::" : "0.0.0.0"; #else       nodename = "0.0.0.0"; #endif@@ -198,7 +204,7 @@     }    /* FIXME: Use gethostbyname_r if available. */-  he = gethostbyname (nodename);+  he = gethostbyname(nodename);   if (!he || he->h_addr_list[0] == NULL)     return EAI_NONAME; @@ -279,7 +285,7 @@       return EAI_NODATA;     } -  if (hints && hints->ai_flags & AI_CANONNAME)+  if (hints && (hints->ai_flags & AI_CANONNAME))     {       const char *cn;       if (he->h_name)@@ -343,9 +349,7 @@ #endif    /* FIXME: Support other flags. */-  if ((node && nodelen > 0 && !(flags & NI_NUMERICHOST)) ||-      (service && servicelen > 0 && !(flags & NI_NUMERICHOST)) ||-      (flags & ~(NI_NUMERICHOST|NI_NUMERICSERV)))+  if (flags & ~(NI_NUMERICHOST | NI_NUMERICSERV))     return EAI_BADFLAGS;    if (sa == NULL || salen < sizeof (sa->sa_family))@@ -369,34 +373,89 @@       return EAI_FAMILY;     } -  if (node && nodelen > 0 && flags & NI_NUMERICHOST)+  if (node && (nodelen > 0))     {+      char	addrbuf[256];+       switch (sa->sa_family) 	{ #if HAVE_IPV4 	case AF_INET:-	  if (!inet_ntop (AF_INET,+	  if (flags & NI_NUMERICHOST)+	    {+	      if (!inet_ntop (AF_INET, 			  &(((const struct sockaddr_in *) sa)->sin_addr),-			  node, nodelen))-	    return EAI_SYSTEM;+			  addrbuf, sizeof(addrbuf)))+	      return EAI_SYSTEM;+	    }+	  else+	    {+	      struct hostent *host_ent = gethostbyaddr(+	      		  (char *)&(((struct sockaddr_in *)sa)->sin_addr),+	      		  sizeof(struct sockaddr_in),+	      		  sa->sa_family);+	      if (host_ent != NULL)+	        {+	          if (nodelen <= snprintf(node, nodelen, "%s",+		  			host_ent->h_name))+		     return EAI_OVERFLOW;+	        }+	      else+		{+	          if (!inet_ntop (AF_INET,+			  &(((const struct sockaddr_in *) sa)->sin_addr),+			  addrbuf, sizeof(addrbuf)))+		    { +		      return EAI_SYSTEM;+		    }+		    if (nodelen <= snprintf(node, nodelen, "%s", addrbuf))+		      return EAI_OVERFLOW;+		}+	    } 	  break; #endif  #if HAVE_IPV6 	case AF_INET6:-	  if (!inet_ntop (AF_INET6,+	  if (flags & NI_NUMERICHOST)+	    {+	      if (!inet_ntop (AF_INET6,+			  &(((const struct sockaddr_in6 *) sa)->sin6_addr),+			  addrbuf, sizeof(addrbuf)))+	      return EAI_SYSTEM;+	    }+	  else+	    {+	      struct hostent *host_ent = gethostbyaddr(+	      		  (char *)&(((struct sockaddr_in6 *)sa)->sin6_addr),+	      		  sizeof(struct sockaddr_in6),+	      		  sa->sa_family);+	      if (host_ent != NULL)+	        {+	          if (nodelen <= snprintf(node, nodelen, "%s",+		  			host_ent->h_name))+		     return EAI_OVERFLOW;+	        }+	      else+		{+		  if (!inet_ntop (AF_INET6, 			  &(((const struct sockaddr_in6 *) sa)->sin6_addr),-			  node, nodelen))-	    return EAI_SYSTEM;+			  addrbuf, sizeof(addrbuf)))+		    { +		      return EAI_SYSTEM;+		    }+		    if (nodelen <= snprintf(node, nodelen, "%s", addrbuf))+		      return EAI_OVERFLOW;+		}+	    } 	  break; #endif- 	default: 	  return EAI_FAMILY; 	}     } -  if (service && servicelen > 0 && flags & NI_NUMERICSERV)+  if (service && (servicelen > 0))     switch (sa->sa_family)       { #if HAVE_IPV4

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -