X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=inctags.sh;fp=inctags.sh;h=c4c927d15df2850a14f3bf3e65a13c3fd0c51d0c;hb=f8b663f0db56e2c3bb6222d394d99a67036146fa;hp=0000000000000000000000000000000000000000;hpb=0462d43dcb902f63c41ef6fa32eb1ebf362dd4da;p=musl-tables diff --git a/inctags.sh b/inctags.sh new file mode 100755 index 0000000..c4c927d --- /dev/null +++ b/inctags.sh @@ -0,0 +1,44 @@ +#!/bin/sh + +export LC_ALL=C + +dotags() { +( + cd $1 +# ctags -f /tmp/inc.tags -R -n -u --language-force=c --c-kinds=pxdstuv --fields=k --exclude='*.sh' --exclude . + ctags -f /tmp/inc.tags -R -n -u --links=no --langmap='c:.c.h' --languages=c --c-kinds=pxdstuv --fields=k --exclude='*.c' . +# # fix wchar_t bug of ctags +# awk '/typedef.* wchar_t/{print "wchar_t\tbits/alltypes.h\t" NR ";\"\tt"}' bits/alltypes.h >>/tmp/musl.tags +) +awk -v path=$1/ ' +BEGIN { + FS="\t" +} +function proto(t,h,n) { + cmd = "awk '\''NR==" n + if (t == "p") + cmd = cmd "{s=$0; if(s!~/;/){getline; s=s \" \" $0} print s; exit}" + else if (t == "d") + cmd = cmd "{s=$0; while(gsub(/\\\\$/,\"\",s)){getline; s=s $0} print s; exit}" + else + return "" + cmd = cmd "'\'' " path h + cmd | getline s + close(cmd) + gsub(/\t/, " ", s) + gsub(/ +/, " ", s) + return s +} +/^[^!]/ { + gsub(/[^0-9]*/,"",$3) + if ($4 == "s") + $1 = "struct " $1 + if ($4 == "u") + $1 = "union " $1 + print $1 "\t" $2 "\t" $4 "\t" $3 "\t" proto($4,$2,$3) +}' /tmp/inc.tags |sort +rm -f /tmp/inc.tags +} + +dotags ../../lang/c/glibc >data/glibc.inc.tags +dotags ../musl >data/musl.inc.tags