+debug() { #change to false to disable debugging
+ #true && echo "$*" >>debug
+ true && [ -n "$*" ] && echo -E "$*" >>/dev/stderr
+ true && [ -z "$*" ] && tee /dev/stderr
+}
+
+# this program is supposed to be symlinked into a http root directory
+# we will use the http root as object storage (data directory) and call sub
+# programs from the directory in which the real executable resides
+# therefore we need to identify the code and data directories _EXEC and _DATA
+call="$0"
+real="$(readlink -f $call)"
+_EXEC="$(dirname "$real")" #execution directory
+_DATA="$(dirname "$call")" #storage directory
+
+[ -w "$_DATA" ] && [ -d "$_DATA" ] || die "storage directory must be writable"