X-Git-Url: https://git.plutz.net/?a=blobdiff_plain;f=db_meta.sh;h=9f427fc65b38c3b554ca20c0d61ece87181b55af;hb=ccc8de4ebdd18fb52cdb8ce2013573d079186fba;hp=f1eec4d237db1c97ab890b7f71c92a4564c70f71;hpb=2c973a1497b88df3b970b7df316d5ece7730858d;p=serve0 diff --git a/db_meta.sh b/db_meta.sh index f1eec4d..9f427fc 100755 --- a/db_meta.sh +++ b/db_meta.sh @@ -6,15 +6,15 @@ include_dbmeta="$0" . "$_EXEC/cgilite/storage.sh" # == FILE FORMAT == -# LENGTH WIDTH HEIGHT TAGS COMMENT NAME +# LENGTH WIDTH HEIGHT TAGS COMMENT NAME GROUP # == GLOBALS == UNSET_META='unset \ - META_LENGTH META_WIDTH META_HEIGHT META_TAGS META_COMMENT META_NAME + META_LENGTH META_WIDTH META_HEIGHT META_TAGS META_COMMENT META_NAME META_GROUP ' LOCAL_META='local \ - META_LENGTH META_WIDTH META_HEIGHT META_TAGS META_COMMENT META_NAME + META_LENGTH META_WIDTH META_HEIGHT META_TAGS META_COMMENT META_NAME META_GROUP ' eval "$UNSET_META" @@ -28,12 +28,14 @@ read_meta() { # Global exports META_LENGTH='' META_WIDTH='' META_HEIGHT='' META_TAGS='' - META_COMMENT='' META_NAME='' + META_COMMENT='' META_NAME='' META_GROUP='' if [ $# -eq 0 ]; then - read -r META_LENGTH META_WIDTH META_HEIGHT META_TAGS META_COMMENT META_NAME + read -r META_LENGTH META_WIDTH META_HEIGHT META_TAGS META_COMMENT \ + META_NAME META_GROUP elif [ "$name" -a -f "$meta_db" -a -r "$meta_db" ]; then - read -r META_LENGTH META_WIDTH META_HEIGHT META_TAGS META_COMMENT META_NAME <<-EOF + read -r META_LENGTH META_WIDTH META_HEIGHT META_TAGS META_COMMENT \ + META_NAME META_GROUP <<-EOF $(grep -F " ${name}${CR}" "$meta_db") EOF fi @@ -41,6 +43,7 @@ read_meta() { META_NAME="$(UNSTRING "${META_NAME%${CR}}")" META_COMMENT="$(UNSTRING "${META_COMMENT#comment=}")" META_TAGS="$(UNSTRING "${META_TAGS#tags=}")" + META_GROUP="${META_GROUP#\\}" else eval "$UNSET_META" return 1 @@ -48,8 +51,8 @@ read_meta() { } update_meta(){ - local name="${1:=${META_NAME}}" tags comment length width height - local LENGTH WIDTH HEIGH TAGS COMMENT NAME + local name="${1:=${META_NAME}}" tags comment length width height group + local LENGTH WIDTH HEIGH TAGS COMMENT NAME GROUP local arg cnt meta_db="$_DATA/.index/meta" [ "${name%%/*}" != "$name" ] \ @@ -62,23 +65,24 @@ update_meta(){ lenght=*) lenght="${arg#*=}";; width=*) width="${arg#*=}";; height=*) height="${arg#*=}";; + group=*) group="${arg#*=}";; esac; done if LOCK "$meta_db"; then - read -r LENGTH WIDTH HEIGHT TAGS COMMENT NAME <<-EOF + read -r LENGTH WIDTH HEIGHT TAGS COMMENT NAME GROUP <<-EOF $(grep -F " ${name}${CR}" "$meta_db") EOF if [ ! "$NAME" ]; then RELEASE "$meta_db" return 1 fi - printf '%i %i %i tags=%s comment=%s %s\r\n' \ + printf '%i %i %i tags=%s comment=%s %s\r %s\n' \ "${length:-${length-${LENGTH}}${length+0}}" \ "${width:-${width-${WIDTH}}${width+0}}" \ "${height:-${height-${HEIGHT}}${height+0}}" \ "$(STRING "${tags-$(UNSTRING "${TAGS#tags=}")}")" \ "$(STRING "${comment-$(UNSTRING "${COMMENT#comment=}")}")" \ - "${NAME%${CR}}" \ + "${NAME%${CR}}" "${group:-${GROUP:-\\}}" \ >"${meta_db}.$$" grep -vF " ${name}${CR}" "$meta_db" >>"${meta_db}.$$" @@ -92,20 +96,20 @@ update_meta(){ new_meta(){ local name="$1" meta_db="$_DATA/.index/meta" - local LENGTH WIDTH HEIGHT TAGS COMMENT NAME + local LENGTH WIDTH HEIGHT TAGS COMMENT NAME GROUP [ "${name%%/*}" != "$name" ] \ && meta_db="$_DATA/${name%%/*}/.index/meta" name="$(STRING "${name##*/}")" if LOCK "$meta_db"; then - while read -r LENGTH WIDTH HEIGHT TAGS COMMENT NAME; do + while read -r LENGTH WIDTH HEIGHT TAGS COMMENT NAME GROUP; do if [ "$name" = "${NAME%${CR}}" ]; then RELEASE "$vid_db" return 1 fi done <"$meta_db" - printf '0 0 0 tags=\\ comment=\\ %s\r\n' \ + printf '0 0 0 tags=\\ comment=\\ %s\r \\\n' \ "${name}" >>"$meta_db" RELEASE "$meta_db" else @@ -115,18 +119,18 @@ new_meta(){ delete_meta() { local name="$1" meta_db="$_DATA/.index/meta" - local LENGTH WIDTH HEIGHT TAGS COMMENT NAME + local LENGTH WIDTH HEIGHT TAGS COMMENT NAME GROUP [ "${name%%/*}" != "$name" ] \ && meta_db="$_DATA/${name%%/*}/.index/meta" name="$(STRING "${name##*/}")" if LOCK "$meta_db"; then - while read -r LENGTH WIDTH HEIGHT TAGS COMMENT NAME; do + while read -r LENGTH WIDTH HEIGHT TAGS COMMENT NAME GROUP; do [ "$name" = "${NAME%${CR}}" ] \ - || printf '%i %i %i tags=%s comment=%s %s\r\n' \ + || printf '%i %i %i tags=%s comment=%s %s\r %s\n' \ "$length" "$width" "$height" "${TAGS#tags=}" \ - "${COMMENT#comment=}" "${NAME%${CR}}" + "${COMMENT#comment=}" "${NAME%${CR}}" "${GROUP:-\\}" done <"$meta_db" >"${meta_db}.$$" mv -- "${meta_db}.$$" "$meta_db" @@ -138,7 +142,7 @@ delete_meta() { list_meta(){ local meta pfx - local LENGTH WIDTH HEIGHT TAGS COMMENT NAME + local LENGTH WIDTH HEIGHT TAGS COMMENT NAME GROUP if [ "$#" -eq 0 ]; then find "$_DATA" -path '*/.index/meta' @@ -151,10 +155,10 @@ list_meta(){ pfx="$(STRING "${pfx#/}")" [ "$pfx" = '\' ] && pfx='' || pfx="${pfx}/" - while read -r LENGTH WIDTH HEIGHT TAGS COMMENT NAME; do - printf '%i %i %i tags=%s comment=%s %s%s\r\n' \ + while read -r LENGTH WIDTH HEIGHT TAGS COMMENT NAME GROUP; do + printf '%i %i %i tags=%s comment=%s %s%s\r %s\n' \ $LENGTH $WIDTH $HEIGHT "${TAGS#tags=}" \ - "${COMMENT#comment=}" "${pfx}" "${NAME%${CR}}" + "${COMMENT#comment=}" "${pfx}" "${NAME%${CR}}" "${GROUP:-\\}" done <"$meta" done }