First steps to get conformtest fully working

This commit is contained in:
Ulrich Drepper 2012-02-25 23:18:39 -05:00
parent 7a270350a9
commit 3134156779
131 changed files with 898 additions and 359 deletions

131
ChangeLog
View File

@ -1,5 +1,136 @@
2012-02-25 Ulrich Drepper <drepper@gmail.com> 2012-02-25 Ulrich Drepper <drepper@gmail.com>
* conform/run-conformtest.sh: New file.
* conform/Makefile: Run run-conformtest for tests.
* conform/conformtest.pl: Many bug fixes. Add ISO C99, ISO C11
support.
* conform/data/uchar.h-data: New file.
* conform/data/aio.h-data: Fixes for ISO C and POSIX 1995 testing.
* conform/data/arpa/inet.h-data: Likewise.
* conform/data/assert.h-data: Likewise.
* conform/data/complex.h-data: Likewise.
* conform/data/cpio.h-data: Likewise.
* conform/data/ctype.h-data: Likewise.
* conform/data/dirent.h-data: Likewise.
* conform/data/dlfcn.h-data: Likewise.
* conform/data/errno.h-data: Likewise.
* conform/data/fcntl.h-data: Likewise.
* conform/data/float.h-data: Likewise.
* conform/data/fmtmsg.h-data: Likewise.
* conform/data/fnmatch.h-data: Likewise.
* conform/data/ftw.h-data: Likewise.
* conform/data/glob.h-data: Likewise.
* conform/data/grp.h-data: Likewise.
* conform/data/iconv.h-data: Likewise.
* conform/data/inttypes.h-data: Likewise.
* conform/data/langinfo.h-data: Likewise.
* conform/data/libgen.h-data: Likewise.
* conform/data/limits.h-data: Likewise.
* conform/data/locale.h-data: Likewise.
* conform/data/math.h-data: Likewise.
* conform/data/monetary.h-data: Likewise.
* conform/data/mqueue.h-data: Likewise.
* conform/data/ndbm.h-data: Likewise.
* conform/data/net/if.h-data: Likewise.
* conform/data/netdb.h-data: Likewise.
* conform/data/netinet/in.h-data: Likewise.
* conform/data/nl_types.h-data: Likewise.
* conform/data/poll.h-data: Likewise.
* conform/data/pthread.h-data: Likewise.
* conform/data/pwd.h-data: Likewise.
* conform/data/regex.h-data: Likewise.
* conform/data/sched.h-data: Likewise.
* conform/data/search.h-data: Likewise.
* conform/data/semaphore.h-data: Likewise.
* conform/data/setjmp.h-data: Likewise.
* conform/data/signal.h-data: Likewise.
* conform/data/spawn.h-data: Likewise.
* conform/data/stdarg.h-data: Likewise.
* conform/data/stdio.h-data: Likewise.
* conform/data/stdlib.h-data: Likewise.
* conform/data/string.h-data: Likewise.
* conform/data/strings.h-data: Likewise.
* conform/data/stropts.h-data: Likewise.
* conform/data/sys/ipc.h-data: Likewise.
* conform/data/sys/mman.h-data: Likewise.
* conform/data/sys/msg.h-data: Likewise.
* conform/data/sys/resource.h-data: Likewise.
* conform/data/sys/select.h-data: Likewise.
* conform/data/sys/sem.h-data: Likewise.
* conform/data/sys/shm.h-data: Likewise.
* conform/data/sys/socket.h-data: Likewise.
* conform/data/sys/stat.h-data: Likewise.
* conform/data/sys/statvfs.h-data: Likewise.
* conform/data/sys/time.h-data: Likewise.
* conform/data/sys/timeb.h-data: Likewise.
* conform/data/sys/times.h-data: Likewise.
* conform/data/sys/types.h-data: Likewise.
* conform/data/sys/uio.h-data: Likewise.
* conform/data/sys/un.h-data: Likewise.
* conform/data/sys/utsname.h-data: Likewise.
* conform/data/sys/wait.h-data: Likewise.
* conform/data/syslog.h-data: Likewise.
* conform/data/tar.h-data: Likewise.
* conform/data/termios.h-data: Likewise.
* conform/data/utime.h-data: Likewise.
* conform/data/utmpx.h-data: Likewise.
* conform/data/varargs.h-data: Likewise.
* conform/data/wchar.h-data: Likewise.
* conform/data/wctype.h-data: Likewise.
* conform/data/wordexp.h-data: Likewise.
* include/stropts.h: New file.
* include/uchar.h: New file.
* include/aio.h: Changes to allow conformtest.pl to use the headers.
* include/assert.h: Likewise.
* include/ctype.h: Likewise.
* include/dirent.h: Likewise.
* include/dlfcn.h: Likewise.
* include/fcntl.h: Likewise.
* include/fnmatch.h: Likewise.
* include/glob.h: Likewise.
* include/grp.h: Likewise.
* include/libio.h: Likewise.
* include/locale.h: Likewise.
* include/math.h: Likewise.
* include/net/if.h: Likewise.
* include/netdb.h: Likewise.
* include/netinet/in.h: Likewise.
* include/pthread.h: Likewise.
* include/pwd.h: Likewise.
* include/regex.h: Likewise.
* include/sched.h: Likewise.
* include/search.h: Likewise.
* include/setjmp.h: Likewise.
* include/signal.h: Likewise.
* include/stdio.h: Likewise.
* include/stdlib.h: Likewise.
* include/string.h: Likewise.
* include/sys/cdefs.h: Likewise.
* include/sys/mman.h: Likewise.
* include/sys/msg.h: Likewise.
* include/sys/resource.h: Likewise.
* include/sys/select.h: Likewise.
* include/sys/socket.h: Likewise.
* include/sys/stat.h: Likewise.
* include/sys/statvfs.h: Likewise.
* include/sys/time.h: Likewise.
* include/sys/times.h: Likewise.
* include/sys/uio.h: Likewise.
* include/sys/utsname.h: Likewise.
* include/sys/wait.h: Likewise.
* include/termios.h: Likewise.
* include/time.h: Likewise.
* include/ulimit.h: Likewise.
* include/unistd.h: Likewise.
* include/utime.h: Likewise.
* include/wchar.h: Likewise.
* include/wctype.h: Likewise.
* include/wordexp.h: Likewise.
* posix/tar.h (TSVTX): Should not be visible for POSIX before 2008.
* time/time.h: TIME_UTC must be a macro. * time/time.h: TIME_UTC must be a macro.
Make timespec_get available for ISO C11 only as well. Make timespec_get available for ISO C11 only as well.

View File

@ -1,4 +1,4 @@
# Copyright (C) 1999, 2000 Free Software Foundation, Inc. # Copyright (C) 1999, 2000, 2012 Free Software Foundation, Inc.
# This file is part of the GNU C Library. # This file is part of the GNU C Library.
# The GNU C Library is free software; you can redistribute it and/or # The GNU C Library is free software; you can redistribute it and/or
@ -24,3 +24,13 @@ distribute = conformtest.pl $(wildcard data/*.h-data) \
$(wildcard data/*/*.h-data) $(wildcard data/*/*.h-data)
include ../Rules include ../Rules
tests: $(objpfx)run-conformtest.out
$(objpfx)run-conformtest.out: run-conformtest.sh conformtest.pl \
$(wildcard data/*.h-data) \
$(wildcard data/*/*.h-data)
$(SHELL) -e $< $(objpfx) $(PERL) '$(CC)' \
'-I../include $(+sysdep-includes) $(sysincludes) -I..'
generated = $(wildcard $(objpfx)conform-*.out)

View File

