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