summaryrefslogtreecommitdiffstats
path: root/mandocdb.c
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2015-10-11 21:12:54 +0000
committerIngo Schwarze <schwarze@openbsd.org>2015-10-11 21:12:54 +0000
commit1efc62347acbd0d7c4f4e3e264fc1678f793560f (patch)
treef768bf7b681587553ac984a5599df4e4506f4f05 /mandocdb.c
parent4888f53396a76dbdeb8fa67b352672a0b231112f (diff)
downloadmandoc-1efc62347acbd0d7c4f4e3e264fc1678f793560f.tar.gz
Finally use __progname, err(3) and warn(3).
That's more readable and less error-prone than fumbling around with argv[0], fprintf(3), strerror(3), perror(3), and exit(3). It's a bad idea to boycott good interfaces merely because standards committees ignore them. Instead, let's provide compatibility modules for archaic systems (like commercial Solaris) that still don't have them. The compat module has an UCB Copyright (c) 1993...
Diffstat (limited to 'mandocdb.c')
-rw-r--r--mandocdb.c25
1 files changed, 9 insertions, 16 deletions
diff --git a/mandocdb.c b/mandocdb.c
index 6add97c0..c155abf5 100644
--- a/mandocdb.c
+++ b/mandocdb.c
@@ -23,6 +23,7 @@
#include <assert.h>
#include <ctype.h>
+#include <err.h>
#include <errno.h>
#include <fcntl.h>
#if HAVE_FTS
@@ -189,8 +190,9 @@ static int set_basedir(const char *, int);
static int treescan(void);
static size_t utf8(unsigned int, char [7]);
+extern char *__progname;
+
static char tempfilename[32];
-static char *progname;
static int nodb; /* no database changes */
static int mparse_options; /* abort the parse early */
static int use_all; /* use all found files */
@@ -357,12 +359,6 @@ mandocdb(int argc, char *argv[])
mpages_info.key_offset = offsetof(struct mpage, inodev);
mlinks_info.key_offset = offsetof(struct mlink, file);
- progname = strrchr(argv[0], '/');
- if (progname == NULL)
- progname = argv[0];
- else
- ++progname;
-
/*
* We accept a few different invocations.
* The CHECKOP macro makes sure that invocation styles don't
@@ -370,8 +366,7 @@ mandocdb(int argc, char *argv[])
*/
#define CHECKOP(_op, _ch) do \
if (OP_DEFAULT != (_op)) { \
- fprintf(stderr, "%s: -%c: Conflicting option\n", \
- progname, (_ch)); \
+ warnx("-%c: Conflicting option", (_ch)); \
goto usage; \
} while (/*CONSTCOND*/0)
@@ -407,9 +402,8 @@ mandocdb(int argc, char *argv[])
break;
case 'T':
if (strcmp(optarg, "utf8")) {
- fprintf(stderr, "%s: -T%s: "
- "Unsupported output format\n",
- progname, optarg);
+ warnx("-T%s: Unsupported output format",
+ optarg);
goto usage;
}
write_utf8 = 1;
@@ -436,8 +430,7 @@ mandocdb(int argc, char *argv[])
argv += optind;
if (OP_CONFFILE == op && argc > 0) {
- fprintf(stderr, "%s: -C: Too many arguments\n",
- progname);
+ warnx("-C: Too many arguments");
goto usage;
}
@@ -554,8 +547,8 @@ usage:
" %s [-DnpQ] [-Tutf8] -d dir [file ...]\n"
" %s [-Dnp] -u dir [file ...]\n"
" %s [-Q] -t file ...\n",
- progname, progname, progname,
- progname, progname);
+ __progname, __progname, __progname,
+ __progname, __progname);
return (int)MANDOCLEVEL_BADARG;
}