@ -5,47 +5,40 @@ use POSIX;
$CC = "gcc"; $CC = "gcc";
$dialect="XOPEN2K"; $standard="XOPEN2K8";
GetOptions ('headers=s' => \@headers, 'dialect=s' => \$dialect); GetOptions ('headers=s' => \@headers, 'standard=s' => \$standard,
'flags=s' => \$flags, 'cc=s' => \$CC);
@headers = split(/,/,join(',',@headers)); @headers = split(/,/,join(',',@headers));
# List of the headers we are testing. # List of the headers we are testing.
if (@headers == ()) { if (@headers == ()) {
@headers = ("wordexp.h", "wctype.h", "wchar.h", "varargs.h", "utmpx.h", @headers = ("wordexp.h", "wctype.h", "wchar.h", "varargs.h", "utmpx.h",
"utime.h", "unistd.h", "ulimit.h", "ucontext.h", "time.h", "utime.h", "unistd.h", "ulimit.h", "ucontext.h", "uchar.h",
"tgmath.h", "termios.h", "tar.h", "sys/wait.h", "sys/utsname.h", "time.h", "tgmath.h", "termios.h", "tar.h", "sys/wait.h",
"sys/un.h", "sys/uio.h", "sys/types.h", "sys/times.h", "sys/utsname.h", "sys/un.h", "sys/uio.h", "sys/types.h",
"sys/timeb.h", "sys/time.h", "sys/statvfs.h", "sys/stat.h", "sys/times.h", "sys/timeb.h", "sys/time.h", "sys/statvfs.h",
"sys/socket.h", "sys/shm.h", "sys/sem.h", "sys/select.h", "sys/stat.h", "sys/socket.h", "sys/shm.h", "sys/sem.h",
"sys/resource.h", "sys/msg.h", "sys/mman.h", "sys/ipc.h", "sys/select.h", "sys/resource.h", "sys/msg.h", "sys/mman.h",
"syslog.h", "stropts.h", "strings.h", "string.h", "stdlib.h", "sys/ipc.h", "syslog.h", "stropts.h", "strings.h", "string.h",
"stdio.h", "stdint.h", "stddef.h", "stdarg.h", "spawn.h", "stdlib.h", "stdio.h", "stdint.h", "stddef.h", "stdarg.h",
"signal.h", "setjmp.h", "semaphore.h", "search.h", "sched.h", "spawn.h", "signal.h", "setjmp.h", "semaphore.h", "search.h",
"regex.h", "pwd.h", "pthread.h", "poll.h", "nl_types.h", "sched.h", "regex.h", "pwd.h", "pthread.h", "poll.h",
"netinet/tcp.h", "netinet/in.h", "net/if.h", "netdb.h", "ndbm.h", "nl_types.h", "netinet/tcp.h", "netinet/in.h", "net/if.h",
"mqueue.h", "monetary.h", "math.h", "locale.h", "libgen.h", "netdb.h", "ndbm.h", "mqueue.h", "monetary.h", "math.h",
"limits.h", "langinfo.h", "iso646.h", "inttypes.h", "iconv.h", "locale.h", "libgen.h", "limits.h", "langinfo.h", "iso646.h",
"grp.h", "glob.h", "ftw.h", "fnmatch.h", "fmtmsg.h", "float.h", "inttypes.h", "iconv.h", "grp.h", "glob.h", "ftw.h", "fnmatch.h",
"fcntl.h", "errno.h", "dlfcn.h", "dirent.h", "ctype.h", "cpio.h", "fmtmsg.h", "float.h", "fcntl.h", "errno.h", "dlfcn.h",
"complex.h", "assert.h", "arpa/inet.h", "aio.h"); "dirent.h", "ctype.h", "cpio.h", "complex.h", "assert.h",
"arpa/inet.h", "aio.h");
} }
if ($dialect ne "ISO" && $dialect ne "POSIX" && $dialect ne "XPG3" if ($standard ne "ISO" && $standard ne "ISO99" && $standard ne "ISO11"
&& $dialect ne "XPG4" && $dialect ne "UNIX98" && $dialect ne "XOPEN2K" && $standard ne "POSIX" && $standard ne "XPG3" && $standard ne "XPG4"
&& $dialect ne "XOPEN2K8" && $dialect ne "POSIX2008") { && $standard ne "UNIX98" && $standard ne "XOPEN2K" && $standard ne "XOPEN2K8"
die "unknown dialect \"$dialect\""; && $standard ne "POSIX2008") {
die "unknown standard \"$standard\"";
} }
$CFLAGS{"ISO"} = "-I. -fno-builtin '-D__attribute__(x)=' -ansi";
$CFLAGS{"POSIX"} = "-I. -fno-builtin '-D__attribute__(x)=' -D_POSIX_C_SOURCE=199912";
$CFLAGS{"XPG3"} = "-I. -fno-builtin '-D__attribute__(x)=' -D_XOPEN_SOURCE";
$CFLAGS{"XPG4"} = "-I. -fno-builtin '-D__attribute__(x)=' -D_XOPEN_SOURCE_EXTENDED";
$CFLAGS{"UNIX98"} = "-I. -fno-builtin '-D__attribute__(x)=' -D_XOPEN_SOURCE=500";
$CFLAGS{"XOPEN2K"} = "-I. -fno-builtin '-D__attribute__(x)=' -D_XOPEN_SOURCE=600";
$CFLAGS{"XOPEN2K8"} = "-I. -fno-builtin '-D__attribute__(x)=' -D_XOPEN_SOURCE=700";
$CFLAGS{"POSIX2008"} = "-I. -fno-builtin '-D__attribute__(x)=' -D_POSIX_C_SOURCE=200809L";
# These are the ISO C99 keywords. # These are the ISO C99 keywords.
@keywords = ('auto', 'break', 'case', 'char', 'const', 'continue', 'default', @keywords = ('auto', 'break', 'case', 'char', 'const', 'continue', 'default',
'do', 'double', 'else', 'enum', 'extern', 'float', 'for', 'goto', 'do', 'double', 'else', 'enum', 'extern', 'float', 'for', 'goto',
@ -56,14 +49,31 @@ $CFLAGS{"POSIX2008"} = "-I. -fno-builtin '-D__attribute__(x)=' -D_POSIX_C_SOURCE
# These are symbols which are known to pollute the namespace. # These are symbols which are known to pollute the namespace.
@knownproblems = ('unix', 'linux', 'i386'); @knownproblems = ('unix', 'linux', 'i386');
if ($dialect ne "XOPEN2K8" && $dialect ne "POSIX2008") { $CFLAGS{"ISO"} = "-ansi";
$CFLAGS{"ISO99"} = "-std=c99";
$CFLAGS{"ISO11"} = "-std=c1x -D_ISOC11_SOURCE";
$CFLAGS{"POSIX"} = "-D_POSIX_C_SOURCE=199912";
$CFLAGS{"XPG3"} = "-D_XOPEN_SOURCE";
$CFLAGS{"XPG4"} = "-D_XOPEN_SOURCE_EXTENDED";
$CFLAGS{"UNIX98"} = "-D_XOPEN_SOURCE=500";
$CFLAGS{"XOPEN2K"} = "-D_XOPEN_SOURCE=600";
$CFLAGS{"XOPEN2K8"} = "-D_XOPEN_SOURCE=700";
$CFLAGS{"POSIX2008"} = "-D_POSIX_C_SOURCE=200809L";
$CFLAGS = "$flags -fno-builtin '-D__attribute__(x)=' $CFLAGS{$standard} -D_ISOMAC";
if ($standard ne "XOPEN2K8" && $standard ne "POSIX2008") {
# Some headers need a bit more attention. At least with XPG7 # Some headers need a bit more attention. At least with XPG7
# all headers should be self-contained. # all headers should be self-contained.
$mustprepend{'inttypes.h'} = "#include <stddef.h>\n"; $mustprepend{'inttypes.h'} = "#include <stddef.h>\n";
$mustprepend{'glob.h'} = "#include <sys/types.h>\n";
$mustprepend{'grp.h'} = "#include <sys/types.h>\n";
$mustprepend{'regex.h'} = "#include <sys/types.h>\n"; $mustprepend{'regex.h'} = "#include <sys/types.h>\n";
$mustprepend{'pwd.h'} = "#include <sys/types.h>\n";
$mustprepend{'sched.h'} = "#include <sys/types.h>\n"; $mustprepend{'sched.h'} = "#include <sys/types.h>\n";
$mustprepend{'signal.h'} = "#include <pthread.h>\n"; $mustprepend{'signal.h'} = "#include <pthread.h>\n#include <sys/types.h>\n";
$mustprepend{'stdio.h'} = "#include <sys/types.h>\n"; $mustprepend{'stdio.h'} = "#include <sys/types.h>\n";
$mustprepend{'sys/stat.h'} = "#include <sys/types.h>\n";
$mustprepend{'wchar.h'} = "#include <stdarg.h>\n"; $mustprepend{'wchar.h'} = "#include <stdarg.h>\n";
$mustprepend{'wordexp.h'} = "#include <stddef.h>\n"; $mustprepend{'wordexp.h'} = "#include <stddef.h>\n";
} }
@ -100,9 +110,17 @@ sub poorfnmatch {
$res = ($strlen >= $patlen $res = ($strlen >= $patlen
&& substr ($pattern, -$patlen, $patlen) eq substr ($string, -$patlen, $patlen)); && substr ($pattern, -$patlen, $patlen) eq substr ($string, -$patlen, $patlen));
} elsif (substr ($pattern, -1, 1) eq '*') { } elsif (substr ($pattern, -1, 1) eq '*') {
my($patlen) = length ($pattern) - 1; if (substr ($pattern, -2, 1) eq ']') {
$res = ($strlen >= $patlen my($patlen) = index ($pattern, '[');
&& substr ($pattern, 0, $patlen) eq substr ($string, 0, $patlen)); my($range) = substr ($pattern, $patlen + 1, -2);
$res = ($strlen > $patlen
&& substr ($pattern, 0, $patlen) eq substr ($string, 0, $patlen)
&& index ($range, substr ($string, $patlen, 1)) != -1);
} else {
my($patlen) = length ($pattern) - 1;
$res = ($strlen >= $patlen
&& substr ($pattern, 0, $patlen) eq substr ($string, 0, $patlen));
}
} else { } else {
$res = $pattern eq $string; $res = $pattern eq $string;
} }
@ -123,7 +141,7 @@ sub compiletest
++$skipped; ++$skipped;
printf (" SKIP\n"); printf (" SKIP\n");
} else { } else {
$ret = system "$CC $CFLAGS{$dialect} -c $fnamebase.c -o $fnamebase.o > $fnamebase.out 2>&1"; $ret = system "$CC $CFLAGS -c $fnamebase.c -o $fnamebase.o > $fnamebase.out 2>&1";
if ($ret != 0) { if ($ret != 0) {
if ($optional != 0) { if ($optional != 0) {
printf (" $errmsg\n"); printf (" $errmsg\n");
@ -175,7 +193,7 @@ sub runtest
++$skipped; ++$skipped;
printf (" SKIP\n"); printf (" SKIP\n");
} else { } else {
$ret = system "$CC $CFLAGS{$dialect} -o $fnamebase $fnamebase.c > $fnamebase.out 2>&1"; $ret = system "$CC $CFLAGS -o $fnamebase $fnamebase.c > $fnamebase.out 2>&1";
if ($ret != 0) { if ($ret != 0) {
printf (" FAIL\n"); printf (" FAIL\n");
if ($verbose != 0) { if ($verbose != 0) {
@ -232,9 +250,7 @@ sub newtoken {
return if (poorfnmatch ($allow[$idx], $token)); return if (poorfnmatch ($allow[$idx], $token));
} }
if ($isknown{$token}) { unless ($isknown{$token}) {
++$nknown;
} else {
$errors{$token} = 1; $errors{$token} = 1;
} }
} }
@ -264,7 +280,7 @@ sub checknamespace {
undef %errors; undef %errors;
$nknown = 0; $nknown = 0;
open (CONTENT, "$CC $CFLAGS{$dialect} -E $fnamebase.c -P -Wp,-dN | sed -e '/^# [1-9]/d' -e '/^[[:space:]]*\$/d' |"); open (CONTENT, "$CC $CFLAGS -E $fnamebase.c -P -Wp,-dN | sed -e '/^# [1-9]/d' -e '/^[[:space:]]*\$/d' |");
loop: while (<CONTENT>) { loop: while (<CONTENT>) {
chop; chop;
if (/^#define (.*)/) { if (/^#define (.*)/) {
@ -303,12 +319,7 @@ sub checknamespace {
} }
if ($realerror == 0) { if ($realerror == 0) {
if ($nknown > 0) { printf ("OK\n");
printf ("EXPECTED FAILURES\n");
++$known;
} else {
printf ("OK\n");
}
} }
} }
@ -318,32 +329,36 @@ while ($#headers >= 0) {
my($hf) = $h; my($hf) = $h;
$hf =~ s|/|-|; $hf =~ s|/|-|;
my($fnamebase) = "$tmpdir/$hf-test"; my($fnamebase) = "$tmpdir/$hf-test";
my($missing); my($missing) = 1;
my(@allow) = (); my(@allow) = ();
my(@allowheader) = (); my(@allowheader) = ();
my(%seenheader) = (); my(%seenheader) = ();
my($prepend) = $mustprepend{$h}; my($prepend) = $mustprepend{$h};
my($test_exist) = 1;
printf ("Testing <$h>\n"); printf ("Testing <$h>\n");
printf ("----------" . "-" x length ($h) . "\n"); printf ("----------" . "-" x length ($h) . "\n");
# Generate a program to test for the availability of this header. open (CONTROL, "$CC -E -D$standard -x c data/$h-data |");
open (TESTFILE, ">$fnamebase.c");
print TESTFILE "$prepend";
print TESTFILE "#include <$h>\n";
close (TESTFILE);
$missing = compiletest ($fnamebase, "Checking whether <$h> is available",
"Header <$h> not available", 0, 0);
printf ("\n");
open (CONTROL, "$CC -E -D$dialect - < data/$h-data |");
control: while (<CONTROL>) { control: while (<CONTROL>) {
chop; chop;
next control if (/^#/); next control if (/^#/);
next control if (/^[ ]*$/); next control if (/^[ ]*$/);
if ($test_exist) {
$test_exist = 0;
# Generate a program to test for the availability of this header.
open (TESTFILE, ">$fnamebase.c");
print TESTFILE "$prepend";
print TESTFILE "#include <$h>\n";
close (TESTFILE);
$missing = compiletest ($fnamebase, "Checking whether <$h> is available",
"Header <$h> not available", 0, 0);
printf ("\n");
last control if ($missing);
}
if (/^element *({([^}]*)}|([^{ ]*)) *({([^}]*)}|([^{ ]*)) *([A-Za-z0-9_]*) *(.*)/) { if (/^element *({([^}]*)}|([^{ ]*)) *({([^}]*)}|([^{ ]*)) *([A-Za-z0-9_]*) *(.*)/) {
my($struct) = "$2$3"; my($struct) = "$2$3";
my($type) = "$5$6"; my($type) = "$5$6";
@ -421,7 +436,7 @@ while ($#headers >= 0) {
"Member \"$member\" does not have the correct type.", "Member \"$member\" does not have the correct type.",
$res, 0); $res, 0);
} }
} elsif (/^optional-constant *([a-zA-Z0-9_]*) ([>=<]+) ([A-Za-z0-9_]*)/) { } elsif (/^optional-constant *([a-zA-Z0-9_]*) ([>=<]+) ([A-Za-z0-9_-]*)/) {
my($const) = $1; my($const) = $1;
my($op) = $2; my($op) = $2;
my($value) = $3; my($value) = $3;
@ -452,7 +467,7 @@ while ($#headers >= 0) {
$res = runtest ($fnamebase, "Testing for value of constant $const", $res = runtest ($fnamebase, "Testing for value of constant $const",
"Constant \"$const\" has not the right value.", $res); "Constant \"$const\" has not the right value.", $res);
} }
} elsif (/^constant *([a-zA-Z0-9_]*) *([>=<]+) ([A-Za-z0-9_]*)/) { } elsif (/^constant *([a-zA-Z0-9_]*) *([>=<]+) ([A-Za-z0-9_-]*)/) {
my($const) = $1; my($const) = $1;
my($op) = $2; my($op) = $2;
my($value) = $3; my($value) = $3;
@ -483,7 +498,7 @@ while ($#headers >= 0) {
$res = runtest ($fnamebase, "Testing for value of constant $const", $res = runtest ($fnamebase, "Testing for value of constant $const",
"Constant \"$const\" has not the right value.", $res); "Constant \"$const\" has not the right value.", $res);
} }
} elsif (/^typed-constant *([a-zA-Z0-9_]*) *({([^}]*)}|([^ ]*)) *([A-Za-z0-9_]*)?/) { } elsif (/^typed-constant *([a-zA-Z0-9_]*) *({([^}]*)}|([^ ]*)) *([A-Za-z0-9_-]*)?/) {
my($const) = $1; my($const) = $1;
my($type) = "$3$4"; my($type) = "$3$4";
my($value) = $5; my($value) = $5;
@ -525,7 +540,7 @@ while ($#headers >= 0) {
$res = runtest ($fnamebase, "Testing for value of constant $const", $res = runtest ($fnamebase, "Testing for value of constant $const",
"Constant \"$const\" has not the right value.", $res); "Constant \"$const\" has not the right value.", $res);
} }
} elsif (/^optional-constant *([a-zA-Z0-9_]*) *([A-Za-z0-9_]*)?/) { } elsif (/^optional-constant *([a-zA-Z0-9_]*) *([A-Za-z0-9_-]*)?/) {
my($const) = $1; my($const) = $1;
my($value) = $2; my($value) = $2;
my($res) = $missing; my($res) = $missing;
@ -554,7 +569,7 @@ while ($#headers >= 0) {
$res = runtest ($fnamebase, "Testing for value of constant $const", $res = runtest ($fnamebase, "Testing for value of constant $const",
"Constant \"$const\" has not the right value.", $res); "Constant \"$const\" has not the right value.", $res);
} }
} elsif (/^constant *([a-zA-Z0-9_]*) *([A-Za-z0-9_]*)?/) { } elsif (/^constant *([a-zA-Z0-9_]*) *([A-Za-z0-9_-]*)?/) {
my($const) = $1; my($const) = $1;
my($value) = $2; my($value) = $2;
my($res) = $missing; my($res) = $missing;
@ -583,7 +598,7 @@ while ($#headers >= 0) {
$res = runtest ($fnamebase, "Testing for value of constant $const", $res = runtest ($fnamebase, "Testing for value of constant $const",
"Constant \"$const\" has not the right value.", $res); "Constant \"$const\" has not the right value.", $res);
} }
} elsif (/^symbol *([a-zA-Z0-9_]*) *([A-Za-z0-9_]*)?/) { } elsif (/^symbol *([a-zA-Z0-9_]*) *([A-Za-z0-9_-]*)?/) {
my($symbol) = $1; my($symbol) = $1;
my($value) = $2; my($value) = $2;
my($res) = $missing; my($res) = $missing;
@ -614,7 +629,7 @@ while ($#headers >= 0) {
$res = runtest ($fnamebase, "Testing for value of symbol $symbol", $res = runtest ($fnamebase, "Testing for value of symbol $symbol",
"Symbol \"$symbol\" has not the right value.", $res); "Symbol \"$symbol\" has not the right value.", $res);
} }
} elsif (/^typed-constant *([a-zA-Z0-9_]*) *({([^}]*)}|([^ ]*)) *([A-Za-z0-9_]*)?/) { } elsif (/^typed-constant *([a-zA-Z0-9_]*) *({([^}]*)}|([^ ]*)) *([A-Za-z0-9_-]*)?/) {
my($const) = $1; my($const) = $1;
my($type) = "$3$4"; my($type) = "$3$4";
my($value) = $5; my($value) = $5;
@ -908,7 +923,7 @@ while ($#headers >= 0) {
print TESTFILE "#endif\n"; print TESTFILE "#endif\n";
close (TESTFILE); close (TESTFILE);
$res = compiletest ($fnamebase, "Test availability of function $fname", $res = compiletest ($fnamebase, "Test availability of macro $fname",
"Function \"$fname\" is not available.", $res, 0); "Function \"$fname\" is not available.", $res, 0);
# Generate a program to test for the type of this function. # Generate a program to test for the type of this function.
@ -921,7 +936,7 @@ while ($#headers >= 0) {
print TESTFILE "#endif\n"; print TESTFILE "#endif\n";
close (TESTFILE); close (TESTFILE);
compiletest ($fnamebase, "Test for type of function $fname", compiletest ($fnamebase, "Test for type of macro $fname",
"Function \"$fname\" has incorrect type.", $res, 0); "Function \"$fname\" has incorrect type.", $res, 0);
} elsif (/^macro-str *([^ ]*) *(\".*\")/) { } elsif (/^macro-str *([^ ]*) *(\".*\")/) {
# The above regex doesn't handle a \" in a string. # The above regex doesn't handle a \" in a string.
@ -1002,7 +1017,39 @@ while ($#headers >= 0) {
print TESTFILE "int main (void) { return !($macro $op $value); }\n"; print TESTFILE "int main (void) { return !($macro $op $value); }\n";
close (TESTFILE); close (TESTFILE);
$res = runtest ($fnamebase, "Testing for value of constant $macro", $res = runtest ($fnamebase, "Testing for value of macro $macro",
"Macro \"$macro\" has not the right value.", $res);
}
} elsif (/^macro *([a-zA-Z0-9_]*) *([A-Za-z0-9_]*)/) {
my($macro) = "$1";
my($value) = $2;
my($res) = $missing;
# Remember that this name is allowed.
push @allow, $macro;
# Generate a program to test for availability of this macro.
open (TESTFILE, ">$fnamebase.c");
print TESTFILE "$prepend";
print TESTFILE "#include <$h>\n";
print TESTFILE "#ifndef $macro\n";
print TESTFILE "# error \"Macro $macro not defined\"\n";
print TESTFILE "#endif\n";
close (TESTFILE);
$res = compiletest ($fnamebase, "Test availability of macro $macro",
"Macro \"$macro\" is not available.", $res, 0);
if ($value ne "") {
# Generate a program to test for the value of this constant.
open (TESTFILE, ">$fnamebase.c");
print TESTFILE "$prepend";
print TESTFILE "#include <$h>\n";
# Negate the value since 0 means ok
print TESTFILE "int main (void) { return !($macro == $value); }\n";
close (TESTFILE);
$res = runtest ($fnamebase, "Testing for value of macro $macro",
"Macro \"$macro\" has not the right value.", $res); "Macro \"$macro\" has not the right value.", $res);
} }
} elsif (/^macro *([^ ]*)/) { } elsif (/^macro *([^ ]*)/) {
@ -1046,7 +1093,7 @@ while ($#headers >= 0) {
while ($#allowheader >= 0) { while ($#allowheader >= 0) {
my($ah) = pop @allowheader; my($ah) = pop @allowheader;
open (ALLOW, "$CC -E -D$dialect - < data/$ah-data |"); open (ALLOW, "$CC -E -D$standard - < data/$ah-data |");
acontrol: while (<ALLOW>) { acontrol: while (<ALLOW>) {
chop; chop;
next acontrol if (/^#/); next acontrol if (/^#/);
@ -1091,13 +1138,17 @@ while ($#headers >= 0) {
close (ALLOW); close (ALLOW);
} }
# Now check the namespace. if ($test_exist) {
printf (" Checking the namespace of \"%s\"... ", $h); printf (" Not defined\n");
if ($missing) {
++$skipped;
printf ("SKIP\n");
} else { } else {
checknamespace ($h, $fnamebase, @allow); # Now check the namespace.
printf (" Checking the namespace of \"%s\"... ", $h);
if ($missing) {
++$skipped;
printf ("SKIP\n");
} else {
checknamespace ($h, $fnamebase, @allow);
}
} }
printf ("\n\n"); printf ("\n\n");
@ -1106,14 +1157,6 @@ while ($#headers >= 0) {
printf "-" x 76 . "\n"; printf "-" x 76 . "\n";
printf (" Total number of tests : %4d\n", $total); printf (" Total number of tests : %4d\n", $total);
printf (" Number of known failures: %4d (", $known);
$percent = ($known * 100) / $total;
if ($known > 0 && $percent < 1.0) {
printf (" <1%%)\n");
} else {
printf ("%3d%%)\n", $percent);
}
printf (" Number of failed tests : %4d (", $errors); printf (" Number of failed tests : %4d (", $errors);
$percent = ($errors * 100) / $total; $percent = ($errors * 100) / $total;
if ($errors > 0 && $percent < 1.0) { if ($errors > 0 && $percent < 1.0) {
@ -1131,3 +1174,6 @@ if ($skipped > 0 && $percent < 1.0) {
} }
exit $errors != 0; exit $errors != 0;
# Local Variables:
# perl-indent-level: 2
# End:

View File

@ -1,4 +1,4 @@
#ifndef ISO #if !defined ISO && !defined ISO99 && !defined ISO11
type {struct aiocb} type {struct aiocb}
// Test elements of the AIO control struct. // Test elements of the AIO control struct.

View File

@ -1,4 +1,4 @@
#if !defined ISO && !defined POSIX #if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX
// in_port_t should have exactly 16 bits // in_port_t should have exactly 16 bits
type in_port_t type in_port_t
// in_addr_t should have exactly 32 bits // in_addr_t should have exactly 32 bits

View File

@ -1,3 +1,7 @@
macro assert macro assert
#ifdef ISO11
macro static_assert
#endif
allow *_t allow *_t

View File

@ -1,4 +1,4 @@
#if defined XOPEN2K || defined POSIX2008 #if defined ISO99 || defined ISO11 || defined XOPEN2K || defined POSIX2008
macro complex macro complex
macro _Complex_I macro _Complex_I
optional-macro imaginary optional-macro imaginary
@ -73,4 +73,10 @@ function {long double complex} csinl (long double complex)
function {long double complex} csqrtl (long double complex) function {long double complex} csqrtl (long double complex)
function {long double complex} ctanhl (long double complex) function {long double complex} ctanhl (long double complex)
function {long double complex} ctanl (long double complex) function {long double complex} ctanl (long double complex)
# if defined ISO11
macro-function {double complex} CMPLX (double, double)
macro-function {float complex} CMPLXF (float, float)
macro-function {long double complex} CMPLXL (long double, long double)
# endif
#endif #endif

View File

@ -1,4 +1,4 @@
#ifndef ISO #if !defined ISO && !defined ISO99 && !defined ISO11
constant C_IRUSR 0000400 constant C_IRUSR 0000400
constant C_IWUSR 0000200 constant C_IWUSR 0000200
constant C_IXUSR 0000100 constant C_IXUSR 0000100

View File

@ -12,7 +12,7 @@ function int isxdigit (int)
function int tolower (int) function int tolower (int)
function int toupper (int) function int toupper (int)
#if !defined ISO && !defined POSIX && !defined POSIX2008 #if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
function int isascii (int) function int isascii (int)
function int toascii (int) function int toascii (int)

View File

@ -1,4 +1,4 @@
#ifndef ISO #if !defined ISO && !defined ISO99 && !defined ISO11
type DIR type DIR
type {struct dirent} type {struct dirent}

View File

@ -1,4 +1,4 @@
#if !defined ISO && !defined POSIX #if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX
macro RTLD_LAZY macro RTLD_LAZY
macro RTLD_NOW macro RTLD_NOW
macro RTLD_GLOBAL macro RTLD_GLOBAL

View File

@ -2,7 +2,10 @@ constant EDOM
constant EILSEQ constant EILSEQ
constant ERANGE constant ERANGE
#ifndef ISO // variable int errno
allow errno
#if !defined ISO && !defined ISO99 && !defined ISO11
constant E2BIG constant E2BIG
constant EACCES constant EACCES
constant EADDRINUSE constant EADDRINUSE
@ -84,9 +87,9 @@ constant ENOTRECOVERABLE
constant EOWNERDEAD constant EOWNERDEAD
# endif # endif
// variable int errno
allow errno
allow E* allow E*
allow *_t allow *_t
#endif #endif
allow E[0123456789]*
allow E[ABCDEFGHIJKLMNOPQRSTUVWXYZ]*

View File

@ -1,4 +1,4 @@
#if !defined ISO && !defined POSIX #if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX
constant F_DUPFD constant F_DUPFD
constant F_GETFD constant F_GETFD
constant F_SETFD constant F_SETFD

View File

@ -38,4 +38,23 @@ macro FLT_MIN
macro DBL_MIN macro DBL_MIN
macro LDBL_MIN macro LDBL_MIN
#if !defined ISO && !defined XPG3 && !defined XPG4 && !defined POSIX && !defined UNIX98
constant DECIMAL_DIG >= 10
constant FLT_EVAL_METHOD
#endif
#if defined ISO11
constant DBL_HAS_SUBNORM
constant FLT_HAS_SUBNORM
constant LDBL_HAS_SUBNORM
constant DBL_DECIMAL_DIG >= 10
constant FLT_DECIMAL_DIG >= 6
constant LDBL_DECIMAL_DIG >= 10
constant DBL_TRUE_MIN <= 1E-37
constant FLT_TRUE_MIN <= 1E-37
constant LDBL_TRUE_MIN <= 1E-37
#endif
allow *_t allow *_t

View File

@ -1,4 +1,4 @@
#if !defined ISO && !defined POSIX && !defined POSIX2008 #if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
macro MM_HARD macro MM_HARD
constant MM_HARD constant MM_HARD

View File

@ -1,9 +1,9 @@
#ifndef ISO #if !defined ISO && !defined ISO99 && !defined ISO11
constant FNM_NOMATCH constant FNM_NOMATCH
constant FNM_PATHNAME constant FNM_PATHNAME
constant FNM_PERIOD constant FNM_PERIOD
constant FNM_NOESCAPE constant FNM_NOESCAPE
#if !defined XOPEN2K8 && !defined POSIX2008 #if !defined POSIX && !defined XOPEN2K8 && !defined POSIX2008
constant FNM_NOSYS constant FNM_NOSYS
#endif #endif

View File

@ -1,4 +1,4 @@
#if !defined ISO && !defined POSIX && !defined POSIX2008 #if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
type {struct FTW} type {struct FTW}
element {struct FTW} int base element {struct FTW} int base
element {struct FTW} int level element {struct FTW} int level

View File

@ -1,4 +1,4 @@
#ifndef ISO #if !defined ISO && !defined ISO99 && !defined ISO11
type glob_t type glob_t
element glob_t size_t gl_pathc element glob_t size_t gl_pathc
element glob_t {char**} gl_pathv element glob_t {char**} gl_pathv

View File

@ -1,4 +1,4 @@
#ifndef ISO #if !defined ISO && !defined ISO99 && !defined ISO11
type {struct group} type {struct group}
element {struct group} {char*} gr_name element {struct group} {char*} gr_name
element {struct group} gid_t gr_gid element {struct group} gid_t gr_gid
@ -13,9 +13,9 @@ type size_t
function {struct group*} getgrgid (gid_t) function {struct group*} getgrgid (gid_t)
function {struct group*} getgrnam (const char*) function {struct group*} getgrnam (const char*)
# ifndef POSIX
function int getgrgid_r (gid_t, struct group*, char *, size_t, struct group**) function int getgrgid_r (gid_t, struct group*, char *, size_t, struct group**)
function int getgrnam_r (const char *, struct group *, char *, size_t, struct group**) function int getgrnam_r (const char *, struct group *, char *, size_t, struct group**)
# ifndef POSIX
function {struct group*} getgrent (void) function {struct group*} getgrent (void)
function void endgrent (void) function void endgrent (void)
# ifndef POSIX2008 # ifndef POSIX2008

View File

@ -1,4 +1,4 @@
#if !defined ISO && !defined POSIX #if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX
type iconv_t type iconv_t
# if defined XOPEN2K8 || defined POSIX2008 # if defined XOPEN2K8 || defined POSIX2008
type size_t type size_t

View File

@ -1,3 +1,4 @@
#if defined ISO99 || defined ISO11 || defined XOPEN2K || defined POSIX2008
type int8_t type int8_t
type int16_t type int16_t
type int32_t type int32_t
@ -141,3 +142,4 @@ allow INT*
allow UINT* allow UINT*
allow PRI[Xa-z]* allow PRI[Xa-z]*
allow SCN[Xa-z]* allow SCN[Xa-z]*
#endif

View File

@ -1,4 +1,4 @@
#if !defined ISO && !defined POSIX #if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX
constant CODESET constant CODESET
constant D_T_FMT constant D_T_FMT
constant D_FMT constant D_FMT

View File

@ -1,4 +1,4 @@
#if !defined ISO && !defined POSIX && !defined POSIX2008 #if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
function {char*} basename (char*) function {char*} basename (char*)
function {char*} dirname (char*) function {char*} dirname (char*)

View File

@ -1,3 +1,31 @@
constant CHAR_BIT >= 8
constant SCHAR_MIN <= -127
constant SCHAR_MAX >= 127
constant UCHAR_MAX >= 255
#ifdef __CHAR_UNSIGNED__
constant CHAR_MIN 0
constant CHAR_MAX UCHAR_MAX
#else
constant CHAR_MIN SCHAR_MIN
constant CHAR_MAX SCHAR_MAX
#endif
constant MB_LEN_MAX >= 1
constant SHRT_MIN <= -32767
constant SHRT_MAX >= 32767
constant USHRT_MAX >= 65535
constant INT_MAX >= 2147483647
constant INT_MIN <= 2147483647
constant UINT_MAX >= 4294967295
constant LONG_MAX >= 2147483647
constant LONG_MIN <= 2147483647
constant ULONG_MAX >= 4294967295
#if defined ISO99 || defined ISO11 || defined XOPEN2K8 || defined POSIX2008
constant LLONG_MIN <= -9223372036854775807ll
constant LLONG_MAX >= 9223372036854775807ll
constant ULLONG_MAX >= 18446744073709551615ull
#endif
#if !defined ISO && !defined ISO99 && !defined ISO11
// if these values exist, we should check the minimal value // if these values exist, we should check the minimal value
allow AIO_LIST_MAX allow AIO_LIST_MAX
allow AIO_MAX allow AIO_MAX
@ -111,25 +139,11 @@ optional-constant _POSIX2_LINE_MAX 2048
optional-constant _POSIX2_RE_DUP_MAX 255 optional-constant _POSIX2_RE_DUP_MAX 255
optional-constant _XOPEN_IOV_MAX 16 optional-constant _XOPEN_IOV_MAX 16
constant CHAR_BIT >= 8 #if !defined POSIX && !defined POSIX2008
constant CHAR_MAX
constant INT_MAX >= 2147483647
constant LONG_BIT >= 32
constant MB_LEN_MAX >= 1
constant LONG_MAX >= 2147483647
constant SCHAR_MAX >= 127
constant SHRT_MAX >= 32767
constant SSIZE_MAX
constant UCHAR_MAX >= 255
constant UINT_MAX >= 4294967295
constant ULONG_MAX >= 4294967295
constant USHRT_MAX >= 65535
constant WORD_BIT >= 16 constant WORD_BIT >= 16
constant CHAR_MIN constant LONG_BIT >= 32
constant INT_MIN <= 2147483647 #endif
constant LONG_MIN <= 2147483647 constant SSIZE_MAX
constant SCHAR_MIN <= -127
constant SHRT_MIN <= -32767
optional-constant CHARCLASS_NAME_MAX >= 14 optional-constant CHARCLASS_NAME_MAX >= 14
optional-constant NL_ARGMAX >= 9 optional-constant NL_ARGMAX >= 9
@ -149,3 +163,4 @@ optional-constant TMP_MAX >= 10000
allow *_MAX allow *_MAX
allow *_MIN allow *_MIN
#endif

View File

@ -17,7 +17,7 @@ element {struct lconv} char p_cs_precedes
element {struct lconv} char p_sep_by_space element {struct lconv} char p_sep_by_space
element {struct lconv} char p_sign_posn element {struct lconv} char p_sign_posn
element {struct lconv} {char*} thousands_sep element {struct lconv} {char*} thousands_sep
#if defined XOPEN2K || defined XOPEN2K8 || defined POSIX2008 #if !defined ISO && !defined POSIX && !defined XPG3 && !defined XPG4 && !defined UNIX98
element {struct lconv} char int_n_cs_precedes element {struct lconv} char int_n_cs_precedes
element {struct lconv} char int_n_sep_by_space element {struct lconv} char int_n_sep_by_space
element {struct lconv} char int_n_sign_posn element {struct lconv} char int_n_sign_posn

View File

@ -1,3 +1,5 @@
constant HUGE_VAL
#if !defined ISO && !defined POSIX #if !defined ISO && !defined POSIX
macro fpclassify macro fpclassify
macro isfinite macro isfinite
@ -12,7 +14,7 @@ macro islessequal
macro islessgreater macro islessgreater
macro isunordered macro isunordered
# ifndef POSIX2008 # if !defined ISO99 && !defined ISO11 && !defined POSIX2008
constant M_E constant M_E
constant M_LOG2E constant M_LOG2E
constant M_LOG10E constant M_LOG10E
@ -29,7 +31,6 @@ constant M_SQRT1_2
constant MAXFLOAT constant MAXFLOAT
# endif # endif
constant HUGE_VAL
constant HUGE_VALF constant HUGE_VALF
constant HUGE_VALL constant HUGE_VALL
constant INFINITY constant INFINITY
@ -48,22 +49,28 @@ optional-macro FP_FAST_FMAL
constant FP_ILOGB0 constant FP_ILOGB0
constant FP_ILOGBNAN constant FP_ILOGBNAN
# if !defined XPG3 && !defined XPG4 && !defined UNIX98
macro MATH_ERRNO == 1 macro MATH_ERRNO == 1
macro MATH_ERREXCEPT == 2 macro MATH_ERREXCEPT == 2
#endif
macro math_errhandling macro math_errhandling
# endif
#endif
function double acos (double) function double acos (double)
function double asin (double) function double asin (double)
function double atan (double) function double atan (double)
function double atan2 (double, double) function double atan2 (double, double)
function double ceil (double) function double ceil (double)
#if !defined ISO && !defined POSIX
function double copysign (double, double) function double copysign (double, double)
#endif
function double cos (double) function double cos (double)
function double cosh (double) function double cosh (double)
function double exp (double) function double exp (double)
#if !defined ISO && !defined POSIX
function double exp2 (double) function double exp2 (double)
#endif
function double fabs (double) function double fabs (double)
function double floor (double) function double floor (double)
function double fmod (double, double) function double fmod (double, double)
@ -71,7 +78,9 @@ function double frexp (double, int*)
function double ldexp (double, int) function double ldexp (double, int)
function double log (double) function double log (double)
function double log10 (double) function double log10 (double)
#if !defined ISO && !defined POSIX
function double log2 (double) function double log2 (double)
#endif
function double modf (double, double*) function double modf (double, double*)
function double pow (double, double) function double pow (double, double)
function double sin (double) function double sin (double)
@ -79,24 +88,27 @@ function double sinh (double)
function double sqrt (double) function double sqrt (double)
function double tan (double) function double tan (double)
function double tanh (double) function double tanh (double)
#if !defined ISO && !defined POSIX
function double erf (double) function double erf (double)
function double erfc (double) function double erfc (double)
#endif
#if defined XPG3 || defined XPG4 || defined UNIX98 #if defined XPG3 || defined XPG4 || defined UNIX98
function double gamma (double) function double gamma (double)
#endif #endif
#if !defined ISO && !defined POSIX
function double hypot (double, double) function double hypot (double, double)
#if !defined POSIX && !defined POSIX2008 # if !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
function double j0 (double) function double j0 (double)
function double j1 (double) function double j1 (double)
function double jn (int, double) function double jn (int, double)
#endif # endif
function double lgamma (double) function double lgamma (double)
function double tgamma (double) function double tgamma (double)
#if !defined POSIX && !defined POSIX2008 # if !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
function double y0 (double) function double y0 (double)
function double y1 (double) function double y1 (double)
function double yn (int, double) function double yn (int, double)
#endif # endif
function double acosh (double) function double acosh (double)
function double asinh (double) function double asinh (double)
function double atanh (double) function double atanh (double)
@ -117,9 +129,9 @@ function {long long} llrint (double)
function long lround (double) function long lround (double)
function {long long} llround (double) function {long long} llround (double)
function double remquo (double, double, int*) function double remquo (double, double, int*)
#if defined XPG3 && defined XPG4 && defined UNIX98 && defined XOPEN2K # if defined XPG3 && defined XPG4 && defined UNIX98 && defined XOPEN2K
function double scalb (double, double) function double scalb (double, double)
#endif # endif
function double scalbn (double, int) function double scalbn (double, int)
function double scalbln (double, long) function double scalbln (double, long)
function double fdim (double, double) function double fdim (double, double)
@ -128,9 +140,10 @@ function double fmin (double, double)
function double fma (double, double, double) function double fma (double, double, double)
function double nan (const char*) function double nan (const char*)
#if !defined POSIX && !defined POSIX2008 # if !defined POSIX && !defined POSIX2008
// variable signgam // variable signgam
allow signgam allow signgam
# endif
#endif #endif
#if !defined ISO && !defined POSIX #if !defined ISO && !defined POSIX
@ -165,14 +178,14 @@ function float erfcf (float)
function float gammaf (float) function float gammaf (float)
#endif #endif
function float hypotf (float, float) function float hypotf (float, float)
#if !defined POSIX && !defined POSIX2008 #if !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
function float j0f (float) function float j0f (float)
function float j1f (float) function float j1f (float)
function float jnf (int, float) function float jnf (int, float)
#endif #endif
function float lgammaf (float) function float lgammaf (float)
function float tgammaf (float) function float tgammaf (float)
#if !defined POSIX && !defined POSIX2008 #if !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
function float y0f (float) function float y0f (float)
function float y1f (float) function float y1f (float)
function float ynf (int, float) function float ynf (int, float)
@ -239,14 +252,14 @@ function {long double} erfcl (long double)
function {long double} gammal (long double) function {long double} gammal (long double)
#endif #endif
function {long double} hypotl (long double, long double) function {long double} hypotl (long double, long double)
#if !defined POSIX && !defined POSIX2008 #if !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
function {long double} j0l (long double) function {long double} j0l (long double)
function {long double} j1l (long double) function {long double} j1l (long double)
function {long double} jnl (int, long double) function {long double} jnl (int, long double)
#endif #endif
function {long double} lgammal (long double) function {long double} lgammal (long double)
function {long double} tgammal (long double) function {long double} tgammal (long double)
#if !defined POSIX && !defined POSIX2008 #if !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
function {long double} y0l (long double) function {long double} y0l (long double)
function {long double} y1l (long double) function {long double} y1l (long double)
function {long double} ynl (int, long double) function {long double} ynl (int, long double)

View File

@ -1,4 +1,4 @@
#if !defined ISO && !defined POSIX #if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX
type size_t type size_t
type ssize_t type ssize_t
# if defined XOPEN2K8 || defined POSIX2008 # if defined XOPEN2K8 || defined POSIX2008

View File

@ -1,4 +1,4 @@
#ifndef ISO #if !defined ISO && !defined ISO99 && !defined ISO11
// should test for not an array type. // should test for not an array type.
type mqd_t type mqd_t

View File

@ -1,4 +1,4 @@
#if !defined ISO && !defined POSIX && !defined POSIX2008 #if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
type datum type datum
element datum {void*} dptr element datum {void*} dptr
element datum size_t dsize element datum size_t dsize

View File

@ -1,4 +1,4 @@
#ifndef ISO #if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX
type {struct if_nameindex} type {struct if_nameindex}
element {struct if_nameindex} {unsigned int} if_index element {struct if_nameindex} {unsigned int} if_index

View File

@ -1,4 +1,4 @@
#ifndef ISO #if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX
optional-type in_port_t optional-type in_port_t
optional-type in_addr_t optional-type in_addr_t

View File

@ -1,4 +1,4 @@
#ifndef ISO #if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX
type in_port_t type in_port_t
type in_addr_t type in_addr_t

View File

@ -1,4 +1,4 @@
#if !defined ISO && !defined POSIX #if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX
type nl_catd type nl_catd
type nl_item type nl_item

View File

@ -1,4 +1,4 @@
#if !defined ISO && !defined POSIX #if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX
type {struct pollfd} type {struct pollfd}
element {struct pollfd} int fd element {struct pollfd} int fd
element {struct pollfd} {short int} events element {struct pollfd} {short int} events

View File

@ -1,4 +1,4 @@
#ifndef ISO #if !defined ISO && !defined ISO99 && !defined ISO11
constant PTHREAD_CANCEL_ASYNCHRONOUS constant PTHREAD_CANCEL_ASYNCHRONOUS
constant PTHREAD_CANCEL_ENABLE constant PTHREAD_CANCEL_ENABLE
constant PTHREAD_CANCEL_DEFERRED constant PTHREAD_CANCEL_DEFERRED
@ -31,19 +31,27 @@ constant PTHREAD_MUTEX_STALLED
# endif # endif
type pthread_attr_t type pthread_attr_t
# if !defined POSIX
type pthread_barrier_t type pthread_barrier_t
type pthread_barrierattr_t type pthread_barrierattr_t
# endif
type pthread_cond_t type pthread_cond_t
type pthread_condattr_t type pthread_condattr_t
type pthread_key_t type pthread_key_t
type pthread_mutex_t type pthread_mutex_t
type pthread_mutexattr_t type pthread_mutexattr_t
type pthread_once_t type pthread_once_t
# if !defined POSIX
type pthread_rwlock_t type pthread_rwlock_t
type pthread_rwlockattr_t type pthread_rwlockattr_t
type pthread_spinlock_t type pthread_spinlock_t
# endif
type pthread_t type pthread_t
#ifdef POSIX
# define sigset_t __sigset_t
#endif
function int pthread_attr_destroy (pthread_attr_t*) function int pthread_attr_destroy (pthread_attr_t*)
function int pthread_attr_getdetachstate (const pthread_attr_t*, int*) function int pthread_attr_getdetachstate (const pthread_attr_t*, int*)
# ifndef POSIX # ifndef POSIX
@ -66,6 +74,7 @@ function int pthread_attr_setschedpolicy (pthread_attr_t*, int)
function int pthread_attr_setscope (pthread_attr_t*, int) function int pthread_attr_setscope (pthread_attr_t*, int)
function int pthread_attr_setstackaddr (pthread_attr_t*, void*) function int pthread_attr_setstackaddr (pthread_attr_t*, void*)
function int pthread_attr_setstacksize (pthread_attr_t*, size_t) function int pthread_attr_setstacksize (pthread_attr_t*, size_t)
# if !defined POSIX
function int pthread_barrier_destroy (pthread_barrier_t*) function int pthread_barrier_destroy (pthread_barrier_t*)
function int pthread_barrier_init (pthread_barrier_t*, const pthread_barrierattr_t*, unsigned int) function int pthread_barrier_init (pthread_barrier_t*, const pthread_barrierattr_t*, unsigned int)
function int pthread_barrier_wait (pthread_barrier_t*) function int pthread_barrier_wait (pthread_barrier_t*)
@ -73,6 +82,7 @@ function int pthread_barrierattr_destroy (pthread_barrierattr_t*)
function int pthread_barrierattr_getpshared (const pthread_barrierattr_t*, int*) function int pthread_barrierattr_getpshared (const pthread_barrierattr_t*, int*)
function int pthread_barrierattr_init (pthread_barrierattr_t*) function int pthread_barrierattr_init (pthread_barrierattr_t*)
function int pthread_barrierattr_setpshared (pthread_barrierattr_t*, int) function int pthread_barrierattr_setpshared (pthread_barrierattr_t*, int)
# endif
function int pthread_cancel (pthread_t) function int pthread_cancel (pthread_t)
// function int pthread_cleanup_push (void (*) (void*), void*) // function int pthread_cleanup_push (void (*) (void*), void*)
macro pthread_cleanup_push macro pthread_cleanup_push
@ -97,7 +107,9 @@ function void pthread_exit (void*)
# if !defined POSIX && !defined POSIX2008 # if !defined POSIX && !defined POSIX2008
function int pthread_getconcurrency (void) function int pthread_getconcurrency (void)
# endif # endif
# if !defined POSIX
function int pthread_getcpuclockid (pthread_t, clockid_t*) function int pthread_getcpuclockid (pthread_t, clockid_t*)
# endif
function int pthread_getschedparam (pthread_t, int*, struct sched_param*) function int pthread_getschedparam (pthread_t, int*, struct sched_param*)
function {void*} pthread_getspecific (pthread_key_t) function {void*} pthread_getspecific (pthread_key_t)
function int pthread_join (pthread_t, void**) function int pthread_join (pthread_t, void**)
@ -108,21 +120,27 @@ optional-function int pthread_mutex_getprioceiling (const pthread_mutex_t*, int*
function int pthread_mutex_init (pthread_mutex_t*, const pthread_mutexattr_t*) function int pthread_mutex_init (pthread_mutex_t*, const pthread_mutexattr_t*)
function int pthread_mutex_lock (pthread_mutex_t*) function int pthread_mutex_lock (pthread_mutex_t*)
optional-function int pthread_mutex_setprioceiling (pthread_mutex_t*, int, int*) optional-function int pthread_mutex_setprioceiling (pthread_mutex_t*, int, int*)
# if !defined POSIX
function int pthread_mutex_timedlock (pthread_mutex_t*, const struct timespec*) function int pthread_mutex_timedlock (pthread_mutex_t*, const struct timespec*)
# endif
function int pthread_mutex_trylock (pthread_mutex_t*) function int pthread_mutex_trylock (pthread_mutex_t*)
function int pthread_mutex_unlock (pthread_mutex_t*) function int pthread_mutex_unlock (pthread_mutex_t*)
function int pthread_mutexattr_destroy (pthread_mutexattr_t*) function int pthread_mutexattr_destroy (pthread_mutexattr_t*)
optional-function int pthread_mutexattr_getprioceiling (const pthread_mutexattr_t*, int*) optional-function int pthread_mutexattr_getprioceiling (const pthread_mutexattr_t*, int*)
optional-function int pthread_mutexattr_getprotocol (const pthread_mutexattr_t*, int*) optional-function int pthread_mutexattr_getprotocol (const pthread_mutexattr_t*, int*)
function int pthread_mutexattr_getpshared (const pthread_mutexattr_t*, int*) function int pthread_mutexattr_getpshared (const pthread_mutexattr_t*, int*)
# if !defined POSIX
function int pthread_mutexattr_gettype (const pthread_mutexattr_t*, int*) function int pthread_mutexattr_gettype (const pthread_mutexattr_t*, int*)
# endif
function int pthread_mutexattr_init (pthread_mutexattr_t*) function int pthread_mutexattr_init (pthread_mutexattr_t*)
optional-function int pthread_mutexattr_setprioceiling (pthread_mutexattr_t*, int) optional-function int pthread_mutexattr_setprioceiling (pthread_mutexattr_t*, int)
optional-function int pthread_mutexattr_setprotocol (pthread_mutexattr_t*, int) optional-function int pthread_mutexattr_setprotocol (pthread_mutexattr_t*, int)
function int pthread_mutexattr_setpshared (pthread_mutexattr_t*, int) function int pthread_mutexattr_setpshared (pthread_mutexattr_t*, int)
# if !defined POSIX
function int pthread_mutexattr_settype (pthread_mutexattr_t*, int) function int pthread_mutexattr_settype (pthread_mutexattr_t*, int)
# endif
function int pthread_once (pthread_once_t*, void (*) (void)) function int pthread_once (pthread_once_t*, void (*) (void))
# ifndef POSIX # if !defined POSIX
function int pthread_rwlock_init (pthread_rwlock_t*, const pthread_rwlockattr_t*) function int pthread_rwlock_init (pthread_rwlock_t*, const pthread_rwlockattr_t*)
function int pthread_rwlock_rdlock (pthread_rwlock_t*) function int pthread_rwlock_rdlock (pthread_rwlock_t*)
function int pthread_rwlock_timedrdlock (pthread_rwlock_t*, const struct timespec*) function int pthread_rwlock_timedrdlock (pthread_rwlock_t*, const struct timespec*)
@ -144,14 +162,16 @@ function int pthread_setconcurrency (int)
# endif # endif
function int pthread_setschedparam (pthread_t, int, const struct sched_param*) function int pthread_setschedparam (pthread_t, int, const struct sched_param*)
function int pthread_setspecific (pthread_key_t, const void*) function int pthread_setspecific (pthread_key_t, const void*)
#if !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX2008 # if !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX2008
function int pthread_sigmask (int, const sigset_t*, sigset_t*) function int pthread_sigmask (int, const sigset_t*, sigset_t*)
#endif # endif
# if !defined POSIX
function int pthread_spin_destroy (pthread_spinlock_t*) function int pthread_spin_destroy (pthread_spinlock_t*)
function int pthread_spin_init (pthread_spinlock_t*, int) function int pthread_spin_init (pthread_spinlock_t*, int)
function int pthread_spin_lock (pthread_spinlock_t*) function int pthread_spin_lock (pthread_spinlock_t*)
function int pthread_spin_trylock (pthread_spinlock_t*) function int pthread_spin_trylock (pthread_spinlock_t*)
function int pthread_spin_unlock (pthread_spinlock_t*) function int pthread_spin_unlock (pthread_spinlock_t*)
# endif
function void pthread_testcancel (void) function void pthread_testcancel (void)
# if defined XOPEN2K8 || defined POSIX2008 # if defined XOPEN2K8 || defined POSIX2008
function int pthread_mutex_consistent (pthread_mutex_t *) function int pthread_mutex_consistent (pthread_mutex_t *)

View File

@ -1,4 +1,4 @@
#ifndef ISO #if !defined ISO && !defined ISO99 && !defined ISO11
type {struct passwd} type {struct passwd}
element {struct passwd} {char*} pw_name element {struct passwd} {char*} pw_name
element {struct passwd} uid_t pw_uid element {struct passwd} uid_t pw_uid
@ -18,7 +18,7 @@ function {struct passwd*} getpwnam (const char*)
function {struct passwd*} getpwuid (uid_t) function {struct passwd*} getpwuid (uid_t)
function int getpwnam_r (const char*, struct passwd*, char*, size_t, struct passwd**) function int getpwnam_r (const char*, struct passwd*, char*, size_t, struct passwd**)
function int getpwuid_r (uid_t, struct passwd*, char*, size_t, struct passwd**) function int getpwuid_r (uid_t, struct passwd*, char*, size_t, struct passwd**)
# ifndef POSIX2008 # if !defined POSIX && !defined POSIX2008
function void endpwent (void) function void endpwent (void)
function {struct passwd*} getpwent (void) function {struct passwd*} getpwent (void)
function void setpwent (void) function void setpwent (void)

View File

@ -1,4 +1,4 @@
#ifndef ISO #if !defined ISO && !defined ISO99 && !defined ISO11
type regex_t type regex_t
element regex_t size_t re_nsub element regex_t size_t re_nsub
@ -28,7 +28,7 @@ constant REG_EBRACE
constant REG_BADBR constant REG_BADBR
constant REG_ESPACE constant REG_ESPACE
constant REG_BADRPT constant REG_BADRPT
# if !defined XOPEN2K8 && !defined POSIX2008 # if !defined POSIX && !defined XOPEN2K8 && !defined POSIX2008
constant REG_ENOSYS constant REG_ENOSYS
# endif # endif

View File

@ -1,4 +1,4 @@
#ifndef ISO #if !defined ISO && !defined ISO99 && !defined ISO11
type {struct sched_param} type {struct sched_param}
element {struct sched_param} int sched_priority element {struct sched_param} int sched_priority
optional-element {struct sched_param} int sched_ss_low_priority optional-element {struct sched_param} int sched_ss_low_priority

View File

@ -1,4 +1,4 @@
#if !defined ISO && !defined POSIX && !defined POSIX2008 #if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
type ENTRY type ENTRY
type {struct entry} type {struct entry}
element {struct entry} {char*} key element {struct entry} {char*} key

View File

@ -1,4 +1,4 @@
#if !defined ISO #if !defined ISO && !defined ISO99 && !defined ISO11
type sem_t type sem_t
constant SEM_FAILED constant SEM_FAILED
@ -9,7 +9,9 @@ function int sem_getvalue (sem_t*, int*)
function int sem_init (sem_t*, int, unsigned int) function int sem_init (sem_t*, int, unsigned int)
function {sem_t*} sem_open (const char*, int, ...) function {sem_t*} sem_open (const char*, int, ...)
function int sem_post (sem_t*) function int sem_post (sem_t*)
# if !defined POSIX
function int sem_timedwait (sem_t*, const struct timespec*) function int sem_timedwait (sem_t*, const struct timespec*)
# endif
function int sem_trywait (sem_t*) function int sem_trywait (sem_t*)
function int sem_unlink (const char*) function int sem_unlink (const char*)
function int sem_wait (sem_t*) function int sem_wait (sem_t*)

View File

@ -1,10 +1,10 @@
type jmp_buf type jmp_buf
#ifndef ISO #if !defined ISO && !defined ISO99 && !defined ISO11
type sigjmp_buf type sigjmp_buf
#endif #endif
function void longjmp (jmp_buf, int) function void longjmp (jmp_buf, int)
#ifndef ISO #if !defined ISO && !defined ISO99 && !defined ISO11
function void siglongjmp (sigjmp_buf, int) function void siglongjmp (sigjmp_buf, int)
# if !defined POSIX && !defined POSIX2008 # if !defined POSIX && !defined POSIX2008
function void _longjmp (jmp_buf, int) function void _longjmp (jmp_buf, int)
@ -12,7 +12,7 @@ function void _longjmp (jmp_buf, int)
#endif #endif
macro-function int setjmp (jmp_buf) macro-function int setjmp (jmp_buf)
#ifndef ISO #if !defined ISO && !defined ISO99 && !defined ISO11
macro-function int sigsetjmp (sigjmp_buf, int) macro-function int sigsetjmp (sigjmp_buf, int)
# if !defined POSIX && !defined POSIX2008 # if !defined POSIX && !defined POSIX2008
macro-function int _setjmp (jmp_buf) macro-function int _setjmp (jmp_buf)

View File

@ -1,13 +1,15 @@
typed-constant SIG_DFL {void(*)(int)} typed-constant SIG_DFL {void(*)(int)}
typed-constant SIG_ERR {void(*)(int)} typed-constant SIG_ERR {void(*)(int)}
#if !defined ISO && !defined POSIX && !defined POSIX2008 #if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
typed-constant SIG_HOLD {void(*)(int)} typed-constant SIG_HOLD {void(*)(int)}
#endif #endif
typed-constant SIG_IGN {void(*)(int)} typed-constant SIG_IGN {void(*)(int)}
type sig_atomic_t type sig_atomic_t
#if !defined ISO && !defined ISO99 && !defined ISO11
type sigset_t type sigset_t
type pid_t type pid_t
#endif
#if defined XOPEN2K8 || defined POSIX2008 #if defined XOPEN2K8 || defined POSIX2008
type size_t type size_t
type pthread_t type pthread_t
@ -26,6 +28,7 @@ element {struct timespec} __time_t tv_sec
element {struct timespec} long tv_nsec element {struct timespec} long tv_nsec
#endif #endif
#if defined UNIX98 || defined XOPEN2K8 || defined POSIX2008
element {union sigval} int sival_int element {union sigval} int sival_int
element {union sigval} {void*} sival_ptr element {union sigval} {void*} sival_ptr
@ -46,19 +49,25 @@ type {union sigval}
macro SIGRTMIN macro SIGRTMIN
macro SIGRTMAX macro SIGRTMAX
#endif
constant SIGABRT constant SIGABRT
constant SIGALRM
constant SIGFPE constant SIGFPE
constant SIGHUP
constant SIGILL constant SIGILL
constant SIGINT constant SIGINT
constant SIGSEGV
constant SIGTERM
function void (*signal (int, void(*)(int)))(int)
function int raise (int)
#if !defined ISO && !defined ISO99 && !defined ISO11
constant SIGALRM
constant SIGHUP
constant SIGIO constant SIGIO
constant SIGKILL constant SIGKILL
constant SIGPIPE constant SIGPIPE
constant SIGQUIT constant SIGQUIT
constant SIGSEGV
constant SIGTERM
constant SIGUSR1 constant SIGUSR1
constant SIGUSR2 constant SIGUSR2
constant SIGCHLD constant SIGCHLD
@ -71,9 +80,9 @@ constant SIGBUS
constant SIGPOLL constant SIGPOLL
constant SIGPROF constant SIGPROF
constant SIGSYS constant SIGSYS
#if !defined POSIX && !defined POSIX2008 # if !defined POSIX && !defined POSIX2008
constant SIGTRAP constant SIGTRAP
#endif # endif
constant SIGURG constant SIGURG
constant SIGVTALRM constant SIGVTALRM
constant SIGXCPU constant SIGXCPU
@ -90,21 +99,24 @@ constant SA_NOCLDSTOP
constant SIG_BLOCK constant SIG_BLOCK
constant SIG_UNBLOCK constant SIG_UNBLOCK
constant SIG_SETMASK constant SIG_SETMASK
#if !defined POSIX && !defined POSIX2008 # if !defined POSIX && !defined POSIX2008
constant SA_ONSTACK constant SA_ONSTACK
#endif # endif
# if !defined POSIX
constant SA_RESETHAND constant SA_RESETHAND
constant SA_RESTART constant SA_RESTART
constant SA_SIGINFO constant SA_SIGINFO
constant SA_NOCLDWAIT constant SA_NOCLDWAIT
constant SA_NODEFER constant SA_NODEFER
#if !defined POSIX && !defined POSIX2008 # endif
# if !defined POSIX && !defined POSIX2008
constant SS_ONSTACK constant SS_ONSTACK
constant SS_DISABLE constant SS_DISABLE
constant MINSIGSTKSZ constant MINSIGSTKSZ
constant SIGSTKSZ constant SIGSTKSZ
#endif # endif
# if !defined POSIX
type ucontext_t type ucontext_t
element ucontext_t {ucontext_t*} uc_link element ucontext_t {ucontext_t*} uc_link
@ -122,13 +134,14 @@ type {struct sigstack}
element {struct sigstack} int ss_onstack element {struct sigstack} int ss_onstack
element {struct sigstack} {void*} ss_sp element {struct sigstack} {void*} ss_sp
# endif
type siginfo_t type siginfo_t
element siginfo_t int si_signo element siginfo_t int si_signo
#if !defined POSIX && !defined POSIX2008 # if !defined POSIX && !defined POSIX2008
element siginfo_t int si_errno element siginfo_t int si_errno
#endif # endif
element siginfo_t int si_code element siginfo_t int si_code
element siginfo_t pid_t si_pid element siginfo_t pid_t si_pid
element siginfo_t uid_t si_uid element siginfo_t uid_t si_uid
@ -178,50 +191,50 @@ constant SI_TIMER
constant SI_ASYNCIO constant SI_ASYNCIO
constant SI_MESGQ constant SI_MESGQ
#if !defined XOPEN2K8 && !defined POSIX && !defined POSIX2008 # if !defined XOPEN2K8 && !defined POSIX && !defined POSIX2008
function void (*bsd_signal (int, void(*)(int)))(int) function void (*bsd_signal (int, void(*)(int)))(int)
#endif # endif
function int kill (pid_t, int) function int kill (pid_t, int)
#if !defined POSIX && !defined POSIX2008 # if !defined POSIX && !defined POSIX2008
function int killpg (pid_t, int) function int killpg (pid_t, int)
#endif # endif
function int pthread_kill (pthread_t, int) function int pthread_kill (pthread_t, int)
function int pthread_sigmask (int, const sigset_t*, sigset_t*) function int pthread_sigmask (int, const sigset_t*, sigset_t*)
function int raise (int)
function int sigaction (int, const struct sigaction*, struct sigaction*) function int sigaction (int, const struct sigaction*, struct sigaction*)
function int sigaddset (sigset_t*, int) function int sigaddset (sigset_t*, int)
#if !defined POSIX && !defined POSIX2008 # if !defined POSIX && !defined POSIX2008
function int sigaltstack (const stack_t*, stack_t*) function int sigaltstack (const stack_t*, stack_t*)
#endif # endif
function int sigdelset (sigset_t*, int) function int sigdelset (sigset_t*, int)
function int sigemptyset (sigset_t*) function int sigemptyset (sigset_t*)
function int sigfillset (sigset_t*) function int sigfillset (sigset_t*)
#if !defined POSIX && !defined POSIX2008 # if !defined POSIX && !defined POSIX2008
function int sighold (int) function int sighold (int)
function int sigignore (int) function int sigignore (int)
function int siginterrupt (int, int) function int siginterrupt (int, int)
#endif # endif
function int sigismember (const sigset_t*, int) function int sigismember (const sigset_t*, int)
function void (*signal (int, void(*)(int)))(int)
#if !defined POSIX && !defined POSIX2008 #if !defined POSIX && !defined POSIX2008
function int sigpause (int) function int sigpause (int)
#endif # endif
function int sigpending (sigset_t*) function int sigpending (sigset_t*)
function int sigprocmask (int, const sigset_t*, sigset_t*) function int sigprocmask (int, const sigset_t*, sigset_t*)
function int sigqueue (pid_t, int, const union sigval) function int sigqueue (pid_t, int, const union sigval)
#if !defined POSIX && !defined POSIX2008 # if !defined POSIX && !defined POSIX2008
function int sigrelse (int) function int sigrelse (int)
function void (*sigset (int, void(*)(int)))(int) function void (*sigset (int, void(*)(int)))(int)
#endif # endif
# if !defined POSIX
function int sigstack (struct sigstack*, struct sigstack*) function int sigstack (struct sigstack*, struct sigstack*)
# endif
function int sigsuspend (const sigset_t*) function int sigsuspend (const sigset_t*)
function int sigtimedwait (const sigset_t*, siginfo_t*, const struct timespec*) function int sigtimedwait (const sigset_t*, siginfo_t*, const struct timespec*)
function int sigwait (const sigset_t*, int*) function int sigwait (const sigset_t*, int*)
function int sigwaitinfo (const sigset_t*, siginfo_t*) function int sigwaitinfo (const sigset_t*, siginfo_t*)
#if defined XOPEN2K8 || defined POSIX2008 # if defined XOPEN2K8 || defined POSIX2008
function void psiginfo (const siginfo_t*, const char*) function void psiginfo (const siginfo_t*, const char*)
function void psignal (int, const char*) function void psignal (int, const char*)
#endif # endif
// The following expressions are not entirely correct but the current // The following expressions are not entirely correct but the current
// poorfnmatch implementation doesn't grok the right form. // poorfnmatch implementation doesn't grok the right form.
@ -248,3 +261,7 @@ allow TRAP_*
allow *_t allow *_t
allow-header time.h allow-header time.h
#endif
allow SIG[ABCDEFGHIJKLMNOPQRSTUVWXYZ]*
allow SIG_*

View File

@ -1,4 +1,4 @@
#ifndef ISO #if !defined ISO && !defined ISO99 && !defined ISO11
type posix_spawnattr_t type posix_spawnattr_t
type posix_spawn_file_actions_t type posix_spawn_file_actions_t
# if defined XOPEN2K8 || defined POSIX2008 # if defined XOPEN2K8 || defined POSIX2008

View File

@ -4,6 +4,9 @@ type va_list
macro va_start macro va_start
macro va_arg macro va_arg
macro va_end macro va_end
#if defined ISO99 || defined ISO11 || defined POSIX2008 || defined XOPEN2K8
macro va_copy macro va_copy
#endif
allow *_t allow *_t

View File

@ -6,9 +6,11 @@ constant _IOFBF
constant _IOLBF constant _IOLBF
constant _IONBF constant _IONBF
#if !defined ISO && !defined ISO99 && !defined ISO11
constant L_ctermid constant L_ctermid
#if !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX2008 # if !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX2008
constant L_cuserid constant L_cuserid
# endif
#endif #endif
constant L_tmpnam constant L_tmpnam
@ -22,7 +24,7 @@ constant EOF
constant NULL constant NULL
#if !defined POSIX && !defined POSIX2008 #if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
constant P_tmpdir constant P_tmpdir
#endif #endif
@ -32,7 +34,11 @@ macro stderr
type FILE type FILE
type fpos_t type fpos_t
#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX
type va_list type va_list
#else
#define va_list _G_va_list
#endif
type size_t type size_t
#if defined XOPEN2K8 || defined POSIX2008 #if defined XOPEN2K8 || defined POSIX2008
type off_t type off_t
@ -40,23 +46,31 @@ type ssize_t
#endif #endif
function void clearerr (FILE*) function void clearerr (FILE*)
#if !defined ISO && !defined ISO99 && !defined ISO11
function {char*} ctermid (char*) function {char*} ctermid (char*)
#if !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX2008 # if defined XPG3 || defined XPG4 || defined UNIX98
function {char*} cuserid (char*) function {char*} cuserid (char*)
# endif
#endif #endif
#if defined XOPEN2K8 || defined POSIX2008 #if defined XOPEN2K8 || defined POSIX2008
function int dprintf (int, const char*, ...) function int dprintf (int, const char*, ...)
#endif #endif
function int fclose (FILE*) function int fclose (FILE*)
#if defined XOPEN2K8 || defined POSIX2008
function {FILE*} fdopen (int, const char*) function {FILE*} fdopen (int, const char*)
#endif
function int feof (FILE*) function int feof (FILE*)
function int ferror (FILE*) function int ferror (FILE*)
function int fflush (FILE*) function int fflush (FILE*)
function int fgetc (FILE*) function int fgetc (FILE*)
function int fgetpos (FILE*, fpos_t*) function int fgetpos (FILE*, fpos_t*)
function {char*} fgets (char*, int, FILE*) function {char*} fgets (char*, int, FILE*)
#if !defined ISO && !defined ISO99 && !defined ISO11
function int fileno (FILE*) function int fileno (FILE*)
#endif
#if defined XOPEN2K || defined XOPEN2K8 || defined POSIX2008
function void flockfile (FILE*) function void flockfile (FILE*)
#endif
#if defined XOPEN2K8 || defined POSIX2008 #if defined XOPEN2K8 || defined POSIX2008
function {FILE*} fmemopen (void*, size_t, const char*) function {FILE*} fmemopen (void*, size_t, const char*)
#endif #endif
@ -68,41 +82,57 @@ function size_t fread (void*, size_t, size_t, FILE*)
function {FILE*} freopen (const char*, const char*, FILE*) function {FILE*} freopen (const char*, const char*, FILE*)
function int fscanf (FILE*, const char*, ...) function int fscanf (FILE*, const char*, ...)
function int fseek (FILE*, long int, int) function int fseek (FILE*, long int, int)
#if defined XOPEN2K || defined XOPEN2K8 || defined POSIX2008
function int fseeko (FILE*, off_t, int) function int fseeko (FILE*, off_t, int)
#endif
function int fsetpos (FILE*, const fpos_t*) function int fsetpos (FILE*, const fpos_t*)
function {long int} ftell (FILE*) function {long int} ftell (FILE*)
#if defined XOPEN2K || defined XOPEN2K8 || defined POSIX2008
function off_t ftello (FILE*) function off_t ftello (FILE*)
#endif
#if defined XOPEN2K || defined XOPEN2K8 || defined POSIX2008
function int ftrylockfile (FILE*) function int ftrylockfile (FILE*)
function void funlockfile (FILE*) function void funlockfile (FILE*)
#endif
function size_t fwrite (const void*, size_t, size_t, FILE*) function size_t fwrite (const void*, size_t, size_t, FILE*)
function int getc (FILE*) function int getc (FILE*)
function int getchar (void) function int getchar (void)
#if defined XOPEN2K || defined XOPEN2K8 || defined POSIX2008
function int getc_unlocked (FILE*) function int getc_unlocked (FILE*)
function int getchar_unlocked () function int getchar_unlocked ()
#endif
#if defined XOPEN2K8 || defined POSIX2008 #if defined XOPEN2K8 || defined POSIX2008
function ssize_t getdelim (char**, size_t*, int, FILE*) function ssize_t getdelim (char**, size_t*, int, FILE*)
function ssize_t getline (char**, size_t*, FILE*) function ssize_t getline (char**, size_t*, FILE*)
#endif #endif
#if !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX2008 #if defined XPG3 || defined XPG4 || defined UNIX98
function int getopt (int, char *const[], const char *) function int getopt (int, char *const[], const char *)
#endif #endif
#if !defined ISO11
function {char*} gets (char*) function {char*} gets (char*)
#if !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX2008 #endif
#if defined XPG3 || defined XPG4 || defined UNIX98
function int getw (FILE*) function int getw (FILE*)
#endif #endif
#if defined XOPEN2K8 || defined POSIX2008 #if defined XOPEN2K8 || defined POSIX2008
function {FILE*} open_memstream (char**, size_t*) function {FILE*} open_memstream (char**, size_t*)
#endif #endif
#if !defined ISO && !defined ISO99 && !defined ISO11
function int pclose (FILE*) function int pclose (FILE*)
#endif
function void perror (const char*) function void perror (const char*)
#if !defined ISO && !defined ISO99 && !defined ISO11
function {FILE*} popen (const char*, const char*) function {FILE*} popen (const char*, const char*)
#endif
function int printf (const char*, ...) function int printf (const char*, ...)
function int putc (int, FILE*) function int putc (int, FILE*)
function int putchar (int) function int putchar (int)
#if defined XOPEN2K || defined XOPEN2K8 || defined POSIX2008
function int putc_unlocked (int, FILE*) function int putc_unlocked (int, FILE*)
function int putchar_unlocked (int) function int putchar_unlocked (int)
#endif
function int puts (const char*) function int puts (const char*)
#if !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX2008 #if defined XPG3 || defined XPG4 || defined UNIX98
function int putw (int, FILE*) function int putw (int, FILE*)
#endif #endif
function int remove (const char*) function int remove (const char*)
@ -114,10 +144,12 @@ function void rewind (FILE*)
function int scanf (const char*, ...) function int scanf (const char*, ...)
function void setbuf (FILE*, char*) function void setbuf (FILE*, char*)
function int setvbuf (FILE*, char*, int, size_t) function int setvbuf (FILE*, char*, int, size_t)
#if !defined ISO && !defined POSIX
function int snprintf (char*, size_t, const char*, ...) function int snprintf (char*, size_t, const char*, ...)
#endif
function int sprintf (char *, const char *, ...) function int sprintf (char *, const char *, ...)
function int sscanf (const char*, const char*, ...) function int sscanf (const char*, const char*, ...)
#if !defined POSIX && !defined POSIX2008 #if defined XPG3 || defined XPG4 || defined UNIX98 || defined XOPEN2K || defined XOPEN2K8
function {char*} tempnam (const char*, const char*) function {char*} tempnam (const char*, const char*)
#endif #endif
function {FILE*} tmpfile (void) function {FILE*} tmpfile (void)
@ -127,20 +159,22 @@ function int ungetc (int, FILE*)
function int vdprintf (int, const char*, va_list) function int vdprintf (int, const char*, va_list)
#endif #endif
function int vfprintf (FILE*, const char*, va_list) function int vfprintf (FILE*, const char*, va_list)
#if defined XOPEN2K || defined XOPEN2K8 || defined POSIX2008 #if !defined ISO && !defined XPG3 && !defined XPG4 && !defined UNIX98
function int vfscanf (FILE*, const char*, va_list) function int vfscanf (FILE*, const char*, va_list)
#endif #endif
function int vprintf (const char*, va_list) function int vprintf (const char*, va_list)
#if defined XOPEN2K || defined XOPEN2K8 || defined POSIX2008 #if !defined ISO && !defined XPG3 && !defined XPG4 && !defined UNIX98
function int vscanf (const char*, va_list) function int vscanf (const char*, va_list)
#endif #endif
#ifndef ISO
function int vsnprintf (char*, size_t, const char*, va_list) function int vsnprintf (char*, size_t, const char*, va_list)
#endif
function int vsprintf (char*, const char*, va_list) function int vsprintf (char*, const char*, va_list)
#if defined XOPEN2K || defined XOPEN2K8 || defined POSIX2008 #if !defined ISO && !defined XPG3 && !defined XPG4 && !defined UNIX98
function int vsscanf (const char*, const char*, va_list) function int vsscanf (const char*, const char*, va_list)
#endif #endif
#if !defined ISO && !defined POSIX #if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX
#if !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX2008 #if !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX2008
variable {char*} optarg variable {char*} optarg
variable int opterr variable int opterr

View File

@ -1,15 +1,17 @@
macro EXIT_FAILURE
constant EXIT_SUCCESS 0
macro NULL
constant RAND_MAX >= 32767
macro MB_CUR_MAX
type div_t type div_t
element div_t int quot element div_t int quot
element div_t int rem element div_t int rem
type ldiv_t type ldiv_t
element ldiv_t long quot element ldiv_t long quot
element ldiv_t long rem element ldiv_t long rem
macro EXIT_FAILURE
macro EXIT_SUCCESS 0
macro NULL
constant RAND_MAX >= 32767
macro MB_CUR_MAX
#if defined XOPEN2K || defined XOPEN2K8 || defined POSIX2008 #if defined XOPEN2K || defined XOPEN2K8 || defined POSIX2008
type lldiv_t type lldiv_t
element lldiv_t {long long} quot element lldiv_t {long long} quot
@ -18,6 +20,7 @@ element lldiv_t {long long} rem
type size_t type size_t
type wchar_t type wchar_t
#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX
constant WNOHANG constant WNOHANG
constant WUNTRACED constant WUNTRACED
@ -27,58 +30,69 @@ macro WIFSIGNALED
macro WIFSTOPPED macro WIFSTOPPED
macro WSTOPSIG macro WSTOPSIG
macro WTERMSIG macro WTERMSIG
#endif
#if !defined ISO && !defined XPG3 && !defined XPG4 && !defined UNIX98 && !defined POSIX
function void _Exit (int) function void _Exit (int)
#if !defined POSIX && !defined POSIX2008 #endif
#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
function long a64l (const char*) function long a64l (const char*)
#endif #endif
function void abort (void) function void abort (void)
function int abs (int) function int abs (int)
#if defined ISO11
function {void *} aligned_alloc (size_t, size_t)
#endif
function int atexit (void(*)(void)) function int atexit (void(*)(void))
#if defined ISO11
function int at_quick_exit (void (*) (void))
#endif
function double atof (const char*) function double atof (const char*)
function int atoi (const char*) function int atoi (const char*)
function {long int} atol (const char*) function {long int} atol (const char*)
#if defined XOPEN2K || defined XOPEN2K8 || defined POSIX2008 #if !defined ISO && !defined POSIX && !defined XPG3 && !defined XPG4 && !defined UNIX98
function {long long} atoll (const char*) function {long long} atoll (const char*)
#endif #endif
function {void*} bsearch (const void*, const void*, size_t, size_t, int(*)(const void*, const void*)) function {void*} bsearch (const void*, const void*, size_t, size_t, int(*)(const void*, const void*))
function {void*} calloc (size_t, size_t) function {void*} calloc (size_t, size_t)
function div_t div (int, int) function div_t div (int, int)
#if !defined POSIX && !defined POSIX2008 #if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
function double drand48 (void) function double drand48 (void)
#endif #endif
#if !defined POSIX && !defined XOPEN2K8 && !defined POSIX2008 #if defined XPG3 || defined XPG4 || defined UNIX98 || defined XOPEN2K
function {char*} ecvt (double, int, int*, int*) function {char*} ecvt (double, int, int*, int*)
#endif #endif
#if !defined POSIX && !defined POSIX2008 #if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
function double erand48 (unsigned short int[3]) function double erand48 (unsigned short int[3])
#endif #endif
function void exit (int) function void exit (int)
#if !defined POSIX && !defined XOPEN2K8 && !defined POSIX2008 #if defined XPG3 || defined XPG4 || defined UNIX98 || defined XOPEN2K
function {char*} fcvt (double, int, int*, int*) function {char*} fcvt (double, int, int*, int*)
#endif #endif
function void free (void*) function void free (void*)
#if !defined POSIX && !defined XOPEN2K8 && !defined POSIX2008 #if defined XPG3 || defined XPG4 || defined UNIX98 || defined XOPEN2K
function {char*} gcvt (double, int, char*) function {char*} gcvt (double, int, char*)
#endif #endif
function {char*} getenv (const char*) function {char*} getenv (const char*)
#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX
function int getsubopt (char**, char *const*, char**) function int getsubopt (char**, char *const*, char**)
#if !defined POSIX && !defined POSIX2008 #endif
#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
function int grantpt (int) function int grantpt (int)
function {char*} initstate (unsigned int, char*, size_t) function {char*} initstate (unsigned int, char*, size_t)
function {long int} jrand48 (unsigned short int[3]) function {long int} jrand48 (unsigned short int[3])
function {char*} l64a (long) function {char*} l64a (long)
#endif #endif
function {long int} labs (long int) function {long int} labs (long int)
#if !defined POSIX && !defined POSIX2008 #if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
function void lcong48 (unsigned short int[7]) function void lcong48 (unsigned short int[7])
#endif #endif
function ldiv_t ldiv (long int, long int) function ldiv_t ldiv (long int, long int)
#if defined XOPEN2K || defined XOPEN2K8 || defined POSIX2008 #if !defined ISO && !defined POSIX && !defined XPG3 && !defined XPG4 && !defined UNIX98
function {long long} llabs (long long) function {long long} llabs (long long)
function lldiv_t lldiv (long long, long long) function lldiv_t lldiv (long long, long long)
#endif #endif
#if !defined POSIX && !defined POSIX2008 #if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
function {long int} lrand48 (void) function {long int} lrand48 (void)
#endif #endif
function {void*} malloc (size_t) function {void*} malloc (size_t)
@ -88,40 +102,51 @@ function int mbtowc (wchar_t*, const char*, size_t)
#if defined XOPEN2K8 || defined POSIX2008 #if defined XOPEN2K8 || defined POSIX2008
function {char*} mkdtemp (char*) function {char*} mkdtemp (char*)
#endif #endif
#if !defined XOPEN2K8 && !defined POSIX2008 #if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined XOPEN2K8 && !defined POSIX2008
function {char*} mktemp (char*) function {char*} mktemp (char*)
#endif #endif
#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX
function int mkstemp (char*) function int mkstemp (char*)
#if !defined POSIX && !defined POSIX2008 #endif
#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
function {long int} mrand48 (void) function {long int} mrand48 (void)
function {long int} nrand48 (unsigned short int[3]) function {long int} nrand48 (unsigned short int[3])
#endif #endif
#if defined XOPEN2K || defined XOPEN2K8 || defined POSIX2008
function int posix_memalign (void**, size_t, size_t) function int posix_memalign (void**, size_t, size_t)
#endif
#if defined XOPEN2K || defined XOPEN2K8 #if defined XOPEN2K || defined XOPEN2K8
function int posix_openpt (int) function int posix_openpt (int)
#endif #endif
#if !defined POSIX && !defined POSIX2008 #if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
function {char*} ptsname (int) function {char*} ptsname (int)
function int putenv (char*) function int putenv (char*)
#endif #endif
function void qsort (void*, size_t, size_t, int(*)(const void*, const void*)) function void qsort (void*, size_t, size_t, int(*)(const void*, const void*))
#if defined ISO11
function void quick_exit (int)
#endif
function int rand (void) function int rand (void)
#if defined POSIX || defined UNIX98 || defined XOPEN2K || defined XOPEN2K8 || defined POSIX2008
function int rand_r (unsigned int*) function int rand_r (unsigned int*)
#if !defined POSIX && !defined POSIX2008 #endif
#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
function long random (void) function long random (void)
#endif #endif
function {void*} realloc (void*, size_t) function {void*} realloc (void*, size_t)
#if !defined POSIX && !defined POSIX2008 #if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
function {char*} realpath (const char*, char*) function {char*} realpath (const char*, char*)
function {unsigned short int*} seed48 (unsigned short int[3]) function {unsigned short int*} seed48 (unsigned short int[3])
#endif #endif
#if !defined ISO && !defined ISO99 && !defined ISO11
function int setenv (const char*, const char*, int) function int setenv (const char*, const char*, int)
#if !defined POSIX && !defined POSIX2008 #endif
#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
function void setkey (const char*) function void setkey (const char*)
function {char*} setstate (char*) function {char*} setstate (char*)
#endif #endif
function void srand (unsigned int) function void srand (unsigned int)
#if !defined POSIX && !defined POSIX2008 #if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
function void srand48 (long int) function void srand48 (long int)
function void srandom (unsigned) function void srandom (unsigned)
#endif #endif
@ -129,14 +154,16 @@ function double strtod (const char*, char**)
function {long int} strtol (const char*, char**, int) function {long int} strtol (const char*, char**, int)
function {unsigned long int} strtoul (const char*, char**, int) function {unsigned long int} strtoul (const char*, char**, int)
function int system (const char*) function int system (const char*)
#if !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX2008 #if defined XPG3 || defined XPG4 || defined UNIX98
function int ttyslot (void) function int ttyslot (void)
#endif #endif
#if !defined POSIX && !defined POSIX2008 #if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
function int unlockpt (int) function int unlockpt (int)
#endif #endif
#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX
function int unsetenv (const char*) function int unsetenv (const char*)
#if !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX && !defined POSIX2008 #endif
#if defined XPG3 || defined XPG4 || defined UNIX98
function {void*} valloc (size_t) function {void*} valloc (size_t)
#endif #endif
function size_t wcstombs (char*, const wchar_t*, size_t) function size_t wcstombs (char*, const wchar_t*, size_t)

View File

@ -5,7 +5,7 @@ type size_t
type locale_t type locale_t
#endif #endif
#if !defined POSIX && !defined POSIX2008 #if !defined ISO && !defined ISO99 & !defined ISO11 && !defined POSIX && !defined POSIX2008
function {void*} memccpy (void*, const void*, int, size_t) function {void*} memccpy (void*, const void*, int, size_t)
#endif #endif
function {void*} memchr (const void*, int, size_t) function {void*} memchr (const void*, int, size_t)
@ -27,7 +27,9 @@ function int strcoll_l (const char*, const char*, locale_t)
#endif #endif
function {char*} strcpy (char*, const char*) function {char*} strcpy (char*, const char*)
function size_t strcspn (const char*, const char*) function size_t strcspn (const char*, const char*)
#if !defined ISO && !defined ISO99 & !defined ISO11 && !defined POSIX && !defined POSIX2008
function {char*} strdup (const char*) function {char*} strdup (const char*)
#endif
function {char*} strerror (int) function {char*} strerror (int)
#if defined XOPEN2K || defined XOPEN2K8 || defined POSIX2008 #if defined XOPEN2K || defined XOPEN2K8 || defined POSIX2008
function int strerror_r (int, char*, size_t) function int strerror_r (int, char*, size_t)
@ -51,7 +53,9 @@ function {char*} strsignal (int)
function size_t strspn (const char*, const char*) function size_t strspn (const char*, const char*)
function {char*} strstr (const char*, const char*) function {char*} strstr (const char*, const char*)
function {char*} strtok (char*, const char*) function {char*} strtok (char*, const char*)
#if defined XOPEN2K || defined XOPEN2K8 || defined POSIX2008
function {char*} strtok_r (char*, const char*, char**) function {char*} strtok_r (char*, const char*, char**)
#endif
function size_t strxfrm (char*, const char*, size_t) function size_t strxfrm (char*, const char*, size_t)
#if defined XOPEN2K8 || defined POSIX2008 #if defined XOPEN2K8 || defined POSIX2008
function size_t strxfrm_l (char*, const char*, size_t, locale_t) function size_t strxfrm_l (char*, const char*, size_t, locale_t)

View File

@ -1,23 +1,25 @@
#if !defined XOPEN2K8 && !defined POSIX2008 #if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX
# if !defined XOPEN2K8 && !defined POSIX2008
function int bcmp (const void*, const void*, size_t) function int bcmp (const void*, const void*, size_t)
function void bcopy (const void*, void*, size_t) function void bcopy (const void*, void*, size_t)
function void bzero (void*, size_t) function void bzero (void*, size_t)
function {char*} index (const char*, int) function {char*} index (const char*, int)
function {char*} rindex (const char*, int) function {char*} rindex (const char*, int)
#endif # endif
#if !defined POSIX && !defined POSIX2008 # if !defined POSIX2008
function int ffs (int) function int ffs (int)
#endif # endif
function int strcasecmp (const char*, const char*) function int strcasecmp (const char*, const char*)
function int strncasecmp (const char*, const char*, size_t) function int strncasecmp (const char*, const char*, size_t)
#if defined XOPEN2K8 || defined POSIX2008 # if defined XOPEN2K8 || defined POSIX2008
function int strcasecmp_l (const char*, const char*, locale_t) function int strcasecmp_l (const char*, const char*, locale_t)
function int strncasecmp_l (const char*, const char*, size_t, locale_t) function int strncasecmp_l (const char*, const char*, size_t, locale_t)
#endif # endif
type size_t type size_t
#if defined XOPEN2K8 || defined POSIX2008 # if defined XOPEN2K8 || defined POSIX2008
type locale_t type locale_t
#endif # endif
allow *_t allow *_t
#endif

View File

@ -1,3 +1,4 @@
#if !defined ISO && !defined ISO99 && !defined ISO11
type {struct bandinfo} type {struct bandinfo}
element {struct bandinfo} {unsigned char} bi_pri element {struct bandinfo} {unsigned char} bi_pri
@ -135,3 +136,4 @@ allow S_*
allow SND* allow SND*
allow STR* allow STR*
allow *_t allow *_t
#endif

View File

@ -1,4 +1,4 @@
#if !defined ISO && !defined POSIX && !defined POSIX2008 #if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
type {struct ipc_perm} type {struct ipc_perm}
element {struct ipc_perm} uid_t uid element {struct ipc_perm} uid_t uid

View File

@ -1,3 +1,4 @@
#if !defined ISO && !defined ISO99 && !defined ISO11
constant PROT_READ constant PROT_READ
constant PROT_WRITE constant PROT_WRITE
constant PROT_EXEC constant PROT_EXEC
@ -54,3 +55,4 @@ allow MCL_*
allow MS_* allow MS_*
allow PROT_* allow PROT_*
allow *_t allow *_t
#endif

View File

@ -1,4 +1,4 @@
#if !defined ISO && !defined POSIX && !defined POSIX2008 #if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
type {struct msqid_ds} type {struct msqid_ds}
type msgqnum_t type msgqnum_t

View File

@ -1,4 +1,4 @@
#if !defined ISO && !defined POSIX && !defined POSIX2008 #if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
constant PRIO_PROCESS constant PRIO_PROCESS
constant PRIO_PGRP constant PRIO_PGRP
constant PRIO_USER constant PRIO_USER

View File

@ -1,4 +1,4 @@
#if !defined ISO && !defined POSIX #if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX
type time_t type time_t
type suseconds_t type suseconds_t

View File

@ -1,4 +1,4 @@
#if !defined ISO && !defined POSIX && !defined POSIX2008 #if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
constant SEM_UNDO constant SEM_UNDO
constant GETNCNT constant GETNCNT

View File

@ -1,4 +1,4 @@
#if !defined ISO && !defined POSIX && !defined POSIX2008 #if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
constant SHM_RDONLY constant SHM_RDONLY
symbol SHMLBA symbol SHMLBA
constant SHM_RND constant SHM_RND

View File

@ -1,4 +1,4 @@
#ifndef ISO #if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX
type socklen_t type socklen_t
type sa_family_t type sa_family_t

View File

@ -1,4 +1,4 @@
#ifndef ISO #if !defined ISO && !defined ISO99 && !defined ISO11
type {struct stat} type {struct stat}

View File

@ -1,3 +1,4 @@
#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX
type {struct statvfs} type {struct statvfs}
element {struct statvfs} {unsigned long} f_bsize element {struct statvfs} {unsigned long} f_bsize
@ -24,3 +25,4 @@ function int fstatvfs (int, struct statvfs*)
allow f_* allow f_*
allow ST_* allow ST_*
allow *_t allow *_t
#endif

View File

@ -1,4 +1,4 @@
#if !defined ISO && !defined POSIX && !defined POSIX2008 #if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
type {struct timeval} type {struct timeval}
element {struct timeval} time_t tv_sec element {struct timeval} time_t tv_sec

View File

@ -1,3 +1,4 @@
#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX
type {struct timeb} type {struct timeb}
element {struct timeb} time_t time element {struct timeb} time_t time
@ -10,3 +11,4 @@ type time_t
function int ftime (struct timeb*) function int ftime (struct timeb*)
allow *_t allow *_t
#endif

View File

@ -1,3 +1,4 @@
#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX
type {struct tms} type {struct tms}
element {struct tms} clock_t tms_utime element {struct tms} clock_t tms_utime
@ -11,3 +12,4 @@ function clock_t times (struct tms*)
allow tms_* allow tms_*
allow *_t allow *_t
#endif

View File

@ -1,4 +1,4 @@
#ifndef ISO #if !defined ISO && !defined ISO99 && !defined ISO11
type blkcnt_t type blkcnt_t
type blksize_t type blksize_t
type clock_t type clock_t

View File

@ -1,4 +1,4 @@
#if !defined ISO && !defined POSIX #if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX
type {struct iovec} type {struct iovec}
element {struct iovec} {void*} iov_base element {struct iovec} {void*} iov_base

View File

@ -1,4 +1,4 @@
#ifndef ISO #if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX
type {struct sockaddr_un} type {struct sockaddr_un}
element {struct sockaddr_un} sa_family_t sun_family element {struct sockaddr_un} sa_family_t sun_family

View File

@ -1,4 +1,4 @@
#ifndef ISO #if !defined ISO && !defined ISO99 && !defined ISO11
type {struct utsname} type {struct utsname}
element {struct utsname} char sysname [] element {struct utsname} char sysname []

View File

@ -1,4 +1,4 @@
#ifndef ISO #if !defined ISO && !defined ISO99 && !defined ISO11
constant WNOHANG constant WNOHANG
constant WUNTRACED constant WUNTRACED

View File

@ -1,4 +1,4 @@
#if !defined ISO && !defined POSIX && !defined POSIX2008 #if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
constant LOG_PID constant LOG_PID
constant LOG_CONS constant LOG_CONS
constant LOG_NDELAY constant LOG_NDELAY

View File

@ -1,4 +1,4 @@
#ifndef ISO #if !defined ISO && !defined ISO99 && !defined ISO11
macro-str TMAGIC "ustar" macro-str TMAGIC "ustar"
constant TMAGLEN 6 constant TMAGLEN 6
macro-str TVERSION "00" macro-str TVERSION "00"

View File

@ -1,4 +1,4 @@
#ifndef ISO #if !defined ISO && !defined ISO99 && !defined ISO11
type cc_t type cc_t
type speed_t type speed_t
type tcflag_t type tcflag_t
@ -39,7 +39,7 @@ constant INPCK
constant ISTRIP constant ISTRIP
# if !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX2008 # if !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX2008
constant IUCLC constant IUCLC
# <endif # endif
constant IXANY constant IXANY
constant IXOFF constant IXOFF
constant IXON constant IXON
@ -118,7 +118,7 @@ constant IEXTEN
constant ISIG constant ISIG
constant NOFLSH constant NOFLSH
constant TOSTOP constant TOSTOP
# if !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX2008 # if !defined POSIX && !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX2008
constant XCASE constant XCASE
# endif # endif
@ -142,7 +142,9 @@ function int tcdrain (int)
function int tcflow (int, int) function int tcflow (int, int)
function int tcflush (int, int) function int tcflush (int, int)
function int tcgetattr (int, struct termios*) function int tcgetattr (int, struct termios*)
#ifndef POSIX
function pid_t tcgetsid (int) function pid_t tcgetsid (int)
#endif
function int tcsendbreak (int, int) function int tcsendbreak (int, int)
function int tcsetattr (int, int, const struct termios*) function int tcsetattr (int, int, const struct termios*)

View File

@ -1,3 +1,21 @@
constant NULL
constant CLOCKS_PER_SEC
#ifdef ISO11
macro TIME_UTC
#endif
#if !defined ISO && !defined ISO99
type {struct timespec}
element {struct timespec} time_t tv_sec
element {struct timespec} long tv_nsec
#endif
type size_t
type clock_t
type time_t
type {struct tm} type {struct tm}
element {struct tm} int tm_sec element {struct tm} int tm_sec
@ -10,19 +28,26 @@ element {struct tm} int tm_wday
element {struct tm} int tm_yday element {struct tm} int tm_yday
element {struct tm} int tm_isdst element {struct tm} int tm_isdst
constant NULL function clock_t clock (void)
#if !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX2008 function double difftime (time_t, time_t)
constant CLK_TCK function time_t mktime (struct tm*)
function time_t time (time_t*)
function {char*} asctime (const struct tm*)
function {char*} ctime (const time_t*)
function {struct tm*} gmtime (const time_t*)
function {struct tm*} localtime (const time_t*)
function size_t strftime (char*, size_t, const char*, const struct tm*)
#if defined ISO11
function int timespec_get (struct timespec *, int)
#endif #endif
constant CLOCKS_PER_SEC
#if !defined ISO && !defined ISO99 && !defined ISO11
# if !defined XOPEN21K && !defined XOPEN2K8 && !defined POSIX2008
constant CLK_TCK
# endif
constant CLOCK_PROCESS_CPUTIME_ID constant CLOCK_PROCESS_CPUTIME_ID
constant CLOCK_THREAD_CPUTIME_ID constant CLOCK_THREAD_CPUTIME_ID
type {struct timespec}
element {struct timespec} time_t tv_sec
element {struct timespec} long tv_nsec
type {struct itimerspec} type {struct itimerspec}
element {struct itimerspec} {struct timespec} it_interval element {struct itimerspec} {struct timespec} it_interval
@ -32,50 +57,38 @@ constant CLOCK_REALTIME
constant TIMER_ABSTIME constant TIMER_ABSTIME
constant CLOCK_MONOTONIC constant CLOCK_MONOTONIC
type clock_t
type clockid_t type clockid_t
type size_t
type time_t
type timer_t type timer_t
#if defined XOPEN2K8 || defined POSIX2008 # if defined XOPEN2K8 || defined POSIX2008
type pid_t type pid_t
type locale_t type locale_t
tag {struct sigevent} tag {struct sigevent}
#endif # endif
#if !defined POSIX && !defined POSIX2008 # if !defined POSIX && !defined POSIX2008
variable int getdate_err variable int getdate_err
#endif # endif
function {char*} asctime (const struct tm*)
function {char*} asctime_r (const struct tm*, char*) function {char*} asctime_r (const struct tm*, char*)
function clock_t clock (void)
function int clock_getcpuclockid (pid_t, clockid_t*) function int clock_getcpuclockid (pid_t, clockid_t*)
function int clock_getres (clockid_t, struct timespec*) function int clock_getres (clockid_t, struct timespec*)
function int clock_gettime (clockid_t, struct timespec*) function int clock_gettime (clockid_t, struct timespec*)
function int clock_nanosleep (clockid_t, int, const struct timespec*, struct timespec*) function int clock_nanosleep (clockid_t, int, const struct timespec*, struct timespec*)
function int clock_settime (clockid_t, const struct timespec*) function int clock_settime (clockid_t, const struct timespec*)
function {char*} ctime (const time_t*)
function {char*} ctime_r (const time_t*, char*) function {char*} ctime_r (const time_t*, char*)
function double difftime (time_t, time_t) # if !defined POSIX && !defined POSIX2008
#if !defined POSIX && !defined POSIX2008
function {struct tm*} getdate (const char*) function {struct tm*} getdate (const char*)
#endif # endif
function {struct tm*} gmtime (const time_t*)
function {struct tm*} gmtime_r (const time_t*, struct tm*) function {struct tm*} gmtime_r (const time_t*, struct tm*)
function {struct tm*} localtime (const time_t*)
function {struct tm*} localtime_r (const time_t*, struct tm*) function {struct tm*} localtime_r (const time_t*, struct tm*)
function time_t mktime (struct tm*)
function int nanosleep (const struct timespec*, struct timespec*) function int nanosleep (const struct timespec*, struct timespec*)
function size_t strftime (char*, size_t, const char*, const struct tm*) # if defined XOPEN2K8 || defined POSIX2008
#if defined XOPEN2K8 || defined POSIX2008
function size_t strftime_l (char*, size_t, const char*, const struct tm*, locale_t) function size_t strftime_l (char*, size_t, const char*, const struct tm*, locale_t)
#endif # endif
#if !defined POSIX && !defined POSIX2008 # if !defined POSIX && !defined POSIX2008
function {char*} strptime (const char*, const char*, struct tm*) function {char*} strptime (const char*, const char*, struct tm*)
#endif # endif
function time_t time (time_t*)
function int timer_create (clockid_t, struct sigevent*, timer_t*) function int timer_create (clockid_t, struct sigevent*, timer_t*)
function int timer_delete (timer_t) function int timer_delete (timer_t)
function int timer_gettime (timer_t, struct itimerspec*) function int timer_gettime (timer_t, struct itimerspec*)
@ -83,10 +96,10 @@ function int timer_getoverrun (timer_t)
function int timer_settime (timer_t, int, const struct itimerspec*, struct itimerspec*) function int timer_settime (timer_t, int, const struct itimerspec*, struct itimerspec*)
function void tzset (void) function void tzset (void)
#if !defined POSIX && !defined POSIX2008 # if !defined POSIX && !defined POSIX2008
variable int daylight variable int daylight
variable {long int} timezone variable {long int} timezone
#endif # endif
variable {char*} tzname [2] variable {char*} tzname [2]
allow tm_* allow tm_*
@ -98,3 +111,4 @@ allow CLOCK_*
allow TIMER_* allow TIMER_*
allow *_t allow *_t
allow sigevent allow sigevent
#endif

12
conform/data/uchar.h-data Normal file
View File

@ -0,0 +1,12 @@
#if defined ISO11
type mbstate_t
type size_t
type char16_t
type char32_t
function size_t mbrtoc16 (char16_t *, const char *, size_t, mbstate_t *)
function size_t c16rtomb (char *, char16_t, mbstate_t *)16
function size_t mbrtoc32 (char32_t *, const char *, size_t, mbstate_t *)
function size_t c32rtomb (char *, char32_t, mbstate_t *)
#endif

View File

@ -1,3 +1,4 @@
#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX
type mcontext_t type mcontext_t
type ucontext_t type ucontext_t
@ -18,3 +19,4 @@ function int swapcontext (ucontext_t*, const ucontext_t*)
allow uc_* allow uc_*
allow ss_* allow ss_*
allow *_t allow *_t
#endif

View File

@ -1,4 +1,4 @@
#if !defined ISO && !defined POSIX && !defined POSIX2008 #if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
constant UL_GETFSIZE constant UL_GETFSIZE
constant UL_SETFSIZE constant UL_SETFSIZE

View File

@ -1,4 +1,4 @@
#ifndef ISO #if !defined ISO && !defined ISO99 && !defined ISO11
optional-constant _POSIX_VERSION optional-constant _POSIX_VERSION
optional-constant _POSIX2_C_VERSION optional-constant _POSIX2_C_VERSION
optional-constant _XOPEN_VERSION optional-constant _XOPEN_VERSION

View File

@ -1,3 +1,4 @@
#if !defined ISO && !defined ISO99 && !defined ISO11
type {struct utimbuf} type {struct utimbuf}
element {struct utimbuf} time_t actime element {struct utimbuf} time_t actime
@ -9,3 +10,4 @@ function int utime (const char*, const struct utimbuf*)
allow utim_* allow utim_*
allow *_t allow *_t
#endif

View File

@ -1,4 +1,4 @@
#if !defined ISO && !defined POSIX && !defined POSIX2008 #if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
type {struct utmpx} type {struct utmpx}
element {struct utmpx} char ut_user [] element {struct utmpx} char ut_user []

View File

@ -1,3 +1,4 @@
#if defined XPG3 || defined XPG4
macro va_alist macro va_alist
macro va_dcl macro va_dcl
type va_list type va_list
@ -6,3 +7,4 @@ macro va_arg
macro va_end macro va_end
allow *_t allow *_t
#endif

View File

@ -1,19 +1,24 @@
#if !defined ISO && !defined POSIX && !defined XPG3 && !defined XPG4
type wchar_t type wchar_t
type wint_t type wint_t
# if !defined ISO && !defined POSIX && !defined POSIX2008 # if !defined ISO99 && !defined ISO11 && !defined POSIX2008
type wctype_t type wctype_t
#endif # endif
type mbstate_t type mbstate_t
# if !defined ISO99 && !defined ISO11
type FILE type FILE
# else
# define FILE __FILE
# endif
type size_t type size_t
#if defined XOPEN2K8 || defined POSIX2008 # if defined XOPEN2K8 || defined POSIX2008
type locale_t type locale_t
#endif # endif
function wint_t btowc (int) function wint_t btowc (int)
function int fwprintf (FILE*, const wchar_t*, ...) function int fwprintf (FILE*, const wchar_t*, ...)
function int fwscanf (FILE*, const wchar_t*, ...) function int fwscanf (FILE*, const wchar_t*, ...)
#if !defined ISO && !defined POSIX && !defined POSIX2008 # if !defined ISO99 && !defined ISO11 && !defined POSIX2008
function int iswalnum (wint_t) function int iswalnum (wint_t)
function int iswalpha (wint_t) function int iswalpha (wint_t)
function int iswcntrl (wint_t) function int iswcntrl (wint_t)
@ -26,7 +31,7 @@ function int iswspace (wint_t)
function int iswupper (wint_t) function int iswupper (wint_t)
function int iswxdigit (wint_t) function int iswxdigit (wint_t)
function int iswctype (wint_t, wctype_t) function int iswctype (wint_t, wctype_t)
#endif # endif
function wint_t fgetwc (FILE*) function wint_t fgetwc (FILE*)
function {wchar_t*} fgetws (wchar_t*, int, FILE*) function {wchar_t*} fgetws (wchar_t*, int, FILE*)
function wint_t fputwc (wchar_t, FILE*) function wint_t fputwc (wchar_t, FILE*)
@ -37,21 +42,21 @@ function wint_t getwchar (void)
function int mbsinit (const mbstate_t*) function int mbsinit (const mbstate_t*)
function size_t mbrlen (const char*, size_t, mbstate_t*) function size_t mbrlen (const char*, size_t, mbstate_t*)
function size_t mbrtowc (wchar_t*, const char*, size_t, mbstate_t*) function size_t mbrtowc (wchar_t*, const char*, size_t, mbstate_t*)
#if defined XOPEN2K8 || defined POSIX2008 # if defined XOPEN2K8 || defined POSIX2008
function size_t mbsnrtowcs (wchar_t*, const char**, size_t, size_t, mbstate_t*) function size_t mbsnrtowcs (wchar_t*, const char**, size_t, size_t, mbstate_t*)
#endif # endif
function size_t mbsrtowcs (wchar_t*, const char**, size_t, mbstate_t*) function size_t mbsrtowcs (wchar_t*, const char**, size_t, mbstate_t*)
#if defined XOPEN2K8 || defined POSIX2008 # if defined XOPEN2K8 || defined POSIX2008
function {FILE*} open_wmemstream (wchar_t**, size_t*) function {FILE*} open_wmemstream (wchar_t**, size_t*)
#endif # endif
function wint_t putwc (wchar_t, FILE*) function wint_t putwc (wchar_t, FILE*)
function wint_t putwchar (wchar_t) function wint_t putwchar (wchar_t)
function int swprintf (wchar_t*, size_t, const wchar_t*, ...) function int swprintf (wchar_t*, size_t, const wchar_t*, ...)
function int swscanf (const wchar_t*, const wchar_t*, ...) function int swscanf (const wchar_t*, const wchar_t*, ...)
#if !defined ISO && !defined POSIX && !defined POSIX2008 # if !defined ISO99 && !defined ISO11 && !defined POSIX2008
function wint_t towlower (wint_t) function wint_t towlower (wint_t)
function wint_t towupper (wint_t) function wint_t towupper (wint_t)
#endif # endif
function wint_t ungetwc (wint_t, FILE*) function wint_t ungetwc (wint_t, FILE*)
function int vfwprintf (FILE*, const wchar_t*, __gnuc_va_list) function int vfwprintf (FILE*, const wchar_t*, __gnuc_va_list)
function int vfwscanf (FILE*, const wchar_t*, __gnuc_va_list) function int vfwscanf (FILE*, const wchar_t*, __gnuc_va_list)
@ -59,40 +64,40 @@ function int vwprintf (const wchar_t*, __gnuc_va_list)
function int vwscanf (const wchar_t*, __gnuc_va_list) function int vwscanf (const wchar_t*, __gnuc_va_list)
function int vswprintf (wchar_t*, size_t, const wchar_t*, __gnuc_va_list) function int vswprintf (wchar_t*, size_t, const wchar_t*, __gnuc_va_list)
function int vswscanf (const wchar_t*, const wchar_t*, __gnuc_va_list) function int vswscanf (const wchar_t*, const wchar_t*, __gnuc_va_list)
#if defined XOPEN2K8 || defined POSIX2008 # if defined XOPEN2K8 || defined POSIX2008
function {wchar_t*} wcpcpy (wchar_t*, const wchar_t*) function {wchar_t*} wcpcpy (wchar_t*, const wchar_t*)
function {wchar_t*} wcpncpy (wchar_t*, const wchar_t*, size_t) function {wchar_t*} wcpncpy (wchar_t*, const wchar_t*, size_t)
#endif # endif
function size_t wcrtomb (char*, wchar_t, mbstate_t*) function size_t wcrtomb (char*, wchar_t, mbstate_t*)
#if defined XOPEN2K8 || defined POSIX2008 # if defined XOPEN2K8 || defined POSIX2008
function int wcscasecmp(const wchar_t*, const wchar_t*) function int wcscasecmp(const wchar_t*, const wchar_t*)
function int wcscasecmp_l(const wchar_t*, const wchar_t*, locale_t) function int wcscasecmp_l(const wchar_t*, const wchar_t*, locale_t)
#endif # endif
function {wchar_t*} wcscat (wchar_t*, const wchar_t*) function {wchar_t*} wcscat (wchar_t*, const wchar_t*)
function {wchar_t*} wcschr (const wchar_t*, wchar_t) function {wchar_t*} wcschr (const wchar_t*, wchar_t)
function int wcscmp (const wchar_t*, const wchar_t*) function int wcscmp (const wchar_t*, const wchar_t*)
function int wcscoll (const wchar_t*, const wchar_t*) function int wcscoll (const wchar_t*, const wchar_t*)
#if defined XOPEN2K8 || defined POSIX2008 # if defined XOPEN2K8 || defined POSIX2008
function int wcscoll_l (const wchar_t*, const wchar_t*, locale_t) function int wcscoll_l (const wchar_t*, const wchar_t*, locale_t)
#endif # endif
function {wchar_t*} wcscpy (wchar_t*, const wchar_t*) function {wchar_t*} wcscpy (wchar_t*, const wchar_t*)
function size_t wcscspn (const wchar_t*, const wchar_t*) function size_t wcscspn (const wchar_t*, const wchar_t*)
#if defined XOPEN2K8 || defined POSIX2008 # if defined XOPEN2K8 || defined POSIX2008
function {wchar_t*} wcsdup (const wchar_t*) function {wchar_t*} wcsdup (const wchar_t*)
#endif # endif
function size_t wcsftime (wchar_t*, size_t, const wchar_t*, const struct tm*) function size_t wcsftime (wchar_t*, size_t, const wchar_t*, const struct tm*)
function size_t wcslen (const wchar_t*) function size_t wcslen (const wchar_t*)
#if defined XOPEN2K8 || defined POSIX2008 # if defined XOPEN2K8 || defined POSIX2008
function int wcsncasecmp (const wchar_t*, const wchar_t*, size_t) function int wcsncasecmp (const wchar_t*, const wchar_t*, size_t)
function int wcsncasecmp_l (const wchar_t*, const wchar_t*, size_t, locale_t) function int wcsncasecmp_l (const wchar_t*, const wchar_t*, size_t, locale_t)
#endif # endif
function {wchar_t*} wcsncat (wchar_t*, const wchar_t*, size_t) function {wchar_t*} wcsncat (wchar_t*, const wchar_t*, size_t)
function int wcsncmp (const wchar_t*, const wchar_t*, size_t) function int wcsncmp (const wchar_t*, const wchar_t*, size_t)
function {wchar_t*} wcsncpy (wchar_t*, const wchar_t*, size_t) function {wchar_t*} wcsncpy (wchar_t*, const wchar_t*, size_t)
#if defined XOPEN2K8 || defined POSIX2008 # if defined XOPEN2K8 || defined POSIX2008
function size_t wcsnlen (const wchar_t*, size_t) function size_t wcsnlen (const wchar_t*, size_t)
function size_t wcsnrtombs (char*, const wchar_t**, size_t, size_t, mbstate_t*) function size_t wcsnrtombs (char*, const wchar_t**, size_t, size_t, mbstate_t*)
#endif # endif
function {wchar_t*} wcspbrk (const wchar_t*, const wchar_t*) function {wchar_t*} wcspbrk (const wchar_t*, const wchar_t*)
function {wchar_t*} wcsrchr (const wchar_t*, wchar_t) function {wchar_t*} wcsrchr (const wchar_t*, wchar_t)
function size_t wcsrtombs (char*, const wchar_t**, size_t, mbstate_t*) function size_t wcsrtombs (char*, const wchar_t**, size_t, mbstate_t*)
@ -102,21 +107,21 @@ function double wcstod (const wchar_t*, wchar_t**)
function {wchar_t*} wcstok (wchar_t*, const wchar_t*, wchar_t**) function {wchar_t*} wcstok (wchar_t*, const wchar_t*, wchar_t**)
function {long int} wcstol (const wchar_t*, wchar_t**, int) function {long int} wcstol (const wchar_t*, wchar_t**, int)
function {unsigned long int} wcstoul (const wchar_t*, wchar_t**, int) function {unsigned long int} wcstoul (const wchar_t*, wchar_t**, int)
#if defined UNIX98 || defined XOPEN2K # if defined UNIX98 || defined XOPEN2K
function {wchar_t*} wcswcs (const wchar_t*, const wchar_t*) function {wchar_t*} wcswcs (const wchar_t*, const wchar_t*)
#endif # endif
#if !defined ISO && !defined POSIX && !defined POSIX2008 # if !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
function int wcswidth (const wchar_t*, size_t) function int wcswidth (const wchar_t*, size_t)
#endif # endif
function size_t wcsxfrm (wchar_t*, const wchar_t*, size_t) function size_t wcsxfrm (wchar_t*, const wchar_t*, size_t)
#if defined XOPEN2K8 || defined POSIX2008 # if defined XOPEN2K8 || defined POSIX2008
function size_t wcsxfrm_l (wchar_t*, const wchar_t*, size_t, locale_t) function size_t wcsxfrm_l (wchar_t*, const wchar_t*, size_t, locale_t)
#endif # endif
function int wctob (wint_t) function int wctob (wint_t)
#if !defined ISO && !defined POSIX && !defined POSIX2008 # if !defined ISO99 && !defined ISO11 && !defined POSIX2008
function wctype_t wctype (const char*) function wctype_t wctype (const char*)
function int wcwidth (wchar_t) function int wcwidth (wchar_t)
#endif # endif
function {wchar_t*} wmemchr (const wchar_t*, wchar_t, size_t) function {wchar_t*} wmemchr (const wchar_t*, wchar_t, size_t)
function int wmemcmp (const wchar_t*, const wchar_t*, size_t) function int wmemcmp (const wchar_t*, const wchar_t*, size_t)
function {wchar_t*} wmemcpy (wchar_t*, const wchar_t*, size_t) function {wchar_t*} wmemcpy (wchar_t*, const wchar_t*, size_t)
@ -140,3 +145,4 @@ allow-header time.h
allow wcs* allow wcs*
allow *_t allow *_t
#endif

View File

@ -1,9 +1,10 @@
#if !defined ISO && !defined POSIX && !defined XPG3 && !defined XPG4
type wint_t type wint_t
type wctrans_t type wctrans_t
type wctype_t type wctype_t
#if defined XOPEN2K8 || defined POSIX2008 # if defined XOPEN2K8 || defined POSIX2008
type locale_t type locale_t
#endif # endif
function int iswalnum (wint_t) function int iswalnum (wint_t)
function int iswalpha (wint_t) function int iswalpha (wint_t)
@ -22,7 +23,7 @@ function wint_t towlower (wint_t)
function wint_t towupper (wint_t) function wint_t towupper (wint_t)
function wctrans_t wctrans (const char*) function wctrans_t wctrans (const char*)
function wctype_t wctype (const char*) function wctype_t wctype (const char*)
#if defined XOPEN2K8 || defined POSIX2008 # if defined XOPEN2K8 || defined POSIX2008
function int iswalnum_l (wint_t, locale_t) function int iswalnum_l (wint_t, locale_t)
function int iswalpha_l (wint_t, locale_t) function int iswalpha_l (wint_t, locale_t)
function int iswcntrl_l (wint_t, locale_t) function int iswcntrl_l (wint_t, locale_t)
@ -40,7 +41,7 @@ function wint_t towlower_l (wint_t, locale_t)
function wint_t towupper_l (wint_t, locale_t) function wint_t towupper_l (wint_t, locale_t)
function wctrans_t wctrans_l (const char*, locale_t) function wctrans_t wctrans_l (const char*, locale_t)
function wctype_t wctype_l (const char*, locale_t) function wctype_t wctype_l (const char*, locale_t)
#endif # endif
macro WEOF macro WEOF
@ -56,3 +57,4 @@ allow-header wchar.h
allow is* allow is*
allow to* allow to*
allow *_t allow *_t
#endif

View File

@ -1,3 +1,4 @@
#if !defined ISO && !defined ISO99 && !defined ISO11
type wordexp_t type wordexp_t
element wordexp_t size_t we_wordc element wordexp_t size_t we_wordc
@ -14,9 +15,9 @@ constant WRDE_UNDEF
constant WRDE_BADCHAR constant WRDE_BADCHAR
constant WRDE_CMDSUB constant WRDE_CMDSUB
constant WRDE_NOSPACE constant WRDE_NOSPACE
#if !defined XOPEN2K8 && !defined POSIX2008 # if !defined POSIX && !defined XOPEN2K8 && !defined POSIX2008
constant WRDE_NOSYS constant WRDE_NOSYS
#endif # endif
constant WRDE_SYNTAX constant WRDE_SYNTAX
function int wordexp (const char*, wordexp_t*, int) function int wordexp (const char*, wordexp_t*, int)
@ -25,3 +26,4 @@ function void wordfree (wordexp_t*)
allow WRDE_* allow WRDE_*
allow we_* allow we_*
allow *_t allow *_t
#endif

View File

@ -0,0 +1,30 @@
#! /bin/sh
objpfx="$1"
perl="$2"
cc="$3"
includes="$4"
standards=("ISO" "ISO99" "ISO11" "POSIX" "XPG3" "XPG4" "UNIX98"
"XOPEN2K" "XOPEN2K8" "POSIX2008")
standards=("POSIX" "XPG3" "XPG4" "UNIX98"
"XOPEN2K" "XOPEN2K8" "POSIX2008")
exitval=0
> ${objpfx}run-conformtest.out
for s in ${standards[*]}; do
echo -n $s...
e=0
if ! $perl conformtest.pl --cc="$cc" --flags="$includes" --standard=$s > ${objpfx}conform-$s.out; then
e=1
fi
printf "\n%s\n" $s >> ${objpfx}run-conformtest.out
tail -n 4 ${objpfx}conform-$s.out >> ${objpfx}run-conformtest.out
echo
if [ $e -ne 0 ]; then
tail -n 3 ${objpfx}conform-$s.out
exitval=1
fi
done
exit $exitval

View File

@ -1,6 +1,7 @@
#ifndef _AIO_H #ifndef _AIO_H
#include <rt/aio.h> #include <rt/aio.h>
#ifndef _ISOMAC
/* Now define the internal interfaces. */ /* Now define the internal interfaces. */
extern void __aio_init (const struct aioinit *__init); extern void __aio_init (const struct aioinit *__init);
@ -8,5 +9,6 @@ extern void __aio_init (const struct aioinit *__init);
lio_listio and we do not issue events for each individual list lio_listio and we do not issue events for each individual list
element. */ element. */
#define LIO_NO_INDIVIDUAL_EVENT 128 #define LIO_NO_INDIVIDUAL_EVENT 128
#endif
#endif #endif

View File

@ -1,5 +1,6 @@
#include <assert/assert.h> #include <assert/assert.h>
#ifndef _ISOMAC
/* This prints an "Assertion failed" message and aborts. /* This prints an "Assertion failed" message and aborts.
In installed assert.h this is only conditionally declared, In installed assert.h this is only conditionally declared,
so it has to be repeated here. */ so it has to be repeated here. */
@ -19,7 +20,8 @@ extern void __assert_fail_base (const char *fmt, const char *assertion,
const char *function) const char *function)
__THROW __attribute__ ((__noreturn__)); __THROW __attribute__ ((__noreturn__));
#if !defined NOT_IN_libc || defined IS_IN_rtld # if !defined NOT_IN_libc || defined IS_IN_rtld
hidden_proto (__assert_fail) hidden_proto (__assert_fail)
hidden_proto (__assert_perror_fail) hidden_proto (__assert_perror_fail)
# endif
#endif #endif

View File

@ -1,5 +1,6 @@
#ifndef _CTYPE_H #ifndef _CTYPE_H
#ifndef _ISOMAC
/* Initialize ctype locale data. */ /* Initialize ctype locale data. */
extern void __ctype_init (void); extern void __ctype_init (void);
libc_hidden_proto (__ctype_init) libc_hidden_proto (__ctype_init)
@ -46,9 +47,11 @@ __ctype_tolower_loc (void)
} }
# endif /* Not NOT_IN_libc. */ # endif /* Not NOT_IN_libc. */
#endif
# include <ctype/ctype.h> #include <ctype/ctype.h>
#ifndef _ISOMAC
# if !defined __NO_CTYPE && !defined NOT_IN_libc # if !defined __NO_CTYPE && !defined NOT_IN_libc
/* The spec says that isdigit must only match the decimal digits. We /* The spec says that isdigit must only match the decimal digits. We
can check this without a memory access. */ can check this without a memory access. */
@ -59,5 +62,6 @@ __ctype_tolower_loc (void)
# undef __isdigit_l # undef __isdigit_l
# define __isdigit_l(c, l) ({ int __c = (c); __c >= '0' && __c <= '9'; }) # define __isdigit_l(c, l) ({ int __c = (c); __c >= '0' && __c <= '9'; })
# endif # endif
#endif
#endif /* ctype.h */ #endif /* ctype.h */

View File

@ -1,6 +1,7 @@
#ifndef _DIRENT_H #ifndef _DIRENT_H
# include <dirstream.h>
# include <dirent/dirent.h> # include <dirent/dirent.h>
# ifndef _ISOMAC
# include <dirstream.h>
# include <sys/stat.h> # include <sys/stat.h>
# include <stdbool.h> # include <stdbool.h>
@ -44,5 +45,6 @@ extern void __scandir_cancel_handler (void *arg);
libc_hidden_proto (rewinddir) libc_hidden_proto (rewinddir)
libc_hidden_proto (scandirat) libc_hidden_proto (scandirat)
libc_hidden_proto (scandirat64) libc_hidden_proto (scandirat64)
# endif
#endif #endif

View File

@ -1,5 +1,6 @@
#ifndef _DLFCN_H #ifndef _DLFCN_H
#include <dlfcn/dlfcn.h> #include <dlfcn/dlfcn.h>
#ifndef _ISOMAC
#include <link.h> /* For ElfW. */ #include <link.h> /* For ElfW. */
#include <stdbool.h> #include <stdbool.h>
@ -146,5 +147,6 @@ extern void __libc_register_dl_open_hook (struct link_map *map)
extern void __libc_register_dlfcn_hook (struct link_map *map) extern void __libc_register_dlfcn_hook (struct link_map *map)
attribute_hidden; attribute_hidden;
#endif #endif
#endif
#endif #endif

View File

@ -1,6 +1,7 @@
#ifndef _FCNTL_H #ifndef _FCNTL_H
#include <io/fcntl.h> #include <io/fcntl.h>
#ifndef _ISOMAC
/* Now define the internal interfaces. */ /* Now define the internal interfaces. */
extern int __open64 (const char *__file, int __oflag, ...); extern int __open64 (const char *__file, int __oflag, ...);
libc_hidden_proto (__open64) libc_hidden_proto (__open64)
@ -44,5 +45,6 @@ extern int __have_atfcts attribute_hidden;
#ifdef O_CLOEXEC #ifdef O_CLOEXEC
extern int __have_o_cloexec attribute_hidden; extern int __have_o_cloexec attribute_hidden;
#endif #endif
#endif
#endif #endif

View File

@ -2,6 +2,8 @@
#include <posix/fnmatch.h> #include <posix/fnmatch.h>
#ifndef _ISOMAC
libc_hidden_proto (fnmatch) libc_hidden_proto (fnmatch)
#endif
#endif #endif

View File

@ -1,6 +1,7 @@
#ifndef _GLOB_H #ifndef _GLOB_H
#include <posix/glob.h> #include <posix/glob.h>
#ifndef _ISOMAC
libc_hidden_proto (glob) libc_hidden_proto (glob)
libc_hidden_proto (glob64) libc_hidden_proto (glob64)
libc_hidden_proto (globfree) libc_hidden_proto (globfree)
@ -11,5 +12,6 @@ extern int __glob_pattern_p (const char *__pattern, int __quote);
extern int __glob64 (const char *__pattern, int __flags, extern int __glob64 (const char *__pattern, int __flags,
int (*__errfunc) (const char *, int), int (*__errfunc) (const char *, int),
glob64_t *__pglob); glob64_t *__pglob);
#endif
#endif #endif

View File

@ -1,6 +1,7 @@
#ifndef _GRP_H #ifndef _GRP_H
#include <grp/grp.h> #include <grp/grp.h>
#ifndef _ISOMAC
libc_hidden_proto (setgroups) libc_hidden_proto (setgroups)
/* Now define the internal interfaces. */ /* Now define the internal interfaces. */
@ -60,3 +61,4 @@ DECLARE_NSS_PROTOTYPES (nisplus)
#undef DECLARE_NSS_PROTOTYPES #undef DECLARE_NSS_PROTOTYPES
#endif #endif
#endif

View File

@ -1,5 +1,6 @@
#include <libio/libio.h> #include <libio/libio.h>
#ifndef _ISOMAC
#ifndef _LIBC_LIBIO_H #ifndef _LIBC_LIBIO_H
#define _LIBC_LIBIO_H #define _LIBC_LIBIO_H
@ -22,3 +23,4 @@ libc_hidden_proto (__wuflow)
#endif #endif
#endif #endif
#endif

View File

@ -1,6 +1,7 @@
#ifndef _LOCALE_H #ifndef _LOCALE_H
#include <locale/locale.h> #include <locale/locale.h>
#ifndef _ISOMAC
extern __typeof (uselocale) __uselocale; extern __typeof (uselocale) __uselocale;
libc_hidden_proto (setlocale) libc_hidden_proto (setlocale)
@ -22,3 +23,4 @@ extern struct lconv *__localeconv (void);
extern const char *__current_locale_name (int category) attribute_hidden; extern const char *__current_locale_name (int category) attribute_hidden;
#endif #endif
#endif

View File

@ -2,6 +2,7 @@
#include <math/math.h> #include <math/math.h>
#ifndef _ISOMAC
/* Now define the internal interfaces. */ /* Now define the internal interfaces. */
extern int __matherr (struct exception *__exc); extern int __matherr (struct exception *__exc);
@ -36,3 +37,4 @@ extern int __isinf_nsf (float);
extern int __isinf_nsl (long double); extern int __isinf_nsl (long double);
#endif #endif
#endif

View File

@ -2,9 +2,11 @@
# include_next <net/if.h> # include_next <net/if.h>
#ifndef _ISOMAC
libc_hidden_proto (if_nametoindex) libc_hidden_proto (if_nametoindex)
libc_hidden_proto (if_indextoname) libc_hidden_proto (if_indextoname)
libc_hidden_proto (if_nameindex) libc_hidden_proto (if_nameindex)
libc_hidden_proto (if_freenameindex) libc_hidden_proto (if_freenameindex)
#endif
#endif #endif

View File

@ -1,6 +1,7 @@
#ifndef _NETDB_H #ifndef _NETDB_H
#include <resolv/netdb.h> #include <resolv/netdb.h>
#ifndef _ISOMAC
/* Macros for accessing h_errno from inside libc. */ /* Macros for accessing h_errno from inside libc. */
# undef h_errno # undef h_errno
# ifdef _LIBC_REENTRANT # ifdef _LIBC_REENTRANT
@ -280,5 +281,6 @@ DECLARE_NSS_PROTOTYPES (nis)
DECLARE_NSS_PROTOTYPES (nisplus) DECLARE_NSS_PROTOTYPES (nisplus)
#undef DECLARE_NSS_PROTOTYPES #undef DECLARE_NSS_PROTOTYPES
#endif
#endif /* !_NETDB_H */ #endif /* !_NETDB_H */

View File

@ -2,8 +2,10 @@
#include <inet/netinet/in.h> #include <inet/netinet/in.h>
#ifndef _ISOMAC
libc_hidden_proto (bindresvport) libc_hidden_proto (bindresvport)
libc_hidden_proto (in6addr_loopback) libc_hidden_proto (in6addr_loopback)
libc_hidden_proto (in6addr_any) libc_hidden_proto (in6addr_any)
#endif
#endif #endif

View File

@ -1,4 +1,6 @@
#include_next <pthread.h> #include_next <pthread.h>
#ifndef _ISOMAC
/* This function is called to initialize the pthread library. */ /* This function is called to initialize the pthread library. */
extern void __pthread_initialize (void) __attribute__ ((weak)); extern void __pthread_initialize (void) __attribute__ ((weak));
#endif

View File

@ -1,6 +1,7 @@
#ifndef _PWD_H #ifndef _PWD_H
#include <pwd/pwd.h> #include <pwd/pwd.h>
#ifndef _ISOMAC
/* Now define the internal interfaces. */ /* Now define the internal interfaces. */
extern int __getpwent_r (struct passwd *__resultbuf, char *__buffer, extern int __getpwent_r (struct passwd *__resultbuf, char *__buffer,
size_t __buflen, struct passwd **__result) size_t __buflen, struct passwd **__result)
@ -51,5 +52,6 @@ DECLARE_NSS_PROTOTYPES (nis)
DECLARE_NSS_PROTOTYPES (nisplus) DECLARE_NSS_PROTOTYPES (nisplus)
#undef DECLARE_NSS_PROTOTYPES #undef DECLARE_NSS_PROTOTYPES
#endif
#endif #endif

View File

@ -1,6 +1,7 @@
#ifndef _REGEX_H #ifndef _REGEX_H
#include <posix/regex.h> #include <posix/regex.h>
#ifndef _ISOMAC
/* Document internal interfaces. */ /* Document internal interfaces. */
extern reg_syntax_t __re_set_syntax (reg_syntax_t syntax); extern reg_syntax_t __re_set_syntax (reg_syntax_t syntax);
@ -41,3 +42,4 @@ extern size_t __regerror (int __errcode, const regex_t *__preg,
extern void __regfree (regex_t *__preg); extern void __regfree (regex_t *__preg);
#endif #endif
#endif

Some files were not shown because too many files have changed in this diff Show More