diff options
Diffstat (limited to 'source/rvs-core/lib/rvsdb')
-rwxr-xr-x | source/rvs-core/lib/rvsdb | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/source/rvs-core/lib/rvsdb b/source/rvs-core/lib/rvsdb new file mode 100755 index 0000000..8cd4316 --- /dev/null +++ b/source/rvs-core/lib/rvsdb @@ -0,0 +1,83 @@ +#!$$SHELL$$ +# abomination module:rvs:lib:rvsdb +#name='rvs db' +#ver='0.6.0' +logver='0.5.0' +# Copyright (C) 2009 Luke Shumaker +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# Originally written by Luke Shumaker <lukeshu@sbcglobal.net>. + +source "`rvs -d`/lib/stdio" +#source "`rvs -d`/lib/rvsdb" + +repo='.rvs' + +# getid file +getid() { + #md5sum $file | sed "s/ .*$//" + sha1sum $file | sed "s/ .*$//" +} + +# loginit LOG +loginit() { + log="$1" + echo "#!rvsdb $logver" > "$log"; +} + +# lograw LOG +lograw() { + log="$1" + sed '1s/#!rvsdb .*//' "$log" +} + +# _find LOG FIELD VAL +_find() { + log="$1" + field="$2" + val="$3" + lograw $log | \ + cut -d : -f field | \ + sed -n "/^$val$/=" | \ + tr "\n" , | \ + sed 's/,$//' +} + +# logread LOG VAR +logread() { + log="$1" + var="$2" + lograw "$log" | sed -n "s/^$var://p" + #lograw "$log" | sed -n `_find "$log" '1' "$var"`p | cut -d : -f 2- +} + +# logwrite LOG VAR VAL +logwrite() { + log="$1" + var="$2" + val="$3" + + #lines=`_find "$log" '1' "$var"` + #if [ "$lines" = '' ]; then + if [ `lograw "$log" | grep "^$var:"` = '' ]; then + # no exiswhereting occurances + echo "$var:$val" >> "$log" + else + # found others + sed -i "^s/$var:.*/$var:$val/" "$log" + #lograw "$log" | ?????? + fi +} + +# logfind LOG VAL +logfind() { + log="$1" + val="$2" + # make a comma-delimeted list of the lines with our values + lines=`_find "$log" '2-' "$val"` + lograw "$log" | sed -n ${lines}p | cut -d : -f 1 +} + |