about summary refs log tree commit diff
path: root/conform
diff options
context:
space:
mode:
Diffstat (limited to 'conform')
-rw-r--r--conform/conformtest.pl24
-rw-r--r--conform/data/netdb.h-data58
2 files changed, 76 insertions, 6 deletions
diff --git a/conform/conformtest.pl b/conform/conformtest.pl
index cfb23f2602..6ac72af460 100644
--- a/conform/conformtest.pl
+++ b/conform/conformtest.pl
@@ -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";
 
diff --git a/conform/data/netdb.h-data b/conform/data/netdb.h-data
index b1b4a48607..14eaa141ed 100644
--- a/conform/data/netdb.h-data
+++ b/conform/data/netdb.h-data
@@ -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