summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRenato Botelho <renato@netgate.com>2016-03-16 15:15:42 -0300
committerRenato Botelho <renato@netgate.com>2016-03-16 16:19:53 -0300
commita948633c5c19e3ec8669f13103236258d72992d6 (patch)
tree1f59e7400bf8e6b7bf4491cfbcfb162ebfc15c6b
parent697b1e0795d9b71caa445ad91b71f8add6864e14 (diff)
downloadpfsense-a948633c5c19e3ec8669f13103236258d72992d6.zip
pfsense-a948633c5c19e3ec8669f13103236258d72992d6.tar.gz
Add an option to define extra env vars to pkg_call() and pkg_exec()
-rw-r--r--src/etc/inc/pkg-utils.inc14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/etc/inc/pkg-utils.inc b/src/etc/inc/pkg-utils.inc
index 4aa8256..8cb3bfc 100644
--- a/src/etc/inc/pkg-utils.inc
+++ b/src/etc/inc/pkg-utils.inc
@@ -100,7 +100,7 @@ function pkg_update($force = false) {
}
/* return an array with necessary environment vars for pkg */
-function pkg_env() {
+function pkg_env($extra_env = array()) {
global $config, $g;
$pkg_env_vars = array(
@@ -115,11 +115,15 @@ function pkg_env() {
$pkg_env_vars['PKG_CACHEDIR'] = '/root/var/cache/pkg';
}
+ foreach ($extra_env as $key => $value) {
+ $pkg_env_vars[$key] = $value;
+ }
+
return $pkg_env_vars;
}
/* Execute a pkg call */
-function pkg_call($params, $mute = false) {
+function pkg_call($params, $mute = false, $extra_env = array()) {
global $g, $config;
if (empty($params)) {
@@ -140,7 +144,7 @@ function pkg_call($params, $mute = false) {
pkg_debug("pkg_call(): {$params}\n");
$process = proc_open("/usr/sbin/pkg {$params}", $descriptorspec, $pipes,
- '/', pkg_env());
+ '/', pkg_env($extra_env));
if (!is_resource($process)) {
conf_mount_ro();
@@ -217,7 +221,7 @@ function pkg_call($params, $mute = false) {
}
/* Execute pkg with $params, fill stdout and stderr and return pkg rc */
-function pkg_exec($params, &$stdout, &$stderr) {
+function pkg_exec($params, &$stdout, &$stderr, $extra_env = array()) {
global $g, $config;
if (empty($params)) {
@@ -238,7 +242,7 @@ function pkg_exec($params, &$stdout, &$stderr) {
pkg_debug("pkg_exec(): {$params}\n");
$process = proc_open("/usr/sbin/pkg {$params}", $descriptorspec, $pipes,
- '/', pkg_env());
+ '/', pkg_env($extra_env));
if (!is_resource($process)) {
conf_mount_ro();
OpenPOWER on IntegriCloud