diff options
author | Colin Watson <cjwatson@debian.org> | 2018-05-29 05:58:47 +0100 |
---|---|---|
committer | Colin Watson <cjwatson@debian.org> | 2018-05-29 06:10:44 +0100 |
commit | c150786d1ff2966406bd052c48ccca874f6749d5 (patch) | |
tree | 4b42b9c666829ed65174e751db46363ba52d85ae /src/whatis.c | |
parent | 3b1ed1a73997b627b571df66f4b32af5d4be50ed (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.c | 10 |
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); } |