version 1.149, 2016/07/10 13:34:30 |
version 1.152, 2016/10/09 18:16:56 |
|
|
#include "config.h" |
#include "config.h" |
|
|
#include <sys/types.h> |
#include <sys/types.h> |
#if HAVE_MMAP |
|
#include <sys/mman.h> |
#include <sys/mman.h> |
#include <sys/stat.h> |
#include <sys/stat.h> |
#endif |
|
|
|
#include <assert.h> |
#include <assert.h> |
#include <ctype.h> |
#include <ctype.h> |
Line 143 static const char * const mandocerrs[MANDOCERR_MAX] = |
|
Line 141 static const char * const mandocerrs[MANDOCERR_MAX] = |
|
"empty argument, using 0n", |
"empty argument, using 0n", |
"missing display type, using -ragged", |
"missing display type, using -ragged", |
"list type is not the first argument", |
"list type is not the first argument", |
"missing -width in -tag list, using 8n", |
"missing -width in -tag list, using 6n", |
"missing utility name, using \"\"", |
"missing utility name, using \"\"", |
"missing function name, using \"\"", |
"missing function name, using \"\"", |
"empty head in list item", |
"empty head in list item", |
Line 291 choose_parser(struct mparse *curp) |
|
Line 289 choose_parser(struct mparse *curp) |
|
} |
} |
} |
} |
|
|
if (curp->man == NULL) { |
|
curp->man = roff_man_alloc(curp->roff, curp, curp->defos, |
|
curp->options & MPARSE_QUICK ? 1 : 0); |
|
curp->man->macroset = MACROSET_MAN; |
|
curp->man->first->tok = TOKEN_NONE; |
|
} |
|
|
|
if (format == MPARSE_MDOC) { |
if (format == MPARSE_MDOC) { |
mdoc_hash_init(); |
mdoc_hash_init(); |
curp->man->macroset = MACROSET_MDOC; |
curp->man->macroset = MACROSET_MDOC; |
|
|
break; |
break; |
} |
} |
|
|
/* |
if (curp->man->macroset == MACROSET_NONE) |
* If input parsers have not been allocated, do so now. |
|
* We keep these instanced between parsers, but set them |
|
* locally per parse routine since we can use different |
|
* parsers with each one. |
|
*/ |
|
|
|
if (curp->man == NULL || |
|
curp->man->macroset == MACROSET_NONE) |
|
choose_parser(curp); |
choose_parser(curp); |
|
|
/* |
/* |
Line 613 read_whole_file(struct mparse *curp, const char *file, |
|
Line 596 read_whole_file(struct mparse *curp, const char *file, |
|
size_t off; |
size_t off; |
ssize_t ssz; |
ssize_t ssz; |
|
|
#if HAVE_MMAP |
|
struct stat st; |
struct stat st; |
|
|
if (fstat(fd, &st) == -1) |
if (fstat(fd, &st) == -1) |
Line 637 read_whole_file(struct mparse *curp, const char *file, |
|
Line 619 read_whole_file(struct mparse *curp, const char *file, |
|
if (fb->buf != MAP_FAILED) |
if (fb->buf != MAP_FAILED) |
return 1; |
return 1; |
} |
} |
#endif |
|
|
|
if (curp->gzip) { |
if (curp->gzip) { |
if ((gz = gzdopen(fd, "rb")) == NULL) |
if ((gz = gzdopen(fd, "rb")) == NULL) |
Line 683 read_whole_file(struct mparse *curp, const char *file, |
|
Line 664 read_whole_file(struct mparse *curp, const char *file, |
|
static void |
static void |
mparse_end(struct mparse *curp) |
mparse_end(struct mparse *curp) |
{ |
{ |
|
|
if (curp->man == NULL && curp->sodest == NULL) |
|
curp->man = roff_man_alloc(curp->roff, curp, curp->defos, |
|
curp->options & MPARSE_QUICK ? 1 : 0); |
|
if (curp->man->macroset == MACROSET_NONE) |
if (curp->man->macroset == MACROSET_NONE) |
curp->man->macroset = MACROSET_MAN; |
curp->man->macroset = MACROSET_MAN; |
if (curp->man->macroset == MACROSET_MDOC) |
if (curp->man->macroset == MACROSET_MDOC) |
Line 766 mparse_readfd(struct mparse *curp, int fd, const char |
|
Line 743 mparse_readfd(struct mparse *curp, int fd, const char |
|
(MPARSE_UTF8 | MPARSE_LATIN1); |
(MPARSE_UTF8 | MPARSE_LATIN1); |
mparse_parse_buffer(curp, blk, file); |
mparse_parse_buffer(curp, blk, file); |
curp->filenc = save_filenc; |
curp->filenc = save_filenc; |
#if HAVE_MMAP |
|
if (with_mmap) |
if (with_mmap) |
munmap(blk.buf, blk.sz); |
munmap(blk.buf, blk.sz); |
else |
else |
#endif |
|
free(blk.buf); |
free(blk.buf); |
} |
} |
return curp->file_status; |
return curp->file_status; |
Line 842 mparse_alloc(int options, enum mandoclevel wlevel, man |
|
Line 817 mparse_alloc(int options, enum mandoclevel wlevel, man |
|
void |
void |
mparse_reset(struct mparse *curp) |
mparse_reset(struct mparse *curp) |
{ |
{ |
|
|
roff_reset(curp->roff); |
roff_reset(curp->roff); |
|
roff_man_reset(curp->man); |
if (curp->man != NULL) |
|
roff_man_reset(curp->man); |
|
if (curp->secondary) |
if (curp->secondary) |
curp->secondary->sz = 0; |
curp->secondary->sz = 0; |
|
|