>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

Reply via email to