diff options
| author | Daniel Friesel <derf@derf.homelinux.org> | 2009-05-22 10:36:36 +0200 | 
|---|---|---|
| committer | Daniel Friesel <derf@derf.homelinux.org> | 2009-05-22 10:36:36 +0200 | 
| commit | d1b176119a4c4152f762e31aeca2b855f8404ad9 (patch) | |
| tree | 44585cfa27f45816195711cf25134ecb2d0a7e60 | |
| parent | e952d88c1f0c1420e990114572bbd0d94e158950 (diff) | |
envstore: Added support for values with nwelines
| -rwxr-xr-x | bin/envstore | 10 | ||||
| -rwxr-xr-x | test/main | 10 | 
2 files changed, 18 insertions, 2 deletions
diff --git a/bin/envstore b/bin/envstore index e3398b6..afc9f3e 100755 --- a/bin/envstore +++ b/bin/envstore @@ -45,7 +45,11 @@ sub load_store {  		chomp;  		/^(\S+)\s+(.*)$/ or next;  		($key, $value) = ($1, $2); -		$store{$key} = $value; +		if (exists($store{$key})) { +			$store{$key} .= "\n$value"; +		} else { +			$store{$key} = $value; +		}  	}  	close($handle);  } @@ -55,7 +59,9 @@ sub save_store {  	umask(0077);  	open(my $handle, '>', $store_file) or die("Cannot open $store_file: $!");  	foreach $key (keys(%store)) { -		print $handle "$key\t$store{$key}\n"; +		foreach (split(/\n/, $store{$key})) { +			print $handle "$key\t$_\n"; +		}  	}  	close($handle);  } @@ -100,6 +100,16 @@ unset hello  $envstore clear  if ((test_extended)) { +	echo "# $envstore save (newline in value)" +	export flurbl=$'yo my fresh\nhomies' +	$envstore save flurbl +	unset flurbl +	# XXX eval does not like newlines. Not even in dash. +	source <($envstore eval) +	[[ $flurbl == $'yo my fresh\nhomies' ]] +	unset flurbl +	$envstore clear +  	echo "# invalid invocations"  	! $envstore save  	unset nonexistent  | 
