diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2014-09-18 19:44:23 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2014-09-18 19:44:23 -0700 |
commit | e219764e7fff79f53c25ef9d7d9c3bb94c5a2fee (patch) | |
tree | 9eaca2b6f9d972ec97b03531a4c49c127c420b2b /man2html/man2html.c | |
parent | e9ba652c80e911013ddc3dd5972654d680cc1a7e (diff) | |
download | man-e219764e7fff79f53c25ef9d7d9c3bb94c5a2fee.tar.gz man-e219764e7fff79f53c25ef9d7d9c3bb94c5a2fee.tar.bz2 man-e219764e7fff79f53c25ef9d7d9c3bb94c5a2fee.zip |
Implementing M2 register and .M2SS extension.
Updating date of the man page and documenting extensions.
Changing .ab request to exit unsuccessfully.
Index generation needed to be trivially extended to handle more than two
levels.
Diffstat (limited to 'man2html/man2html.c')
-rw-r--r-- | man2html/man2html.c | 54 |
1 files changed, 45 insertions, 9 deletions
diff --git a/man2html/man2html.c b/man2html/man2html.c index c5f22dc..7a7ef56 100644 --- a/man2html/man2html.c +++ b/man2html/man2html.c @@ -1571,17 +1571,19 @@ add_to_index(int level, char *item) label[2]++; } - if (level != subs) { - manidx_need(6); - if (subs) { - strcpy(manidx+mip, "</DL>\n"); - mip += 6; - } else { + while (level != subs) { + if (level > subs) { + manidx_need(5); strcpy(manidx+mip, "<DL>\n"); mip += 5; + subs++; + } else { + manidx_need(6); + strcpy(manidx+mip, "</DL>\n"); + mip += 6; + subs--; } } - subs = level; scan_troff(item, 1, &c); manidx_need(100 + strlen(c)); @@ -1654,7 +1656,7 @@ scan_request(char *c) { printf("%s\n", buffer); } fprintf(stderr, "%s\n", c+2); /* XXX */ - exit(0); + exit(1); break; case V('d','i'): { @@ -2218,6 +2220,40 @@ scan_request(char *c) { else out_html("</H2>\n"); curpos=0; break; + case V4('M','2','S','S'): + { + char *h = NULL, *p; + c=c+j; + c = fill_words(c, wordlist, SIZE(wordlist), &words, 0); + if (words<3) + abort(); + p = strchr(wordlist[2], '\n'); + if (p) *p = 0; + out_html(change_to_font(0)); + out_html(change_to_size(0)); + (void) scan_expression(wordlist[0], &i); + add_to_index(i, wordlist[2]); + if (mandoc_command) + scan_troff_mandoc(wordlist[1],1,&h); + else + scan_troff(wordlist[1],1,&h); + wordlist[1] = h; + h = NULL; + if (mandoc_command) + scan_troff_mandoc(wordlist[2],1,&h); + else + scan_troff(wordlist[2],1,&h); + wordlist[2] = h; + out_html("<A NAME=\""); + out_html(label); + out_html("\"> </A>\n<"); + out_html(wordlist[1]); out_html(">"); + out_html(wordlist[2]); out_html("</"); + out_html(wordlist[1]); out_html(">\n"); + free(wordlist[1]); + free(wordlist[2]); + } + break; case V('T','S'): c=scan_table(c); break; @@ -3351,7 +3387,7 @@ main(int argc, char **argv) { manidx[mip]=0; printf("%s", manidx); } - if (subs) printf("</DL>\n"); + while (subs--) printf("</DL>\n"); printf("</DL>\n"); print_sig(); printf("</BODY>\n</HTML>\n"); |