manual <sub>opt</sub> fixes
[c-standard] / ann2html.sh
index 6fea593..509e3a2 100755 (executable)
@@ -1,5 +1,7 @@
 #!/bin/sh
 
+# todo: <sub>opt</sub>
+
 export LC_ALL=C
 awk '
 BEGIN {
@@ -85,6 +87,10 @@ seencontents && !seenfore && /^[^@]/ {
        next
 }
 
+/^@sect 3\./ {
+       markdef = 1
+}
+
 /^@sect/ {
        sid++
        slevel = split($2,a,/\./)+1
@@ -93,7 +99,7 @@ seencontents && !seenfore && /^[^@]/ {
        sect = $2
        getline
        # todo hX, back to top
-       ss[sid] = sprintf("<a name=\"%s\" href=\"#%s\"><h%s>%s</h%s></a>\n", sect, sect, slevel, $0, slevel)
+       ss[sid] = sprintf("<h%s><a name=\"%s\" href=\"#%s\">%s</a></h%s>\n", slevel, sect, sect, $0, slevel)
        if ($0 == "Index")
                ss[sid] = ss[sid] "<pre>\n"
        next
@@ -148,17 +154,16 @@ seencontents && !seenfore && /^[^@]/ {
        nn = 0
        p = $2
        getline
-       i = $2
-       ss[sid] = ss[sid] "<!--page " p " indent " i "-->\n"
+       ss[sid] = ss[sid] "<!--page " p " -->\n"
        next
 }
 
 /^@para/ {
-       ss[sid] = ss[sid] "<p><!--para " $2 "-->\n"
+       ss[sid] = ss[sid] "<p><!--para " $2 " -->\n"
        next
 }
 
-/^ *(Syntax|Semantics|Description|Constraints|Synopsis|Returns)$/ {
+/^ ?(Syntax|Semantics|Description|Constraints|Synopsis|Returns|Recommended practice|Implementation limits|Environmental limits)$/ {
        ss[sid] = ss[sid] "<h6>" $0 "</h6>\n"
        next
 }
@@ -208,7 +213,14 @@ seencontents && !seenfore && /^[^@]/ {
        }
        s = p s
        p = ""
-       while (match(s, noteid "\\)")) {
+       for (;;) {
+               while (match(s, noteid-1 "\\)")) {
+                       p = p substr(s,1,RSTART-1)
+                       p = p "<sup><a href=\"#note" noteid-1 "\"><b>" noteid-1 ")</b></a></sup>"
+                       s = substr(s,RSTART+RLENGTH)
+               }
+               if (!match(s, noteid "\\)"))
+                       break
                if (noteid==1 && s !~ /\.1\)/)
                        break
                p = p substr(s,1,RSTART-1)
@@ -219,6 +231,10 @@ seencontents && !seenfore && /^[^@]/ {
        }
        s = p s
        sub(/^ *Forward references/, "<p><b>&</b>", s)
+       if (markdef) {
+               s = "<b>" s "</b><br>"
+               markdef = 0
+       }
        if (pre)
                pre = pre "\n" s
        else if (nn)