#!/bin/bash after () { test -z "${2##*$1*}" && echo -n "${2#*$1}"; } res="$(vsvs-locate "$2" || exit 1)" path="${res%% *}" vsvspath=$(after " " "$res") if test -f "$path" then lockfile="$base/proc/$proc/lock/" if test "${path::1}" == "." then lockfile="$lockfile$base$path" else lockfile="$lockfile$path" fi mkdir -p -- "${lockfile%/*}" echo $proc > $lockfile lockpath="$path.lock" ln $lockfile $lockpath || exit 1 # Error, cannot lock data="$(cat $path)" rm $lockpath rm $lockfile until test -z "$vsvspath" do data="$(echo -n "$data" | vsvs-parse "test \"\$key\" == \"${vsvspath%%/*}\" && echo \"\$value\" && exit 0")" vsvspath=$(after / "$vsvspath") done echo -n "$data" | vsvs-parse "$1" else for key in `ls -a $path` do test "$key" == "." || test "$key" == ".." && continue if test -f "$path/$key" then value=$(cat "$path/$key") else savedpath=$(pwd) cd "$path/$key" value=$(vsvs-archive) cd "$savedpath" fi eval "$1" done fi