Update.
authorUlrich Drepper <drepper@redhat.com>
Sat, 27 Jan 2001 02:27:46 +0000 (02:27 +0000)
committerUlrich Drepper <drepper@redhat.com>
Sat, 27 Jan 2001 02:27:46 +0000 (02:27 +0000)
* conform/conformtest.pl: Implement optional-type.

* resolv/netdb.h: Include <netinet/in.h> not <sys/socket.h>.  Include
<rpc/netdb.h> only if __USE_MISC.  Include <stdint.h> instead of
defining uint32_t here.  Define IPPORT_RESERVED.
(struct hostent): Type of h_length element is int.
(getnameinfo): Type of flags parameter is unsigned int.
* inet/getnameinfo.c (getnameinfo): flags argument is unsigned.
* conform/data/netdb.h-data: Add many missing definitions.

ChangeLog
conform/conformtest.pl
conform/data/netdb.h-data
inet/getnameinfo.c
resolv/netdb.h

index b3c20b5..2a068da 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,15 @@
 2001-01-26  Ulrich Drepper  <drepper@redhat.com>
 
+       * conform/conformtest.pl: Implement optional-type.
+
+       * resolv/netdb.h: Include <netinet/in.h> not <sys/socket.h>.  Include
+       <rpc/netdb.h> only if __USE_MISC.  Include <stdint.h> instead of
+       defining uint32_t here.  Define IPPORT_RESERVED.
+       (struct hostent): Type of h_length element is int.
+       (getnameinfo): Type of flags parameter is unsigned int.
+       * inet/getnameinfo.c (getnameinfo): flags argument is unsigned.
+       * conform/data/netdb.h-data: Add many missing definitions.
+
        * conform/conformtest.pl: Implement optional-macro.
        * conform/data/math.h-data: Update for XPG6.
 
index cfb23f2..6ac72af 100644 (file)
@@ -546,6 +546,30 @@ while ($#headers >= 0) {
        $res = runtest ($fnamebase, "Testing for value of constant $const",
                        "Constant \"$const\" has not the right value.", $res);
       }
