diff options
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"); |