diff --git a/tools/virsh.c b/tools/virsh.c index 5dc482d90e..f74698fa5f 100644 --- a/tools/virsh.c +++ b/tools/virsh.c @@ -935,6 +935,7 @@ main(int argc, char **argv) memset(ctl, 0, sizeof(vshControl)); memset(&virshCtl, 0, sizeof(virshControl)); ctl->name = "virsh"; /* hardcoded name of the binary */ + ctl->env_prefix = "VIRSH"; ctl->log_fd = -1; /* Initialize log file descriptor */ ctl->debug = VSH_DEBUG_DEFAULT; ctl->hooks = &hooks; diff --git a/tools/virt-admin.c b/tools/virt-admin.c index a59c4c7226..2ae05dab72 100644 --- a/tools/virt-admin.c +++ b/tools/virt-admin.c @@ -1340,6 +1340,7 @@ main(int argc, char **argv) memset(ctl, 0, sizeof(vshControl)); memset(&virtAdminCtl, 0, sizeof(vshAdmControl)); ctl->name = "virt-admin"; /* hardcoded name of the binary */ + ctl->env_prefix = "VIRT_ADMIN"; ctl->log_fd = -1; /* Initialize log file descriptor */ ctl->debug = VSH_DEBUG_DEFAULT; ctl->hooks = &hooks; diff --git a/tools/vsh.c b/tools/vsh.c index 400b94eb04..6823ab509e 100644 --- a/tools/vsh.c +++ b/tools/vsh.c @@ -2830,16 +2830,10 @@ static int vshReadlineInit(vshControl *ctl) { char *userdir = NULL; - char *name_capitalized = NULL; int max_history = 500; int ret = -1; char *histsize_env = NULL; const char *histsize_str = NULL; - const char *strings[] = { - name_capitalized, - "HISTSIZE", - NULL - }; /* Allow conditional parsing of the ~/.inputrc file. * Work around ancient readline 4.1 (hello Mac OS X), @@ -2852,8 +2846,7 @@ vshReadlineInit(vshControl *ctl) rl_basic_word_break_characters = " \t\n\\`@$><=;|&{("; - if (virStringToUpper(&name_capitalized, ctl->name) < 0 || - !(histsize_env = virStringJoin(strings, "_"))) + if (virAsprintf(&histsize_env, "%s_HISTSIZE", ctl->env_prefix) < 0) goto cleanup; /* Limit the total size of the history buffer */ @@ -2895,7 +2888,6 @@ vshReadlineInit(vshControl *ctl) cleanup: VIR_FREE(userdir); - VIR_FREE(name_capitalized); VIR_FREE(histsize_env); return ret; } @@ -2967,10 +2959,14 @@ static int vshInitDebug(vshControl *ctl) { const char *debugEnv; + char *env = NULL; if (ctl->debug == VSH_DEBUG_DEFAULT) { + if (virAsprintf(&env, "%s_DEBUG", ctl->env_prefix) < 0) + return -1; + /* log level not set from commandline, check env variable */ - debugEnv = virGetEnvAllowSUID("VSH_DEBUG"); + debugEnv = virGetEnvAllowSUID(env); if (debugEnv) { int debug; if (virStrToLong_i(debugEnv, NULL, 10, &debug) < 0 || @@ -2981,15 +2977,20 @@ vshInitDebug(vshControl *ctl) ctl->debug = debug; } } + VIR_FREE(env); } if (ctl->logfile == NULL) { + if (virAsprintf(&env, "%s_LOG_FILE", ctl->env_prefix) < 0) + return -1; + /* log file not set from cmdline */ - debugEnv = virGetEnvBlockSUID("VSH_LOG_FILE"); + debugEnv = virGetEnvBlockSUID(env); if (debugEnv && *debugEnv) { ctl->logfile = vshStrdup(ctl, debugEnv); vshOpenLogFile(ctl); } + VIR_FREE(env); } return 0; diff --git a/tools/vsh.h b/tools/vsh.h index 8d6739724c..7f430552e2 100644 --- a/tools/vsh.h +++ b/tools/vsh.h @@ -197,6 +197,7 @@ struct _vshControl { const char *name; /* hardcoded name of the binary that cannot * be changed without recompilation compared * to program name */ + const char *env_prefix; /* hardcoded environment variable prefix */ char *connname; /* connection name */ char *progname; /* program name */ vshCmd *cmd; /* the current command */