X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=maketagssrc.sh;fp=maketagssrc.sh;h=f316785364aa3e6eaf62e454d808efc644491df3;hb=ca38d85f467bee791aab89239f86e229714abf6c;hp=0000000000000000000000000000000000000000;hpb=90a5c3ea7705b5af3312a6190afb1a9f46f67bef;p=musl-tables diff --git a/maketagssrc.sh b/maketagssrc.sh new file mode 100755 index 0000000..f316785 --- /dev/null +++ b/maketagssrc.sh @@ -0,0 +1,47 @@ +#!/bin/sh + +export LC_ALL=C +MUSL=${MUSL:-../musl} + +( + cd $MUSL/src +# ctags -f /tmp/musl.tags -R -n -u --language-force=c --c-kinds=pxdstuf --fields=k --exclude='*.sh' --exclude='*o' --exclude='*.s' . + ctags -f /tmp/musl.tags -R -n -u --language-force=c --c-kinds=xtf --fields=k --exclude='*.sh' --exclude='*o' --exclude='*.s' . +) + +awk -v src=$MUSL/src/ ' +BEGIN { + FS="\t" +} +function proto(t,f,n) { + if (t == "f" && n > 1) + n-- + cmd = "awk '\''NR==" n + if (t == "p") + cmd = cmd "{s=$0; if(s!~/;/){getline; s=s \" \" $0} print s; exit}" + else if (t == "f") { + cmd = cmd "{s=$0; sub(/^#.*/,\"\",s); gsub(/\\/\\/.*/,\"\",s); gsub(/.*\\*\\//,\"\",s);" + cmd = cmd "while(s!~/{/){getline; s=s \" \" $0} sub(/ *{.*$/,\"\",s); 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 "'\'' " src f + cmd | getline s + close(cmd) + gsub(/\t/, " ", s) + gsub(/ +/, " ", s) + sub(/^ /,"",s) + return s +} +/^[^!]/ { + gsub(/[^0-9]*/,"",$3) + if ($4 == "s") + $1 = "struct " $1 + if ($4 == "u") + $1 = "union " $1 + p = proto($4,$2,$3) + if ($4 != "f" || p !~ /static/) + print $1 "\t" $2 "\t" $4 "\t" $3 "\t" p +}' /tmp/musl.tags |sort >data/musl.src.tags +rm -f /tmp/musl.tags