diff options
author | Ingo Schwarze <schwarze@openbsd.org> | 2019-07-10 19:39:01 +0000 |
---|---|---|
committer | Ingo Schwarze <schwarze@openbsd.org> | 2019-07-10 19:39:01 +0000 |
commit | a597f1a3e2780fed1216f2237e8a276110b0daef (patch) | |
tree | e59b39076a9f1141d186002bff45c25d72423539 /tag.c | |
parent | 589c83d3597ba6229a69bda10630710c515d2508 (diff) | |
download | mandoc-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 'tag.c')
-rw-r--r-- | tag.c | 32 |
1 files changed, 21 insertions, 11 deletions
@@ -1,6 +1,6 @@ -/* $Id: tag.c,v 1.21 2018/11/22 11:30:23 schwarze Exp $ */ +/* $Id: tag.c,v 1.22 2019/07/10 19:39:01 schwarze Exp $ */ /* - * Copyright (c) 2015, 2016, 2018 Ingo Schwarze <schwarze@openbsd.org> + * Copyright (c) 2015, 2016, 2018, 2019 Ingo Schwarze <schwarze@openbsd.org> * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -18,9 +18,7 @@ #include <sys/types.h> -#if HAVE_ERR -#include <err.h> -#endif +#include <errno.h> #include <limits.h> #include <signal.h> #include <stddef.h> @@ -32,6 +30,7 @@ #include "mandoc_aux.h" #include "mandoc_ohash.h" +#include "mandoc.h" #include "tag.h" struct tag_entry { @@ -83,8 +82,10 @@ tag_init(void) /* Save the original standard output for use by the pager. */ - if ((tag_files.ofd = dup(STDOUT_FILENO)) == -1) + if ((tag_files.ofd = dup(STDOUT_FILENO)) == -1) { + mandoc_msg(MANDOCERR_DUP, 0, 0, "%s", strerror(errno)); goto fail; + } /* Create both temporary output files. */ @@ -92,12 +93,20 @@ tag_init(void) sizeof(tag_files.ofn)); (void)strlcpy(tag_files.tfn, "/tmp/man.XXXXXXXXXX", sizeof(tag_files.tfn)); - if ((ofd = mkstemp(tag_files.ofn)) == -1) + if ((ofd = mkstemp(tag_files.ofn)) == -1) { + mandoc_msg(MANDOCERR_MKSTEMP, 0, 0, + "%s: %s", tag_files.ofn, strerror(errno)); goto fail; - if ((tag_files.tfd = mkstemp(tag_files.tfn)) == -1) + } + if ((tag_files.tfd = mkstemp(tag_files.tfn)) == -1) { + mandoc_msg(MANDOCERR_MKSTEMP, 0, 0, + "%s: %s", tag_files.tfn, strerror(errno)); goto fail; - if (dup2(ofd, STDOUT_FILENO) == -1) + } + if (dup2(ofd, STDOUT_FILENO) == -1) { + mandoc_msg(MANDOCERR_DUP, 0, 0, "%s", strerror(errno)); goto fail; + } close(ofd); /* @@ -221,10 +230,11 @@ tag_write(void) return; if (tag_files.tagname != NULL && ohash_find(&tag_data, ohash_qlookup(&tag_data, tag_files.tagname)) == NULL) { - warnx("%s: no such tag", tag_files.tagname); + mandoc_msg(MANDOCERR_TAG, 0, 0, "%s", tag_files.tagname); tag_files.tagname = NULL; } - stream = fdopen(tag_files.tfd, "w"); + if ((stream = fdopen(tag_files.tfd, "w")) == NULL) + mandoc_msg(MANDOCERR_FDOPEN, 0, 0, "%s", strerror(errno)); entry = ohash_first(&tag_data, &slot); while (entry != NULL) { if (stream != NULL && entry->prio >= 0) |