summaryrefslogtreecommitdiff
path: root/src/whatis.c
diff options
context:
space:
mode:
authorColin Watson <cjwatson@debian.org>2018-05-29 05:58:47 +0100
committerColin Watson <cjwatson@debian.org>2018-05-29 06:10:44 +0100
commitc150786d1ff2966406bd052c48ccca874f6749d5 (patch)
tree4b42b9c666829ed65174e751db46363ba52d85ae /src/whatis.c
parent3b1ed1a73997b627b571df66f4b32af5d4be50ed (diff)
Use Gnulib progname module
This lets us produce more accurate error messages when programs are invoked with an absolute path. * bootstrap.conf (gnulib_modules): Add progname. * include/manconfig.h.in (program_name): Remove. * src/accessdb.c (main): Call set_program_name rather than similar hand-rolled code. * src/catman.c (main): Likewise. Don't free program_name. * src/globbing_test.c (main): Likewise. * src/lexgrog_test.c (main): Likewise. * src/man.c (main): Likewise. Don't free program_name. * src/manconv_main.c (main): Likewise. * src/mandb.c (main): Likewise. Don't free program_name. * src/manpath.c (main): Likewise. * src/tests/fspause.c (main): Likewise. * src/whatis.c (main): Likewise. * src/zsoelim_main.c (main): Likewise. * src/man.c (manopt_to_env): Run program_name through base_name, since that's no longer necessarily done up-front. * src/whatis.c (main): Run program_name through base_name before comparing it to APROPOS_NAME, since that's no longer necessarily done up-front.
Diffstat (limited to 'src/whatis.c')
-rw-r--r--src/whatis.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/whatis.c b/src/whatis.c
index 87c981bb..0918344d 100644
--- a/src/whatis.c
+++ b/src/whatis.c
@@ -57,6 +57,7 @@
#include "argp.h"
#include "dirname.h"
#include "fnmatch.h"
+#include "progname.h"
#include "xvasprintf.h"
#include "manconfig.h"
@@ -84,7 +85,6 @@ extern char *user_config_file;
static char **keywords;
static int num_keywords;
-char *program_name;
int am_apropos;
char *database;
int quiet = 1;
@@ -894,13 +894,15 @@ static int search (const char * const *pages, int num_pages)
int main (int argc, char *argv[])
{
+ char *program_base_name;
#ifdef HAVE_ICONV
char *locale_charset;
#endif
int status = OK;
- program_name = base_name (argv[0]);
- if (STREQ (program_name, APROPOS_NAME)) {
+ set_program_name (argv[0]);
+ program_base_name = base_name (program_name);
+ if (STREQ (program_base_name, APROPOS_NAME)) {
am_apropos = 1;
argp_program_version = "apropos " PACKAGE_VERSION;
} else {
@@ -918,6 +920,7 @@ int main (int argc, char *argv[])
optionp->flags |= OPTION_HIDDEN;
}
}
+ free (program_base_name);
init_debug ();
pipeline_install_post_fork (pop_all_cleanups);
@@ -999,6 +1002,5 @@ int main (int argc, char *argv[])
free_pathlist (manpathlist);
free (manp);
free (internal_locale);
- free (program_name);
exit (status);
}