#!$$SHELL$$ # abomination module:rvs:lib:rvsdb #name='rvs db' #ver='0.6.2' logver='0.6.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 . 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 # escape slashes var=`echo "$var" | sed 's:/:\\\\/:g'` val=`echo "$val" | sed 's:/:\\\\/:g'` 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 }