aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/read.c
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2019-07-10 19:39:01 +0000
committerIngo Schwarze <schwarze@openbsd.org>2019-07-10 19:39:01 +0000
commita597f1a3e2780fed1216f2237e8a276110b0daef (patch)
treee59b39076a9f1141d186002bff45c25d72423539 /read.c
parent589c83d3597ba6229a69bda10630710c515d2508 (diff)
downloadmandoc-a597f1a3e2780fed1216f2237e8a276110b0daef.tar.gz
mandoc-a597f1a3e2780fed1216f2237e8a276110b0daef.tar.zst
mandoc-a597f1a3e2780fed1216f2237e8a276110b0daef.zip
Some time ago, i simplified mandoc_msg() such that it can be used
everywhere and not only in the parsers. For more uniform messages, use it at more places instead of err(3), in particular in the main program. While here, integrate a few trivial functions called at exactly one place into the main option parser, and let a few more functions use the normal convention of returning 0 for success and -1 for error.
Diffstat (limited to 'read.c')
-rw-r--r--read.c35
1 files changed, 17 insertions, 18 deletions
diff --git a/read.c b/read.c
index 6c27a47a..b3858061 100644
--- a/read.c
+++ b/read.c
@@ -1,4 +1,4 @@
-/* $Id: read.c,v 1.213 2019/06/03 19:58:02 schwarze Exp $ */
+/* $Id: read.c,v 1.214 2019/07/10 19:39:01 schwarze Exp $ */
/*
* Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2010-2019 Ingo Schwarze <schwarze@openbsd.org>
@@ -431,9 +431,8 @@ read_whole_file(struct mparse *curp, int fd, struct buf *fb, int *with_mmap)
int gzerrnum, retval;
if (fstat(fd, &st) == -1) {
- mandoc_msg(MANDOCERR_FILE, 0, 0,
- "fstat: %s", strerror(errno));
- return 0;
+ mandoc_msg(MANDOCERR_FSTAT, 0, 0, "%s", strerror(errno));
+ return -1;
}
/*
@@ -446,13 +445,13 @@ read_whole_file(struct mparse *curp, int fd, struct buf *fb, int *with_mmap)
if (curp->gzip == 0 && S_ISREG(st.st_mode)) {
if (st.st_size > 0x7fffffff) {
mandoc_msg(MANDOCERR_TOOLARGE, 0, 0, NULL);
- return 0;
+ return -1;
}
*with_mmap = 1;
fb->sz = (size_t)st.st_size;
fb->buf = mmap(NULL, fb->sz, PROT_READ, MAP_SHARED, fd, 0);
if (fb->buf != MAP_FAILED)
- return 1;
+ return 0;
}
if (curp->gzip) {
@@ -464,15 +463,15 @@ read_whole_file(struct mparse *curp, int fd, struct buf *fb, int *with_mmap)
* which this function must not do.
*/
if ((fd = dup(fd)) == -1) {
- mandoc_msg(MANDOCERR_FILE, 0, 0,
- "dup: %s", strerror(errno));
- return 0;
+ mandoc_msg(MANDOCERR_DUP, 0, 0,
+ "%s", strerror(errno));
+ return -1;
}
if ((gz = gzdopen(fd, "rb")) == NULL) {
- mandoc_msg(MANDOCERR_FILE, 0, 0,
- "gzdopen: %s", strerror(errno));
+ mandoc_msg(MANDOCERR_GZDOPEN, 0, 0,
+ "%s", strerror(errno));
close(fd);
- return 0;
+ return -1;
}
} else
gz = NULL;
@@ -484,7 +483,7 @@ read_whole_file(struct mparse *curp, int fd, struct buf *fb, int *with_mmap)
*with_mmap = 0;
off = 0;
- retval = 0;
+ retval = -1;
fb->sz = 0;
fb->buf = NULL;
for (;;) {
@@ -500,13 +499,13 @@ read_whole_file(struct mparse *curp, int fd, struct buf *fb, int *with_mmap)
read(fd, fb->buf + (int)off, fb->sz - off);
if (ssz == 0) {
fb->sz = off;
- retval = 1;
+ retval = 0;
break;
}
if (ssz == -1) {
if (curp->gzip)
(void)gzerror(gz, &gzerrnum);
- mandoc_msg(MANDOCERR_FILE, 0, 0, "read: %s",
+ mandoc_msg(MANDOCERR_READ, 0, 0, "%s",
curp->gzip && gzerrnum != Z_ERRNO ?
zError(gzerrnum) : strerror(errno));
break;
@@ -515,10 +514,10 @@ read_whole_file(struct mparse *curp, int fd, struct buf *fb, int *with_mmap)
}
if (curp->gzip && (gzerrnum = gzclose(gz)) != Z_OK)
- mandoc_msg(MANDOCERR_FILE, 0, 0, "gzclose: %s",
+ mandoc_msg(MANDOCERR_GZCLOSE, 0, 0, "%s",
gzerrnum == Z_ERRNO ? strerror(errno) :
zError(gzerrnum));
- if (retval == 0) {
+ if (retval == -1) {
free(fb->buf);
fb->buf = NULL;
}
@@ -557,7 +556,7 @@ mparse_readfd(struct mparse *curp, int fd, const char *filename)
mandoc_msg(MANDOCERR_ROFFLOOP, curp->line, 0, NULL);
return;
}
- if (read_whole_file(curp, fd, &blk, &with_mmap) == 0)
+ if (read_whole_file(curp, fd, &blk, &with_mmap) == -1)
return;
/*