Make use of the getlocalbase() function for run-time adjustment of the
local software base directory, as committed in SVN rev. 367813. The pkg and mailwrapper programs used the LOCALBASE environment variable for this purpose and this functionality is preserved by getlocalbase(). After this change, the value of the user.localbase sysctl variable is used if present (and not overridden in the environment). The nvmecontrol program gains support of a dynamic path to its plugin directory with this update. Differential Revision: https://reviews.freebsd.org/D27237
This commit is contained in:
parent
991f6e7534
commit
56d11d4a37
@ -287,7 +287,7 @@ arg_parse(int argc, char * const * argv, const struct cmd *f)
|
||||
* Loads all the .so's from the specified directory.
|
||||
*/
|
||||
void
|
||||
cmd_load_dir(const char *dir __unused, cmd_load_cb_t cb __unused, void *argp __unused)
|
||||
cmd_load_dir(const char *dir, cmd_load_cb_t cb, void *argp)
|
||||
{
|
||||
DIR *d;
|
||||
struct dirent *dent;
|
||||
|
@ -38,6 +38,7 @@ __FBSDID("$FreeBSD$");
|
||||
#include <err.h>
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
#include <libutil.h>
|
||||
#include <paths.h>
|
||||
#include <stdbool.h>
|
||||
#include <stddef.h>
|
||||
@ -178,11 +179,13 @@ get_nsid(int fd, char **ctrlr_str, uint32_t *nsid)
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
static char dir[MAXPATHLEN];
|
||||
|
||||
cmd_init();
|
||||
|
||||
cmd_load_dir("/lib/nvmecontrol", NULL, NULL);
|
||||
cmd_load_dir(_PATH_LOCALBASE "/lib/nvmecontrol", NULL, NULL);
|
||||
snprintf(dir, MAXPATHLEN, "%s/lib/nvmecontrol", getlocalbase());
|
||||
cmd_load_dir(dir, NULL, NULL);
|
||||
|
||||
cmd_dispatch(argc, argv, NULL);
|
||||
|
||||
|
@ -106,7 +106,7 @@ main(int argc, char *argv[], char *envp[])
|
||||
addarg(&al, argv[0]);
|
||||
|
||||
snprintf(localmailerconf, MAXPATHLEN, "%s/etc/mail/mailer.conf",
|
||||
getenv("LOCALBASE") ? getenv("LOCALBASE") : _PATH_LOCALBASE);
|
||||
getlocalbase());
|
||||
|
||||
mailerconf = localmailerconf;
|
||||
if ((config = fopen(localmailerconf, "r")) == NULL)
|
||||
|
@ -25,6 +25,6 @@ MAN= pkg.7
|
||||
|
||||
CFLAGS+=-I${SRCTOP}/contrib/libucl/include
|
||||
.PATH: ${SRCTOP}/contrib/libucl/include
|
||||
LIBADD= archive fetch ucl sbuf crypto ssl
|
||||
LIBADD= archive fetch ucl sbuf crypto ssl util
|
||||
|
||||
.include <bsd.prog.mk>
|
||||
|
@ -40,6 +40,7 @@ __FBSDID("$FreeBSD$");
|
||||
#include <ucl.h>
|
||||
#include <err.h>
|
||||
#include <errno.h>
|
||||
#include <libutil.h>
|
||||
#include <paths.h>
|
||||
#include <stdbool.h>
|
||||
#include <unistd.h>
|
||||
@ -455,9 +456,8 @@ config_init(void)
|
||||
}
|
||||
|
||||
/* Read LOCALBASE/etc/pkg.conf first. */
|
||||
localbase = getenv("LOCALBASE") ? getenv("LOCALBASE") : _PATH_LOCALBASE;
|
||||
snprintf(confpath, sizeof(confpath), "%s/etc/pkg.conf",
|
||||
localbase);
|
||||
localbase = getlocalbase();
|
||||
snprintf(confpath, sizeof(confpath), "%s/etc/pkg.conf", localbase);
|
||||
|
||||
if (access(confpath, F_OK) == 0 && read_conf_file(confpath,
|
||||
CONFFILE_PKG))
|
||||
|
@ -43,12 +43,12 @@ __FBSDID("$FreeBSD$");
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
#include <fetch.h>
|
||||
#include <libutil.h>
|
||||
#include <paths.h>
|
||||
#include <stdbool.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include <ucl.h>
|
||||
|
||||
#include <openssl/err.h>
|
||||
@ -1045,8 +1045,7 @@ main(int argc, char *argv[])
|
||||
pkgarg = NULL;
|
||||
yes = false;
|
||||
|
||||
snprintf(pkgpath, MAXPATHLEN, "%s/sbin/pkg",
|
||||
getenv("LOCALBASE") ? getenv("LOCALBASE") : _PATH_LOCALBASE);
|
||||
snprintf(pkgpath, MAXPATHLEN, "%s/sbin/pkg", getlocalbase());
|
||||
|
||||
if (argc > 1 && strcmp(argv[1], "bootstrap") == 0) {
|
||||
bootstrap_only = true;
|
||||
|
Loading…
Reference in New Issue
Block a user