summaryrefslogtreecommitdiffstats
path: root/mmain.c
diff options
context:
space:
mode:
authorKristaps Dzonsons <kristaps@bsd.lv>2009-03-19 11:49:00 +0000
committerKristaps Dzonsons <kristaps@bsd.lv>2009-03-19 11:49:00 +0000
commit8ee53c583c595b24d97899cd5886383c71b8ae13 (patch)
treed6390344f213484dcc0f820f44c5c9eb0daebfb8 /mmain.c
parent8d40b5056c9c50a5a27194d603247a8d5ab3227a (diff)
downloadmandoc-8ee53c583c595b24d97899cd5886383c71b8ae13.tar.gz
Many more ASCII escapes added.
Stripped nroff punt from mdocterm.c. Fixed multiple-file handling for mdocterm.c. Cleared up mdoc.h API.
Diffstat (limited to 'mmain.c')
-rw-r--r--mmain.c75
1 files changed, 9 insertions, 66 deletions
diff --git a/mmain.c b/mmain.c
index b8936eed..ad1366ea 100644
--- a/mmain.c
+++ b/mmain.c
@@ -183,26 +183,25 @@ mmain_prepare(struct mmain *p, const char *in)
{
struct stat st;
- p->in = in;
- p->fdin = STDIN_FILENO;
-
- if (0 != strcmp(p->in, "-"))
+ if ((p->in = in)) {
if (-1 == (p->fdin = open(p->in, O_RDONLY, 0))) {
warn("%s", p->in);
mmain_exit(p, 1);
}
-
- /* Allocate a buffer to be BUFSIZ/block size. */
+ } else {
+ p->fdin = STDIN_FILENO;
+ p->in = "-";
+ }
if (-1 == fstat(p->fdin, &st)) {
warn("%s", p->in);
p->bufsz = BUFSIZ;
} 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)
- err(1, "malloc");
+ if (NULL == (p->buf = realloc(p->buf, p->bufsz)))
+ err(1, "realloc");
}
@@ -359,59 +358,3 @@ 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);
-}