version 1.14, 2009/03/16 23:37:28 |
version 1.15, 2009/03/19 11:49:00 |
Line 183 mmain_prepare(struct mmain *p, const char *in) |
|
Line 183 mmain_prepare(struct mmain *p, const char *in) |
|
{ |
{ |
struct stat st; |
struct stat st; |
|
|
p->in = in; |
if ((p->in = in)) { |
p->fdin = STDIN_FILENO; |
|
|
|
if (0 != strcmp(p->in, "-")) |
|
if (-1 == (p->fdin = open(p->in, O_RDONLY, 0))) { |
if (-1 == (p->fdin = open(p->in, O_RDONLY, 0))) { |
warn("%s", p->in); |
warn("%s", p->in); |
mmain_exit(p, 1); |
mmain_exit(p, 1); |
} |
} |
|
} else { |
|
p->fdin = STDIN_FILENO; |
|
p->in = "-"; |
|
} |
|
|
/* Allocate a buffer to be BUFSIZ/block size. */ |
|
|
|
if (-1 == fstat(p->fdin, &st)) { |
if (-1 == fstat(p->fdin, &st)) { |
warn("%s", p->in); |
warn("%s", p->in); |
p->bufsz = BUFSIZ; |
p->bufsz = BUFSIZ; |
} else |
} else |
p->bufsz = (size_t)MAX(st.st_blksize, BUFSIZ); |
p->bufsz = (unsigned)BUFSIZ > st.st_blksize ? |
|
(size_t)BUFSIZ : st.st_blksize; |
|
|
p->buf = malloc(p->bufsz); |
if (NULL == (p->buf = realloc(p->buf, p->bufsz))) |
if (NULL == p->buf) |
err(1, "realloc"); |
err(1, "malloc"); |
|
} |
} |
|
|
|
|
Line 359 parse(struct mmain *p) |
|
Line 358 parse(struct mmain *p) |
|
} |
} |
|
|
|
|
static int |
|
msg_err(void *arg, int line, int col, const char *msg) |
|
{ |
|
struct mmain *p; |
|
|
|
p = (struct mmain *)arg; |
|
|
|
warnx("%s:%d: error: %s (column %d)", |
|
p->in, line, msg, col); |
|
return(0); |
|
} |
|
|
|
|
|
static void |
|
msg_msg(void *arg, int line, int col, const char *msg) |
|
{ |
|
struct mmain *p; |
|
|
|
p = (struct mmain *)arg; |
|
|
|
if (0 == p->dbg) |
|
return; |
|
|
|
warnx("%s:%d: debug: %s (column %d)", |
|
p->in, line, msg, col); |
|
} |
|
|
|
|
|
static int |
|
msg_warn(void *arg, int line, int col, |
|
enum mdoc_warn type, const char *msg) |
|
{ |
|
struct mmain *p; |
|
|
|
p = (struct mmain *)arg; |
|
|
|
switch (type) { |
|
case (WARN_COMPAT): |
|
if (p->warn & MD_WARN_COMPAT) |
|
break; |
|
return(1); |
|
case (WARN_SYNTAX): |
|
if (p->warn & MD_WARN_SYNTAX) |
|
break; |
|
return(1); |
|
} |
|
|
|
warnx("%s:%d: warning: %s (column %d)", |
|
p->in, line, msg, col); |
|
|
|
if ( ! (p->warn & MD_WARN_ERR)) |
|
return(1); |
|
|
|
warnx("%s: considering warnings as errors", __progname); |
|
return(0); |
|
} |
|