more precise header errors
authornsz <nsz@port70.net>
Wed, 14 Sep 2011 13:04:15 +0000 (15:04 +0200)
committernsz <nsz@port70.net>
Wed, 14 Sep 2011 13:04:15 +0000 (15:04 +0200)
data/musl.problems
findproblems.sh

index 89fd900..dd00d54 100644 (file)
@@ -2,7 +2,6 @@ nodecl  cfmakeraw       T
 nodecl cfsetspeed      W
 nodecl clearerr_unlocked       W
 nodecl crypt_r W
 nodecl cfsetspeed      W
 nodecl clearerr_unlocked       W
 nodecl crypt_r W
-header ctermid unistd.h        stdio.h
 nodecl daemon  T
 nodecl dst_offset      V
 proto  encrypt unistd.h        void(char*,int) void(char[],int)        void encrypt(char *, int);      void encrypt(char block[64], int edflag);
 nodecl daemon  T
 nodecl dst_offset      V
 proto  encrypt unistd.h        void(char*,int) void(char[],int)        void encrypt(char *, int);      void encrypt(char block[64], int edflag);
@@ -23,15 +22,12 @@ header      getopt  getopt.h        unistd.h
 nodecl getw    T
 nodecl getwc_unlocked  W
 nodecl getwchar_unlocked       W
 nodecl getw    T
 nodecl getwc_unlocked  W
 nodecl getwchar_unlocked       W
-header htonl   netinet/in.h    arpa/inet.h
-header htons   netinet/in.h    arpa/inet.h
 header iswalnum        wchar.h wctype.h
 header iswalpha        wchar.h wctype.h
 header iswblank        wchar.h wctype.h
 header iswcntrl        wchar.h wctype.h
 header iswctype        wchar.h wctype.h
 header iswdigit        wchar.h wctype.h
 header iswalnum        wchar.h wctype.h
 header iswalpha        wchar.h wctype.h
 header iswblank        wchar.h wctype.h
 header iswcntrl        wchar.h wctype.h
 header iswctype        wchar.h wctype.h
 header iswdigit        wchar.h wctype.h
-header iswdigit        wchar.h wctype.h
 header iswgraph        wchar.h wctype.h
 header iswlower        wchar.h wctype.h
 header iswprint        wchar.h wctype.h
 header iswgraph        wchar.h wctype.h
 header iswlower        wchar.h wctype.h
 header iswprint        wchar.h wctype.h
@@ -39,8 +35,6 @@ header        iswpunct        wchar.h wctype.h
 header iswspace        wchar.h wctype.h
 header iswupper        wchar.h wctype.h
 header iswxdigit       wchar.h wctype.h
 header iswspace        wchar.h wctype.h
 header iswupper        wchar.h wctype.h
 header iswxdigit       wchar.h wctype.h
-header ntohl   netinet/in.h    arpa/inet.h
-header ntohs   netinet/in.h    arpa/inet.h
 header optarg  getopt.h        unistd.h
 header opterr  getopt.h        unistd.h
 header optind  getopt.h        unistd.h
 header optarg  getopt.h        unistd.h
 header opterr  getopt.h        unistd.h
 header optind  getopt.h        unistd.h
@@ -59,9 +53,5 @@ header        strcasecmp      string.h        strings.h
 header strncasecmp     string.h        strings.h
 header towlower        wchar.h wctype.h
 header towupper        wchar.h wctype.h
 header strncasecmp     string.h        strings.h
 header towlower        wchar.h wctype.h
 header towupper        wchar.h wctype.h
-header va_arg  bits/stdarg.h   stdarg.h
-header va_copy bits/stdarg.h   stdarg.h
-header va_end  bits/stdarg.h   stdarg.h
-header va_start        bits/stdarg.h   stdarg.h
 header wcrtomb wchar.h stdio.h
 header wctype  wchar.h wctype.h
 header wcrtomb wchar.h stdio.h
 header wctype  wchar.h wctype.h
index f90c1ce..283fcf3 100755 (executable)
@@ -46,6 +46,10 @@ BEGIN {
 }' >data/musl.all
 
 awk -F'\t' '
 }' >data/musl.all
 
 awk -F'\t' '
+herr && lastid != $1 {
+       print herr
+       herr = ""
+}
 $2 == "obj" || $2 == "obj posix" {
        # not declared
        if ($1 !~ /^_/)
 $2 == "obj" || $2 == "obj posix" {
        # not declared
        if ($1 !~ /^_/)
@@ -61,18 +65,29 @@ $2 ~ /inc/ && $5 == "p" {
                head[$1] = $4
        }
 }
                head[$1] = $4
        }
 }
-$2 ~ /inc posix/ && $4 != $8 {
+$2 ~ /inc posix/ && $4 == $8 {
+       head[$1] = $4
+}
+$2 ~ /inc posix/ && head[$1] != $8 && $4 !~ /^bits\// {
        # different header
        n = split($8, a, " ")
        for (i = 1; i <= n; i++)
                if ($4 == a[i])
                        break
        if (i > n)
        # different header
        n = split($8, a, " ")
        for (i = 1; i <= n; i++)
                if ($4 == a[i])
                        break
        if (i > n)
-               print "header\t" $1 "\t" $4 "\t" $8
+               # delay error msg
+               herr = "header\t" $1 "\t" $4 "\t" $8
 }
 $2 ~ /inc posix/ && $7 != $10 && $5 == "p" {
        # different prototype
        print "proto\t" $1 "\t" $4 "\t" $7 "\t" $10 "\t" $6 "\t" $9
 }
 }
 $2 ~ /inc posix/ && $7 != $10 && $5 == "p" {
        # different prototype
        print "proto\t" $1 "\t" $4 "\t" $7 "\t" $10 "\t" $6 "\t" $9
 }
+{
+       lastid = $1
+}
+END{
+       if(herr)
+               print herr
+}
 ' data/musl.all >data/musl.problems
 
 ' data/musl.all >data/musl.problems