diff options
-rw-r--r-- | man2html/man2html.c | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/man2html/man2html.c b/man2html/man2html.c index dc5ba99..6f2b6c1 100644 --- a/man2html/man2html.c +++ b/man2html/man2html.c @@ -1647,6 +1647,7 @@ scan_request(char *c) { int words; char *sl; STRDEF *owndef; + int nofillout = 0; /* Don't generate newline */ while (*c == ' ' || *c == '\t') c++; @@ -1663,6 +1664,7 @@ scan_request(char *c) { c = skip_till_newline(c); else c = scan_escape(c+1); + nofillout=1; } else { i=str_to_code(c, 0); switch (i) { @@ -1705,6 +1707,7 @@ scan_request(char *c) { scan_troff(h,0,&de->st); *c='.'; while (*c && *c++!='\n'); + nofillout=1; break; } case V('d','s'): @@ -1753,6 +1756,7 @@ scan_request(char *c) { single_escape=0; curpos=oldcurpos; } + nofillout=1; break; case V('b','r'): if (still_dd) out_html("<DD>"); @@ -1859,6 +1863,7 @@ scan_request(char *c) { c=scan_troff(c,1,NULL); } else c=skip_till_newline(c+j); + nofillout=1; break; case V('i','e'): /* .ie c anything : then part of if else */ @@ -1878,6 +1883,7 @@ scan_request(char *c) { } else c=skip_till_newline(c); ifelseval=!i; + nofillout=1; break; case V4('w','h','i','l'): /* groff extension @@ -1903,6 +1909,7 @@ scan_request(char *c) { } } } + nofillout=1; break; case V4('s','h','i','f'): /* groff: shift arguments */ @@ -1911,6 +1918,7 @@ scan_request(char *c) { nargs--; } c=skip_till_newline(c); + nofillout=1; break; case V('i','g'): /* .ig: ignore until .. */ { @@ -1930,6 +1938,7 @@ scan_request(char *c) { while (*c && *c++!='\n'); while (*c && *c++!='\n'); break; + nofillout=1; } case V('n','f'): if (fillout) { @@ -1953,6 +1962,7 @@ scan_request(char *c) { out_html(change_to_size(i*j)); } c=skip_till_newline(c); + nofillout=1; break; case V('s','p'): c=c+j; @@ -2037,6 +2047,7 @@ scan_request(char *c) { } maxtstop=j; curpos=0; + nofillout=1; break; case V('t','i'): #if 0 @@ -2056,6 +2067,7 @@ scan_request(char *c) { *c=0; fprintf(stderr,"%s\n", h); /* XXX */ *c='\n'; + nofillout=1; break; case V('B',' '): case V('B','\n'): @@ -2274,6 +2286,7 @@ scan_request(char *c) { break; case V('T','S'): c=scan_table(c); + nofillout=1; break; case V('D','t'): /* BSD mandoc */ mandoc_command = 1; @@ -2346,12 +2359,16 @@ scan_request(char *c) { while (de && de->nr!=i) de=de->next; if (de) de->nr=j; break; + nofillout=1; } case V('n','x'): /* .nx filename : next file. */ + nofillout=1; + break; case V('i','n'): /* .in +-N : Indent */ c=skip_till_newline(c); + nofillout=1; break; case V('n','r'): /* .nr R +-N M: define and set number register R by +-N; @@ -2379,6 +2396,7 @@ scan_request(char *c) { c=scan_expression(c,&intd->incr); c=skip_till_newline(c); break; + nofillout=1; } case V('a','m'): /* .am xx yy : append to a macro. */ @@ -2435,6 +2453,7 @@ scan_request(char *c) { } } c=skip_till_newline(c); + nofillout=1; break; /* ----- BSD mandoc stuff below ----- */ @@ -2511,6 +2530,7 @@ scan_request(char *c) { case V('X','o'): /* BSD mandoc */ c=c+j; inXo = 1; + nofillout=1; break; case V('X','c'): /* BSD mandoc - Xc closes an Xo */ c=c+j; @@ -2969,8 +2989,10 @@ scan_request(char *c) { break; } } - if (fillout) { out_html(NEWLINE); curpos++; } - NEWLINE[0]='\n'; + if (!nofillout) { + if (fillout) { out_html(NEWLINE); curpos++; } + NEWLINE[0]='\n'; + } return c; } @@ -3088,7 +3110,8 @@ scan_troff(char *c, int san, char **result) { /* san : stop at newline */ contained_tab=0; curpos=0; usenbsp=0; - intbuff[ibp++]='\n'; + if (ibp > 0 && !isspace(intbuff[ibp-1])) + intbuff[ibp++]='\n'; break; case '\t': { |