]> git.plutz.net Git - serve0/blobdiff - db_meta.sh
quicker update function
[serve0] / db_meta.sh
index e78bcc51dcb11ab7a9446390661cb9f5da4400c0..f1eec4d237db1c97ab890b7f71c92a4564c70f71 100755 (executable)
@@ -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