summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--man2html/man2html.c29
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':
{