+    } elsif (/^optional-type *({([^}]*)|([a-zA-Z0-9_]*))/) {
+      my($type) = "$2$3";
+
+      # Remember that this name is allowed.
+      if ($type =~ /^struct *(.*)/) {
+       push @allow, $1;
+      } elsif ($type =~ /^union *(.*)/) {
+       push @allow, $1;
+      } else {
+       push @allow, $type;
+      }
+
+      # Remember that this name is allowed.
+      push @allow, $type;
+
+      # Generate a program to test for the availability of this constant.
+      open (TESTFILE, ">$fnamebase.c");
+      print TESTFILE "$prepend";
+      print TESTFILE "#include <$h>\n";
+      print TESTFILE "$type *a;\n";
+      close (TESTFILE);
+
+      compiletest ($fnamebase, "Testing for type $type",
+                  "Type \"$type\" not available.", $missing, 1);
     } elsif (/^type *({([^}]*)|([a-zA-Z0-9_]*))/) {
       my($type) = "$2$3";
 
index b1b4a48..14eaa14 100644 (file)
@@ -1,6 +1,6 @@
 #ifndef ISO
-type in_port_t
-type in_addr_t
+optional-type in_port_t
+optional-type in_addr_t
 
 type {struct hostent}
 
@@ -42,17 +42,63 @@ macro NO_DATA
 macro NO_RECOVERY
 macro TRY_AGAIN
 
-macro AI_V4MAPPED
-macro AI_ALL
-macro AI_ADDRCONFIG
-macro AI_DEFAULT
+type {struct addrinfo}
+element {struct addrinfo} int ai_flags
+element {struct addrinfo} int ai_family
+element {struct addrinfo} int ai_socktype
+element {struct addrinfo} int ai_protocol
+element {struct addrinfo} socklen_t ai_addrlen
+element {struct addrinfo} {struct sockaddr*} ai_addr
+element {struct addrinfo} {char*} ai_canonname
+element {struct addrinfo} {struct addrinfo*} ai_next
+
+macro AI_PASSIVE
+macro AI_CANONNAME
+macro AI_NUMERICHOST
+
+macro NI_NOFQDN
+macro NI_NUMERICHOST
+macro NI_NAMEREQD
+macro NI_NUMERICSERV
+macro NI_DGRAM
+
+macro EAI_AGAIN
+macro EAI_BADFLAGS
+macro EAI_FAIL
+macro EAI_FAMILY
+macro EAI_MEMORY
+macro EAI_NONAME
+macro EAI_SERVICE
+macro EAI_SOCKTYPE
+macro EAI_SYSTEM
 
 function void endhostent (void)
 function void endnetent (void)
 function void endprotoent (void)
 function void endservent (void)
+function void freeaddrinfo (struct addrinfo*)
+function {char*} gai_strerror (int)
+function int getaddrinfo (const char*, const char*, const struct addrinfo*, struct addrinfo**)
 function {struct hostent*} gethostbyaddr (const void*, socklen_t, int)
 function {struct hostent*} gethostbyname (const char*)
 function {struct hostent*} gethostent (void)
+function int getnameinfo (const struct sockaddr*, socklen_t, char*, socklen_t, char*, socklen_t, unsigned)
+function {struct netent*} getnetbyaddr (uint32_t, int)
+function {struct netent*} getnetbyname (const char*)
+function {struct netent*} getnetent (void)
+function {struct protoent*} getprotobyname (const char *)
+function {struct protoent*} getprotobynumber (int)
+function {struct protoent*} getprotoent (void)
+function {struct servent*} getservbyname (const char*, const char*)
+function {struct servent*} getservbyport (int, const char*)
+function {struct servent*} getservent (void)
+function void sethostent (int)
+function void setnetent (int)
+function void setprotoent (int)
+function void setservent (int)
+
+type socklen_t
 
+allow-header netinet/in.h
+allow-header inttypes.h
 #endif
index 9d37786..c83f2cc 100644 (file)
@@ -166,7 +166,8 @@ nrl_domainname (void)
 
 int
 getnameinfo (const struct sockaddr *sa, socklen_t addrlen, char *host,
-            socklen_t hostlen, char *serv, socklen_t servlen, int flags)
+            socklen_t hostlen, char *serv, socklen_t servlen,
+            unsigned int flags)
 {
   int serrno = errno;
   int tmpbuflen = 1024;
index 088522f..ae3f95a 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1996,1997,1998,1999,2000,2001 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it
 
 #include <features.h>
 
+#include <netinet/in.h>
+#include <stdint.h>
+#ifdef __USE_MISC
 /* This is necessary to make this include file properly replace the
    Sun version.  */
-#include <rpc/netdb.h>
-#include <sys/socket.h>                /* need socklen_t */
-#define __need_size_t
-#include <stddef.h>
-
-#ifndef __uint32_t_defined
-typedef unsigned int           uint32_t;
-# define __uint32_t_defined
+# include <rpc/netdb.h>
 #endif
 
 #include <bits/netdb.h>
@@ -87,6 +83,11 @@ __set_h_errno (int __err)
                                   type.  */
 #define        NO_ADDRESS      NO_DATA /* No address, look for MX record.  */
 
+#ifdef __USE_XOPEN2K
+/* Highest reserved Internet port number.  */
+# define IPPORT_RESERVED       1024
+#endif
+
 #ifdef __USE_GNU
 /* Scope delimiter for getaddrinfo(), getnameinfo().  */
 # define SCOPE_DELIMITER       '%'
@@ -107,7 +108,7 @@ struct hostent
   char *h_name;                        /* Official name of host.  */
   char **h_aliases;            /* Alias list.  */
   int h_addrtype;              /* Host address type.  */
-  socklen_t h_length;          /* Length of address.  */
+  int h_length;                        /* Length of address.  */
   char **h_addr_list;          /* List of addresses from name server.  */
 #define        h_addr  h_addr_list[0]  /* Address, for backward compatibility.  */
 };
@@ -455,7 +456,7 @@ extern char *gai_strerror (int __ecode) __THROW;
 extern int getnameinfo (__const struct sockaddr *__restrict __sa,
                        socklen_t __salen, char *__restrict __host,
                        socklen_t __hostlen, char *__restrict __serv,
-                       socklen_t __servlen, int __flags) __THROW;
+                       socklen_t __servlen, unsigned int __flags) __THROW;
 
 #endif /* POSIX */