5 # drop names from a declaration (hack to make prototypes comparable)
8 # builtin type specifiers/qualifiers..
9 s = "void char short int long float double signed unsigned _Bool _Complex bool complex"
10 s = s " static extern auto register inline const volatile restrict"
11 # typedef names in posix without _t
12 s = s " FILE DIR VISIT ENTRY ACTION DBM datum fd_set jmp_buf sigjmp_buf va_list nl_item nl_catd"
13 s = s " scalar real-floating" # used in macros
19 split("struct union enum", a)
23 # todo: drop restrict for now
28 if (tok ~ /^[a-zA-Z_]/) {
39 gsub(/\/\*[^/]*\*\//, "")
42 gsub(/[^a-zA-Z0-9_.-]/," & ")
47 for (i = 1; i <= NF; i++) {
50 if ($i ~ /[a-zA-Z_][a-zA-Z0-9_]*/ && !tok[$i] && $i !~ /_t$/)
53 if (tok[$i] == "struct") {
60 gsub(/\[[0-9]+\]/, "[]", s)
61 gsub(/unsigned int/, "unsigned", s)
62 gsub(/long int/, "long", s)