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