X-Git-Url: https://git.plutz.net/?a=blobdiff_plain;f=db_meta.sh;h=f1eec4d237db1c97ab890b7f71c92a4564c70f71;hb=a2cd32dfe7f8c4fa0051ae5823552ac5c4cf4cf6;hp=e78bcc51dcb11ab7a9446390661cb9f5da4400c0;hpb=a6853a09180270edcb2d95056a496d9a30ffeacf;p=serve0 diff --git a/db_meta.sh b/db_meta.sh index e78bcc5..f1eec4d 100755 --- a/db_meta.sh +++ b/db_meta.sh @@ -3,6 +3,8 @@ [ "$include_dbmeta" ] && return 0 include_dbmeta="$0" +. "$_EXEC/cgilite/storage.sh" + # == FILE FORMAT == # LENGTH WIDTH HEIGHT TAGS COMMENT NAME @@ -15,7 +17,7 @@ LOCAL_META='local \ META_LENGTH META_WIDTH META_HEIGHT META_TAGS META_COMMENT META_NAME ' -eval "$UNSET_VIDEO" +eval "$UNSET_META" read_meta() { local name="$1" meta_db="$_DATA/.index/meta" @@ -31,10 +33,9 @@ read_meta() { if [ $# -eq 0 ]; then read -r META_LENGTH META_WIDTH META_HEIGHT META_TAGS META_COMMENT META_NAME elif [ "$name" -a -f "$meta_db" -a -r "$meta_db" ]; then - while read -r META_LENGTH META_WIDTH META_HEIGHT META_TAGS META_COMMENT META_NAME; do - [ "${META_NAME%${CR}}" = "$name" ] && break - done <"${meta_db}" - [ "${META_NAME%${CR}}" = "$name" ] || eval "$UNSET_META" + read -r META_LENGTH META_WIDTH META_HEIGHT META_TAGS META_COMMENT META_NAME <<-EOF + $(grep -F " ${name}${CR}" "$meta_db") + EOF fi if [ "$META_NAME" ]; then META_NAME="$(UNSTRING "${META_NAME%${CR}}")" @@ -48,7 +49,7 @@ read_meta() { update_meta(){ local name="${1:=${META_NAME}}" tags comment length width height - eval LENGTH WIDTH HEIGH TAGS COMMENT NAME + local LENGTH WIDTH HEIGH TAGS COMMENT NAME local arg cnt meta_db="$_DATA/.index/meta" [ "${name%%/*}" != "$name" ] \ @@ -64,21 +65,24 @@ update_meta(){ esac; done if LOCK "$meta_db"; then - while read -r LENGTH WIDTH HEIGHT TAGS COMMENT NAME; do - if [ "$name" = "${NAME%${CR}}" ]; then - printf '%i %i %i tags=%s comment=%s %s\r\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=}")}")" \ - "$(STRING "${name-$(UNSTRING "${NAME%${CR}}")}")" - else - printf '%i %i %i tags=%s comment=%s %s\r\n' \ - "$length" "$width" "$height" "${TAGS#tags=}" \ - "${COMMENT#comment=}" "${NAME%${CR}}" - fi - done <"$meta_db" >"${meta_db}.$$" + read -r LENGTH WIDTH HEIGHT TAGS COMMENT NAME <<-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' \ + "${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}}" \ + >"${meta_db}.$$" + + grep -vF " ${name}${CR}" "$meta_db" >>"${meta_db}.$$" + mv -- "${meta_db}.$$" "${meta_db}" RELEASE "$meta_db" else