>From 2b5dab9c6b7510da58db5f2fc3f10262bcda1152 Mon Sep 17 00:00:00 2001
From: Rafal Krypa <[email protected]>
Date: Fri, 14 Jan 2011 15:28:14 +0100
Subject: [PATCH] sb2-config: extend environment variables support with unsetting variables on entry.
---
utils/sb2-config | 24 +++++++++++++++++++++++-
utils/sb2-monitor.c | 3 +++
2 files changed, 26 insertions(+), 1 deletions(-)
diff --git a/utils/sb2-config b/utils/sb2-config
index d87f05c..6039539 100755
--- a/utils/sb2-config
+++ b/utils/sb2-config
@@ -36,6 +36,7 @@ Commands:
showlog show configuration log
showenv show target-specific environment variables
setenv VARIABLE VALUE set target-specific environment variable
+ clearenv VARIABLE set clearing for target-specific environment variable
unsetenv VARIABLE remove target-specific environment variable
Examples:
@@ -123,6 +124,20 @@ function setenv_var()
log_config_action "sb2-config: setenv $varname=$value"
}
+function clearenv_var()
+{
+ varname="$1"
+ [ -z "$varname" ] && usage
+
+ shift
+ value="$*"
+
+ mkdir -p "$SBOX_CONFIG_DIR/env_vars"
+ :>$SBOX_CONFIG_DIR/env_vars/$varname
+
+ log_config_action "sb2-config: clearenv $varname"
+}
+
function unsetenv_var()
{
varname="$1"
@@ -143,7 +158,13 @@ function showenv_vars()
if [ -d $SBOX_CONFIG_DIR/env_vars ]; then
count=$( ls $SBOX_CONFIG_DIR/env_vars/* 2>/dev/null | wc -l )
if [ "$count" -gt 0 ]; then
- cat $SBOX_CONFIG_DIR/env_vars/*
+ for i in $SBOX_CONFIG_DIR/env_vars/*; do
+ if [ -s "$i" ]; then
+ echo declare -x `cat "$i"`
+ else
+ echo unset `basename "$i"`
+ fi
+ done
fi
fi
# else there are none.
@@ -206,6 +227,7 @@ case "$command" in
showtarget) echo $targetname;;
showenv) showenv_vars $*;;
setenv) setenv_var $*;;
+clearenv) clearenv_var $*;;
unsetenv) unsetenv_var $*;;
showlog) show_config_log $targetname;;
*) usage;;
diff --git a/utils/sb2-monitor.c b/utils/sb2-monitor.c
index e5f8f59..fca018b 100644
--- a/utils/sb2-monitor.c
+++ b/utils/sb2-monitor.c
@@ -282,6 +282,9 @@ static void read_env_vars_from_dir(const char *envdir)
varbuf[len-1] = '\0'; /* replace \n */
DEBUG_MSG("set '%s'\n", varbuf);
putenv(strdup(varbuf));
+ } else {
+ DEBUG_MSG("unset '%s'\n", ent->d_name);
+ unsetenv(ent->d_name);
}
} else {
--
1.7.4.1
_______________________________________________
Scratchbox-devel mailing list
[email protected]
http://lists.scratchbox.org/cgi-bin/mailman/listinfo/scratchbox-devel