typedef comparision table
[musl-tables] / inctags.sh
1 #!/bin/sh
2
3 export LC_ALL=C
4
5 dotags() {
6 (
7         cd $1
8 #       ctags -f /tmp/inc.tags -R -n -u --language-force=c --c-kinds=pxdstuv --fields=k --exclude='*.sh' --exclude .
9         ctags -f /tmp/inc.tags -R -n -u --links=no --langmap='c:.c.h' --languages=c --c-kinds=pxdstuv --fields=k --exclude='*.c' .
10 #       # fix wchar_t bug of ctags
11 #       awk '/typedef.* wchar_t/{print "wchar_t\tbits/alltypes.h\t" NR ";\"\tt"}' bits/alltypes.h >>/tmp/musl.tags
12 )
13 awk -v path=$1/ '
14 BEGIN {
15         FS="\t"
16 }
17 function proto(t,h,n) {
18         cmd = "awk '\''NR==" n
19         if (t == "p")
20                 cmd = cmd "{s=$0; if(s!~/;/){getline; s=s \" \" $0} print s; exit}"
21         else if (t == "d")
22                 cmd = cmd "{s=$0; while(gsub(/\\\\$/,\"\",s)){getline; s=s $0} print s; exit}"
23         else
24                 return ""
25         cmd = cmd "'\'' " path h
26         cmd | getline s
27         close(cmd)
28         gsub(/\t/, " ", s)
29         gsub(/ +/, " ", s)
30         return s
31 }
32 /^[^!]/ {
33         gsub(/[^0-9]*/,"",$3)
34         if ($4 == "s")
35                 $1 = "struct " $1
36         if ($4 == "u")
37                 $1 = "union " $1
38         print $1 "\t" $2 "\t" $4 "\t" $3 "\t" proto($4,$2,$3)
39 }' /tmp/inc.tags |sort
40 rm -f /tmp/inc.tags
41 }
42
43 dotags ../../lang/c/glibc >data/glibc.inc.tags
44 dotags ../musl >data/musl.inc.tags