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 |