about summary refs log tree commit diff
path: root/manual/summary.awk
diff options
context:
space:
mode:
Diffstat (limited to 'manual/summary.awk')
-rw-r--r--manual/summary.awk17
1 files changed, 14 insertions, 3 deletions
diff --git a/manual/summary.awk b/manual/summary.awk
index 5ebced62a7..cd68ae6085 100644
--- a/manual/summary.awk
+++ b/manual/summary.awk
@@ -88,17 +88,22 @@ $1 == "@node" { node=$2;
 	      }
 
 $1 == "@comment" && $2 ~ /\.h$/ { header="@file{" $2 "}";
+                                  optional = 0;
+                                  if ($NF == "(optional)") {
+                                    optional = 1;
+                                    --NF;
+                                  }
 				  for (i = 3; i <= NF; ++i)
 				    header=header ", @file{" $i "}"
 				}
 
-$1 == "@comment" && $2 == "(none)" { header = -1; }
+$1 == "@comment" && $2 == "(none)" { header = -1; optional = 0; }
 
 $1 == "@comment" && header != 0 { std=$2;
 				  for (i=3;i<=NF;++i) std=std " " $i }
 
 header != 0 && $1 ~ /@def|@item|@vindex/ \
-	{ defn=""; name=""; curly=0; n=1;
+	{ defn=""; name=""; curly=0; n=1; flavor="";
 	  for (i = 2; i <= NF; ++i) {
 	    if ($i ~ /^{/ && $i !~ /}/) {
 	      curly=1
@@ -124,9 +129,15 @@ header != 0 && $1 ~ /@def|@item|@vindex/ \
 		  name=word
 		++n
 	      }
+              if (flavor == "") {
+                flavor = $1;
+                if (flavor ~ /^@deftypevrx?/)
+                  flavor = flavor " {" word "}";
+              }
 	    }
 	  }
-	  printf "@comment %s%c", name, 12 # FF
+	  printf "@comment %s%s%c", name, optional ? " (optional)" : "", 12 # FF
+	  printf "@c %s %d %s%c", FILENAME, FNR, flavor, 12
 	  printf "@item%s%c%c", defn, 12, 12
 	  if (header != -1) printf "%s ", header;
 	  printf "(%s):  @ref{%s}.%c\n", std, node, 12;