summaryrefslogtreecommitdiffstats
path: root/man2html/man2html.c
diff options
context:
space:
mode:
Diffstat (limited to 'man2html/man2html.c')
-rw-r--r--man2html/man2html.c54
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("\">&nbsp;</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");