abi.sh changes
[musl-tools.git] / inctags.sh
bloba91a2c0e86c22c097cb7d1df189fe58c67e0392f
1 #!/bin/sh
3 export LC_ALL=C
5 dotags() {
7 cd $1
8 ctags -f /tmp/inc.tags -R -n -u --links=no --languages='c,c++' --c-kinds=pxdstuve --fields=k --exclude='*.c' .
10 awk -v path=$1/ '
11 BEGIN {
12 FS="\t"
14 function proto(t,h,n) {
15 cmd = "awk '\''NR==" n
16 if (t == "p")
17 cmd = cmd "{s=$0; if(s!~/;/){getline; s=s \" \" $0} print s; exit}"
18 else if (t == "d")
19 cmd = cmd "{s=$0; while(gsub(/\\\\$/,\"\",s)){getline; s=s $0} print s; exit}"
20 else
21 return ""
22 cmd = cmd "'\'' " path h
23 cmd | getline s
24 close(cmd)
25 gsub(/\t/, " ", s)
26 gsub(/ +/, " ", s)
27 return s
29 /^[^!]/ {
30 gsub(/[^0-9]*/,"",$3)
31 if ($4 == "s")
32 $1 = "struct " $1
33 if ($4 == "u")
34 $1 = "union " $1
35 print $1 "\t" $2 "\t" $4 "\t" $3 "\t" proto($4,$2,$3)
36 }' /tmp/inc.tags |sort
37 rm -f /tmp/inc.tags
40 dotags ../../lang/c/glibc >data/glibc.inc.tags
41 dotags ../musl >data/musl.inc.tags