1#!/usr/local/bin/gawk -f
2BEGIN {
3  last_node="";
4}
5
6/^@node/ {
7  name = $0;
8  sub(/^@node +/, "", name);
9  sub(/[@,].*$/, "", name);
10  last_node = name;
11}
12
13/^@deftype(fn|vr)/ {
14# The string we want is $4, except that if there were brace blocks
15# before that point then it gets shifted to the right, since awk
16# doesn't know from brace blocks.
17  id = 4; check = 2; squig = 0;
18  while(check < id)
19  {
20    if($check ~ /{/) squig++;
21    if($check ~ /}/) squig--;
22    if(squig) id++;
23    check++;
24  }
25
26  gsub(/[(){}*]/, "", $id);
27  printf ("* %s: (libc)%s.\n", $id, last_node);
28}
29
30/^@deftypefun/ {
31# Likewise, except it's $3 theoretically.
32  id = 3; check = 2; squig = 0;
33  while(check < id)
34  {
35    if($check ~ /{/) squig++;
36    if($check ~ /}/) squig--;
37    if(squig) id++;
38    check++;
39  }
40
41  gsub(/[(){}*]/, "", $id);
42  printf ("* %s: (libc)%s.\n", $id, last_node);
43}
44