diff options
Diffstat (limited to 'man2html')
-rw-r--r-- | man2html/man2html.c | 63 |
1 files changed, 34 insertions, 29 deletions
diff --git a/man2html/man2html.c b/man2html/man2html.c index 32513dc..b2ff5b3 100644 --- a/man2html/man2html.c +++ b/man2html/man2html.c @@ -493,27 +493,37 @@ char *switchfont[25] = { "" , FC0 FO1, FC0 FO2, FC0 FO3, FC0 FO4, static char * change_to_font(int nr) { - int i; - switch (nr) { - case '0': nr++; - case '1': case '2': case '3': case '4': - nr = nr-'1'; break; - case V('C','W'): case V('C','R'): nr=3; break; - case V('C','O'): case V('C','I'): nr=4; break; - case 'L': nr=3; break; - case 'B': nr=2; break; - case 'I': nr=1; break; - case 0: case 1: case 2: case 3: - break; - case 'P': case 'R': - default: nr=0; break; - } + int i; + switch (nr) { + case '0': + nr++; + case '1': case '2': case '3': case '4': case '5': + nr -= '1'; + break; + case V(' ', '0'): + nr++; + case V('1',' '): case V('2',' '): case V('3',' '): + case V('4',' '): case V('5',' '): + nr = nr / 256 - '1'; + break; + case V('C','W'): case V('C','R'): nr=3; break; + case V('C','O'): case V('C','I'): nr=4; break; + case 'L': nr=3; break; + case 'B': nr=2; break; + case 'I': nr=1; break; + case 0: case 1: case 2: case 3: case 4: + break; + case 'P': case 'R': + default: + nr=0; + break; + } - assert (nr >= 0 && nr < NFONTS); + assert (nr >= 0 && nr < NFONTS); - i= current_font*NFONTS+nr; - current_font=nr; - return switchfont[i]; + i= current_font*NFONTS+nr; + current_font=nr; + return switchfont[i]; } static char sizebuf[200]; @@ -643,22 +653,17 @@ scan_escape(char *c) { case 'f': c++; if (*c=='\\') { + int se = skip_escape; + skip_escape = 1; c++; c=scan_escape(c); c--; i=intresult; + skip_escape = se; } else if (*c == '[' || *c == '(') { c++; - if (*c == ']' || *c == ')') { - i = 0; - } else if (c[1] == ']' || c[1] == ')') { - i = *c++; - } else if (c[2] == ']' || c[2] == ')') { - i=c[0]*256+c[1]; - c += 2; - } else { - abort(); - } + i = str_to_code(c, ")]"); + c += strcspn(c, ")]"); } else { i=*c; } |