abi.cc -> abi_type.cc
[musl-tools.git] / maketagssrc.sh
blob1fa4165f4462352ffe17ae0819670ae8f421f949
1 #!/bin/sh
3 export LC_ALL=C
4 MUSL=${MUSL:-../musl}
7 cd $MUSL/src
8 # ctags -f /tmp/musl.tags -R -n -u --language-force=c --c-kinds=pxdstuf --fields=k --exclude='*.sh' --exclude='*o' --exclude='*.s' .
9 ctags -f /tmp/musl.tags -R -n -u --language-force=c --c-kinds=xtf --fields=k --exclude='*.sh' --exclude='*.o' --exclude='*.lo' --exclude='*.s' .
12 awk -v src=$MUSL/src/ '
13 BEGIN {
14 FS="\t"
16 function proto(t,f,n) {
17 if (t == "f" && n > 1)
18 n--
19 cmd = "awk '\''NR==" n
20 if (t == "p")
21 cmd = cmd "{s=$0; if(s!~/;/){getline; s=s \" \" $0} print s; exit}"
22 else if (t == "f") {
23 cmd = cmd "{s=$0; sub(/^#.*/,\"\",s); sub(/^}/,\"\",s); gsub(/\\/\\/.*/,\"\",s); gsub(/.*\\*\\//,\"\",s);"
24 cmd = cmd "while(s!~/{/){getline; s=s \" \" $0} sub(/ *{.*$/,\"\",s); print s; exit}"
25 } else if (t == "d")
26 cmd = cmd "{s=$0; while(gsub(/\\\\$/,\"\",s)){getline; s=s $0} print s; exit}"
27 else
28 return ""
29 cmd = cmd "'\'' " src f
30 cmd | getline s
31 close(cmd)
32 gsub(/\t/, " ", s)
33 gsub(/ +/, " ", s)
34 sub(/^ /,"",s)
35 return s
37 /^[^!]/ {
38 gsub(/[^0-9]*/,"",$3)
39 if ($4 == "s")
40 $1 = "struct " $1
41 if ($4 == "u")
42 $1 = "union " $1
43 p = proto($4,$2,$3)
44 if ($4 != "f" || p !~ /static/)
45 print $1 "\t" $2 "\t" $4 "\t" $3 "\t" p
46 }' /tmp/musl.tags |sort >data/musl.src.tags
47 rm -f /tmp/musl.tags