Blame manual/xtract-typefun.awk
|
Packit |
6c4009 |
#!/usr/local/bin/gawk -f
|
|
Packit |
6c4009 |
BEGIN {
|
|
Packit |
6c4009 |
last_node="";
|
|
Packit |
6c4009 |
}
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
/^@node/ {
|
|
Packit |
6c4009 |
name = $0;
|
|
Packit |
6c4009 |
sub(/^@node +/, "", name);
|
|
Packit |
6c4009 |
sub(/[@,].*$/, "", name);
|
|
Packit |
6c4009 |
last_node = name;
|
|
Packit |
6c4009 |
}
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
/^@deftype(fn|vr)/ {
|
|
Packit |
6c4009 |
# The string we want is $4, except that if there were brace blocks
|
|
Packit |
6c4009 |
# before that point then it gets shifted to the right, since awk
|
|
Packit |
6c4009 |
# doesn't know from brace blocks.
|
|
Packit |
6c4009 |
id = 4; check = 2; squig = 0;
|
|
Packit |
6c4009 |
while(check < id)
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
if($check ~ /{/) squig++;
|
|
Packit |
6c4009 |
if($check ~ /}/) squig--;
|
|
Packit |
6c4009 |
if(squig) id++;
|
|
Packit |
6c4009 |
check++;
|
|
Packit |
6c4009 |
}
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
gsub(/[(){}*]/, "", $id);
|
|
Packit |
6c4009 |
printf ("* %s: (libc)%s.\n", $id, last_node);
|
|
Packit |
6c4009 |
}
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
/^@deftypefun/ {
|
|
Packit |
6c4009 |
# Likewise, except it's $3 theoretically.
|
|
Packit |
6c4009 |
id = 3; check = 2; squig = 0;
|
|
Packit |
6c4009 |
while(check < id)
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
if($check ~ /{/) squig++;
|
|
Packit |
6c4009 |
if($check ~ /}/) squig--;
|
|
Packit |
6c4009 |
if(squig) id++;
|
|
Packit |
6c4009 |
check++;
|
|
Packit |
6c4009 |
}
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
gsub(/[(){}*]/, "", $id);
|
|
Packit |
6c4009 |
printf ("* %s: (libc)%s.\n", $id, last_node);
|
|
Packit |
6c4009 |
}
|