version 1.193, 2014/10/18 15:57:34 |
version 1.196, 2014/10/30 17:15:28 |
|
|
OUTT_TREE, /* -Ttree */ |
OUTT_TREE, /* -Ttree */ |
OUTT_MAN, /* -Tman */ |
OUTT_MAN, /* -Tman */ |
OUTT_HTML, /* -Thtml */ |
OUTT_HTML, /* -Thtml */ |
OUTT_XHTML, /* -Txhtml */ |
|
OUTT_LINT, /* -Tlint */ |
OUTT_LINT, /* -Tlint */ |
OUTT_PS, /* -Tps */ |
OUTT_PS, /* -Tps */ |
OUTT_PDF /* -Tpdf */ |
OUTT_PDF /* -Tpdf */ |
|
|
|
|
struct curparse { |
struct curparse { |
struct mparse *mp; |
struct mparse *mp; |
|
struct mchars *mchars; /* character table */ |
enum mandoclevel wlevel; /* ignore messages below this */ |
enum mandoclevel wlevel; /* ignore messages below this */ |
int wstop; /* stop after a file with a warning */ |
int wstop; /* stop after a file with a warning */ |
enum outt outtype; /* which output to use */ |
enum outt outtype; /* which output to use */ |
Line 82 struct curparse { |
|
Line 82 struct curparse { |
|
char outopts[BUFSIZ]; /* buf of output opts */ |
char outopts[BUFSIZ]; /* buf of output opts */ |
}; |
}; |
|
|
|
static int koptions(int *, char *); |
static int moptions(int *, char *); |
static int moptions(int *, char *); |
static void mmsg(enum mandocerr, enum mandoclevel, |
static void mmsg(enum mandocerr, enum mandoclevel, |
const char *, int, int, const char *); |
const char *, int, int, const char *); |
Line 149 main(int argc, char *argv[]) |
|
Line 150 main(int argc, char *argv[]) |
|
memset(&curp, 0, sizeof(struct curparse)); |
memset(&curp, 0, sizeof(struct curparse)); |
curp.outtype = OUTT_ASCII; |
curp.outtype = OUTT_ASCII; |
curp.wlevel = MANDOCLEVEL_FATAL; |
curp.wlevel = MANDOCLEVEL_FATAL; |
options = MPARSE_SO; |
options = MPARSE_SO | MPARSE_UTF8 | MPARSE_LATIN1; |
defos = NULL; |
defos = NULL; |
|
|
use_pager = 1; |
use_pager = 1; |
show_usage = 0; |
show_usage = 0; |
outmode = OUTMODE_DEF; |
outmode = OUTMODE_DEF; |
|
|
while (-1 != (c = getopt(argc, argv, "aC:cfhI:iklM:m:O:S:s:T:VW:w"))) { |
while (-1 != (c = getopt(argc, argv, |
|
"aC:cfhI:iK:klM:m:O:S:s:T:VW:w"))) { |
switch (c) { |
switch (c) { |
case 'a': |
case 'a': |
outmode = OUTMODE_ALL; |
outmode = OUTMODE_ALL; |
Line 192 main(int argc, char *argv[]) |
|
Line 194 main(int argc, char *argv[]) |
|
case 'i': |
case 'i': |
outmode = OUTMODE_INT; |
outmode = OUTMODE_INT; |
break; |
break; |
|
case 'K': |
|
if ( ! koptions(&options, optarg)) |
|
return((int)MANDOCLEVEL_BADARG); |
|
break; |
case 'k': |
case 'k': |
search.argmode = ARG_EXPR; |
search.argmode = ARG_EXPR; |
break; |
break; |
Line 358 main(int argc, char *argv[]) |
|
Line 364 main(int argc, char *argv[]) |
|
if (use_pager && isatty(STDOUT_FILENO)) |
if (use_pager && isatty(STDOUT_FILENO)) |
spawn_pager(); |
spawn_pager(); |
|
|
curp.mp = mparse_alloc(options, curp.wlevel, mmsg, defos); |
curp.mchars = mchars_alloc(); |
|
curp.mp = mparse_alloc(options, curp.wlevel, mmsg, |
|
curp.mchars, defos); |
|
|
/* |
/* |
* Conditionally start up the lookaside buffer before parsing. |
* Conditionally start up the lookaside buffer before parsing. |
Line 403 main(int argc, char *argv[]) |
|
Line 411 main(int argc, char *argv[]) |
|
|
|
if (curp.outfree) |
if (curp.outfree) |
(*curp.outfree)(curp.outdata); |
(*curp.outfree)(curp.outdata); |
if (curp.mp) |
mparse_free(curp.mp); |
mparse_free(curp.mp); |
mchars_free(curp.mchars); |
|
|
#if HAVE_SQLITE3 |
#if HAVE_SQLITE3 |
out: |
out: |
Line 435 usage(enum argmode argmode) |
|
Line 443 usage(enum argmode argmode) |
|
switch (argmode) { |
switch (argmode) { |
case ARG_FILE: |
case ARG_FILE: |
fputs("usage: mandoc [-acfhklV] [-Ios=name] " |
fputs("usage: mandoc [-acfhklV] [-Ios=name] " |
"[-mformat] [-Ooption] [-Toutput] [-Wlevel]\n" |
"[-Kencoding] [-mformat] [-Ooption]\n" |
"\t [file ...]\n", stderr); |
"\t [-Toutput] [-Wlevel] [file ...]\n", stderr); |
break; |
break; |
case ARG_NAME: |
case ARG_NAME: |
fputs("usage: man [-acfhklVw] [-C file] " |
fputs("usage: man [-acfhklVw] [-C file] " |
Line 489 parse(struct curparse *curp, int fd, const char *file, |
|
Line 497 parse(struct curparse *curp, int fd, const char *file, |
|
|
|
if ( ! (curp->outman && curp->outmdoc)) { |
if ( ! (curp->outman && curp->outmdoc)) { |
switch (curp->outtype) { |
switch (curp->outtype) { |
case OUTT_XHTML: |
|
curp->outdata = xhtml_alloc(curp->outopts); |
|
curp->outfree = html_free; |
|
break; |
|
case OUTT_HTML: |
case OUTT_HTML: |
curp->outdata = html_alloc(curp->outopts); |
curp->outdata = html_alloc(curp->mchars, |
|
curp->outopts); |
curp->outfree = html_free; |
curp->outfree = html_free; |
break; |
break; |
case OUTT_UTF8: |
case OUTT_UTF8: |
curp->outdata = utf8_alloc(curp->outopts); |
curp->outdata = utf8_alloc(curp->mchars, |
|
curp->outopts); |
curp->outfree = ascii_free; |
curp->outfree = ascii_free; |
break; |
break; |
case OUTT_LOCALE: |
case OUTT_LOCALE: |
curp->outdata = locale_alloc(curp->outopts); |
curp->outdata = locale_alloc(curp->mchars, |
|
curp->outopts); |
curp->outfree = ascii_free; |
curp->outfree = ascii_free; |
break; |
break; |
case OUTT_ASCII: |
case OUTT_ASCII: |
curp->outdata = ascii_alloc(curp->outopts); |
curp->outdata = ascii_alloc(curp->mchars, |
|
curp->outopts); |
curp->outfree = ascii_free; |
curp->outfree = ascii_free; |
break; |
break; |
case OUTT_PDF: |
case OUTT_PDF: |
curp->outdata = pdf_alloc(curp->outopts); |
curp->outdata = pdf_alloc(curp->mchars, |
|
curp->outopts); |
curp->outfree = pspdf_free; |
curp->outfree = pspdf_free; |
break; |
break; |
case OUTT_PS: |
case OUTT_PS: |
curp->outdata = ps_alloc(curp->outopts); |
curp->outdata = ps_alloc(curp->mchars, |
|
curp->outopts); |
curp->outfree = pspdf_free; |
curp->outfree = pspdf_free; |
break; |
break; |
default: |
default: |
Line 523 parse(struct curparse *curp, int fd, const char *file, |
|
Line 533 parse(struct curparse *curp, int fd, const char *file, |
|
|
|
switch (curp->outtype) { |
switch (curp->outtype) { |
case OUTT_HTML: |
case OUTT_HTML: |
/* FALLTHROUGH */ |
|
case OUTT_XHTML: |
|
curp->outman = html_man; |
curp->outman = html_man; |
curp->outmdoc = html_mdoc; |
curp->outmdoc = html_mdoc; |
break; |
break; |
|
|
} |
} |
|
|
static int |
static int |
|
koptions(int *options, char *arg) |
|
{ |
|
|
|
if ( ! strcmp(arg, "utf-8")) { |
|
*options |= MPARSE_UTF8; |
|
*options &= ~MPARSE_LATIN1; |
|
} else if ( ! strcmp(arg, "iso-8859-1")) { |
|
*options |= MPARSE_LATIN1; |
|
*options &= ~MPARSE_UTF8; |
|
} else if ( ! strcmp(arg, "us-ascii")) { |
|
*options &= ~(MPARSE_UTF8 | MPARSE_LATIN1); |
|
} else { |
|
fprintf(stderr, "%s: -K%s: Bad argument\n", |
|
progname, arg); |
|
return(0); |
|
} |
|
return(1); |
|
} |
|
|
|
static int |
moptions(int *options, char *arg) |
moptions(int *options, char *arg) |
{ |
{ |
|
|
Line 639 toptions(struct curparse *curp, char *arg) |
|
Line 667 toptions(struct curparse *curp, char *arg) |
|
else if (0 == strcmp(arg, "locale")) |
else if (0 == strcmp(arg, "locale")) |
curp->outtype = OUTT_LOCALE; |
curp->outtype = OUTT_LOCALE; |
else if (0 == strcmp(arg, "xhtml")) |
else if (0 == strcmp(arg, "xhtml")) |
curp->outtype = OUTT_XHTML; |
curp->outtype = OUTT_HTML; |
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")) |
else if (0 == strcmp(arg, "pdf")) |