aboutsummaryrefslogtreecommitdiff
path: root/conform
diff options
context:
space:
mode:
Diffstat (limited to 'conform')
-rw-r--r--conform/conformtest.pl53
-rw-r--r--conform/data/netinet/in.h-data2
-rw-r--r--conform/data/sys/socket.h-data1
3 files changed, 40 insertions, 16 deletions
diff --git a/conform/conformtest.pl b/conform/conformtest.pl
index 5ae1cea..364e34d 100644
--- a/conform/conformtest.pl
+++ b/conform/conformtest.pl
@@ -224,11 +224,19 @@ sub newtoken {
if ($isknown{$token}) {
++$nknown;
} else {
- ++$nerrors;
- if ($nerrors == 1) {
- printf ("FAIL\n " . "-" x 72 . "\n");
- }
- printf (" Namespace violation: \"%s\"\n", $token);
+ $errors{$token} = 1;
+ }
+}
+
+
+sub removetoken {
+ my($token) = @_;
+ my($idx);
+
+ return if ($token =~ /^[0-9_]/ || $iskeyword{$token});
+
+ if (exists $errors{$token}) {
+ undef $errors{$token};
}
}
@@ -243,14 +251,15 @@ sub checknamespace {
print TESTFILE "#include <$h>\n";
close (TESTFILE);
- $nerrors = 0;
+ undef %errors;
$nknown = 0;
open (CONTENT, "$CC $CFLAGS{$dialect} -E $fnamebase.c -P -Wp,-dN | sed -e '/^# [1-9]/d' -e '/^[[:space:]]*\$/d' |");
loop: while (<CONTENT>) {
- next loop if (/^#undef /);
chop;
if (/^#define (.*)/) {
newtoken ($1, @allow);
+ } elsif (/^#undef (.*)/) {
+ removetoken ($1);
} else {
# We have to tokenize the line.
my($str) = $_;
@@ -266,14 +275,28 @@ sub checknamespace {
}
close (CONTENT);
unlink "$fnamebase.c";
- if ($nerrors != 0) {
- printf (" " . "-" x 72 . "\n");
- ++$errors;
- } elsif ($nknown > 0) {
- printf ("EXPECTED FAILURES\n");
- ++$known;
- } else {
- printf ("OK\n");
+ $realerror = 0;
+ if ($#errors != 0) {
+ foreach $f (%errors) {
+ if ($errors{$f} == 1) {
+ if ($realerror == 0) {
+ printf ("FAIL\n " . "-" x 72 . "\n");
+ $realerror = 1;
+ ++$errors;
+ }
+ printf (" Namespace violation: \"%s\"\n", $f);
+ }
+ }
+ printf (" " . "-" x 72 . "\n") if ($realerror != 0);
+ }
+
+ if ($realerror == 0) {
+ if ($nknown > 0) {
+ printf ("EXPECTED FAILURES\n");
+ ++$known;
+ } else {
+ printf ("OK\n");
+ }
}
}
diff --git a/conform/data/netinet/in.h-data b/conform/data/netinet/in.h-data
index 9b7d05e..1f1955d 100644
--- a/conform/data/netinet/in.h-data
+++ b/conform/data/netinet/in.h-data
@@ -58,7 +58,7 @@ function uint16_t htons (uint16_t)
function uint32_t ntohl (uint32_t)
function uint16_t ntohs (uint16_t)
-allow-header intttypes.h
+allow-header inttypes.h
allow-header arpa/inet.h
constant INET6_ADDRSTRLEN 46
diff --git a/conform/data/sys/socket.h-data b/conform/data/sys/socket.h-data
index 151ade5..61f30ab 100644
--- a/conform/data/sys/socket.h-data
+++ b/conform/data/sys/socket.h-data
@@ -103,6 +103,7 @@ function int setsockopt (int, int, int, const void*, socklen_t)
function int shutdown (int, int)
function int socket (int, int, int)
function int socketpair (int, int, int, int[2])
+function int sockatmark (int)
allow-header sys/uio.h