Date: Tue, 16 Oct 2018 17:17:12 +0000 (UTC) From: Yuri Pankov <yuripv@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r339385 - head/contrib/mandoc Message-ID: <201810161717.w9GHHC36023069@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: yuripv Date: Tue Oct 16 17:17:11 2018 New Revision: 339385 URL: https://svnweb.freebsd.org/changeset/base/339385 Log: apropos/whatis: use output of manpath(1) to set defpaths if -M is not specified. This fixes searching the paths specified in /usr/local/etc/man.d/*.conf, as currently apropos/whatis from mandoc suite aren't aware about them. PR: 227922 Reviewed by: bapt Approved by: re (gjb), kib (mentor) Differential Revision: https://reviews.freebsd.org/D17454 Modified: head/contrib/mandoc/main.c Modified: head/contrib/mandoc/main.c ============================================================================== --- head/contrib/mandoc/main.c Tue Oct 16 17:00:42 2018 (r339384) +++ head/contrib/mandoc/main.c Tue Oct 16 17:17:11 2018 (r339385) @@ -248,7 +248,13 @@ main(int argc, char *argv[]) outmode = OUTMODE_ALL; break; case 'M': +#ifdef __FreeBSD__ + defpaths = strdup(optarg); + if (defpaths == NULL) + err(1, "strdup"); +#else defpaths = optarg; +#endif break; case 'm': auxpaths = optarg; @@ -380,9 +386,34 @@ main(int argc, char *argv[]) outmode == OUTMODE_ONE) search.firstmatch = 1; +#ifdef __FreeBSD__ + /* + * Use manpath(1) to populate defpaths if -M is not specified. + * Don't treat any failures as fatal. + */ + if (defpaths == NULL) { + FILE *fp; + size_t linecap = 0; + ssize_t linelen; + + if ((fp = popen("/usr/bin/manpath -q", "r")) != NULL) { + if ((linelen = getline(&defpaths, + &linecap, fp)) > 0) { + /* Strip trailing newline */ + defpaths[linelen - 1] = '\0'; + } + pclose(fp); + } + } +#endif + /* Access the mandoc database. */ manconf_parse(&conf, conf_file, defpaths, auxpaths); +#ifdef __FreeBSD__ + free(defpaths); +#endif + if ( ! mansearch(&search, &conf.manpath, argc, argv, &res, &sz)) usage(search.argmode);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201810161717.w9GHHC36023069>