version 1.98, 2010/07/07 15:04:54 |
version 1.100, 2010/07/25 11:44:31 |
|
|
#include <sys/stat.h> |
#include <sys/stat.h> |
|
|
#include <assert.h> |
#include <assert.h> |
|
#include <ctype.h> |
#include <fcntl.h> |
#include <fcntl.h> |
#include <stdio.h> |
#include <stdio.h> |
#include <stdint.h> |
#include <stdint.h> |
|
|
OUTT_HTML, |
OUTT_HTML, |
OUTT_XHTML, |
OUTT_XHTML, |
OUTT_LINT, |
OUTT_LINT, |
OUTT_PS |
OUTT_PS, |
|
OUTT_PDF |
}; |
}; |
|
|
struct curparse { |
struct curparse { |
Line 110 static const char * const mandocerrs[MANDOCERR_MAX] = |
|
Line 112 static const char * const mandocerrs[MANDOCERR_MAX] = |
|
"list type must come first", |
"list type must come first", |
"bad standard", |
"bad standard", |
"bad library", |
"bad library", |
|
"tab in non-literal context", |
"bad escape sequence", |
"bad escape sequence", |
"unterminated quoted string", |
"unterminated quoted string", |
"argument requires the width argument", |
"argument requires the width argument", |
Line 491 fdesc(struct curparse *curp) |
|
Line 494 fdesc(struct curparse *curp) |
|
++lnn; |
++lnn; |
break; |
break; |
} |
} |
|
|
|
/* |
|
* Warn about bogus characters. If you're using |
|
* non-ASCII encoding, you're screwing your |
|
* readers. Since I'd rather this not happen, |
|
* I'll be helpful and drop these characters so |
|
* we don't display gibberish. Note to manual |
|
* writers: use special characters. |
|
*/ |
|
|
|
if ( ! isgraph((u_char)blk.buf[i]) && |
|
! isblank((u_char)blk.buf[i])) { |
|
if ( ! mmsg(MANDOCERR_BADCHAR, curp, |
|
lnn_start, pos, |
|
"ignoring byte")) |
|
goto bailout; |
|
i++; |
|
continue; |
|
} |
|
|
/* Trailing backslash is like a plain character. */ |
/* Trailing backslash is like a plain character. */ |
if ('\\' != blk.buf[i] || i + 1 == (int)blk.sz) { |
if ('\\' != blk.buf[i] || i + 1 == (int)blk.sz) { |
if (pos >= (int)ln.sz) |
if (pos >= (int)ln.sz) |
Line 608 fdesc(struct curparse *curp) |
|
Line 631 fdesc(struct curparse *curp) |
|
curp->outdata = ascii_alloc(curp->outopts); |
curp->outdata = ascii_alloc(curp->outopts); |
curp->outfree = ascii_free; |
curp->outfree = ascii_free; |
break; |
break; |
|
case (OUTT_PDF): |
|
curp->outdata = pdf_alloc(curp->outopts); |
|
curp->outfree = pspdf_free; |
|
break; |
case (OUTT_PS): |
case (OUTT_PS): |
curp->outdata = ps_alloc(curp->outopts); |
curp->outdata = ps_alloc(curp->outopts); |
curp->outfree = ps_free; |
curp->outfree = pspdf_free; |
break; |
break; |
default: |
default: |
break; |
break; |
Line 628 fdesc(struct curparse *curp) |
|
Line 655 fdesc(struct curparse *curp) |
|
curp->outman = tree_man; |
curp->outman = tree_man; |
curp->outmdoc = tree_mdoc; |
curp->outmdoc = tree_mdoc; |
break; |
break; |
|
case (OUTT_PDF): |
|
/* FALLTHROUGH */ |
case (OUTT_ASCII): |
case (OUTT_ASCII): |
/* FALLTHROUGH */ |
/* FALLTHROUGH */ |
case (OUTT_PS): |
case (OUTT_PS): |
Line 762 toptions(struct curparse *curp, char *arg) |
|
Line 791 toptions(struct curparse *curp, char *arg) |
|
curp->outtype = OUTT_XHTML; |
curp->outtype = OUTT_XHTML; |
else if (0 == strcmp(arg, "ps")) |
else if (0 == strcmp(arg, "ps")) |
curp->outtype = OUTT_PS; |
curp->outtype = OUTT_PS; |
|
else if (0 == strcmp(arg, "pdf")) |
|
curp->outtype = OUTT_PDF; |
else { |
else { |
fprintf(stderr, "%s: Bad argument\n", arg); |
fprintf(stderr, "%s: Bad argument\n", arg); |
return(0); |
return(0); |