about summary refs log tree commit diff
path: root/REORG.TODO/manual/xtract-typefun.awk
diff options
context:
space:
mode:
Diffstat (limited to 'REORG.TODO/manual/xtract-typefun.awk')
-rw-r--r--REORG.TODO/manual/xtract-typefun.awk43
1 files changed, 43 insertions, 0 deletions
diff --git a/REORG.TODO/manual/xtract-typefun.awk b/REORG.TODO/manual/xtract-typefun.awk
new file mode 100644
index 0000000000..57e567f9ba
--- /dev/null
+++ b/REORG.TODO/manual/xtract-typefun.awk
@@ -0,0 +1,43 @@
+#!/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);
+}