]> git.plutz.net Git - serve0/commitdiff
Merge branch 'cgilite' of git.plutz.net:serve0 into cgilite
authorPaul Hänsch <paul@plutz.net>
Wed, 18 Jul 2018 07:00:39 +0000 (09:00 +0200)
committerPaul Hänsch <paul@plutz.net>
Wed, 18 Jul 2018 07:00:39 +0000 (09:00 +0200)
cgilite
index.cgi
indexmeta.sh
list.sh
multitag.sh
style.css
widgets.sh

diff --git a/cgilite b/cgilite
index d214859aadb31a565718da69754ad2573fa3f917..fcb3e2096bd811a910c686bbfe181708878ba8b4 160000 (submodule)
--- a/cgilite
+++ b/cgilite
@@ -1 +1 @@
-Subproject commit d214859aadb31a565718da69754ad2573fa3f917
+Subproject commit fcb3e2096bd811a910c686bbfe181708878ba8b4
index d6535e77a9e316358d12c81943f6ab0b2ddebd2b..1b305e4ce66f227edc56fde2331eb0b416706f72 100755 (executable)
--- a/index.cgi
+++ b/index.cgi
@@ -9,15 +9,15 @@ file_pattern='^.*\.(mov|ts|mpg|mpeg|mp4|m4v|avi|mkv|flv|sfv|wmv|ogm|ogv|webm|iso
 
 FILTER="$(GET f)"
 SEARCH="$(GET s)"
-ORDER="$(GET o |grep -m1 -xE 'Date|Name|Length' || printf Name)"
-LISTSIZE="$(COOKIE pagesize |grep -m1 -xE '[1-9][0-9]*' || printf 50)"
+ORDER="$(GET o |grep -m1 -axE 'Date|Name|Length' || printf Name)"
+LISTSIZE="$(COOKIE pagesize |grep -m1 -axE '[1-9][0-9]*' || printf 50)"
 ITEM="$(PATH "${PATH_INFO#/}")"
 
 case $(GET a) in
   setprefs)
-    SET_COOKIE +$((86400 * 90)) pagesize="$(POST pagesize |grep -m1 -xE '[1-9][0-9]*' || printf 50)"
-    SET_COOKIE +$((86400 * 90))     mode="$(POST     mode |grep -m1 -xE 'browse|index' || printf browse)"
-    SET_COOKIE +$((86400 * 90))  fakemp4="$(POST  fakemp4 |grep -m1 -xE 'yes' || printf no)"
+    SET_COOKIE +$((86400 * 90)) pagesize="$(POST pagesize |grep -m1 -axE '[1-9][0-9]*' || printf 50)"
+    SET_COOKIE +$((86400 * 90))     mode="$(POST     mode |grep -m1 -axE 'browse|index' || printf browse)"
+    SET_COOKIE +$((86400 * 90))  fakemp4="$(POST  fakemp4 |grep -m1 -axE 'yes' || printf no)"
     REDIRECT "$(POST ref)"
   ;;
 esac
index 371c51f5dc010d9eb4394e401e536810e4bff932..45a3bac008b2ee469719d6ac2b91b3a0976b9178 100644 (file)
@@ -69,7 +69,7 @@ meta_info(){
 
   if [ -d "${meta%/meta}" ]; then
     grep -aF " $(meta_name "$file")" "$meta" \
-    | grep -m1 -xE '[0-9]+     [0-9]+  [0-9]+  tags=[^ ]*      comment=[^      ]*      .+' \
+    | grep -m1 -axE '[0-9]+    [0-9]+  [0-9]+  tags=[^ ]*      comment=[^      ]*      .+' \
     || meta_file "$file"
   else
     printf '0\t0\t0\ttags=\tcomment=\t\r'
@@ -84,7 +84,7 @@ meta_dir(){
   if [ -d "$dir/.index" -a \! -f "$meta" ] && LOCK "$meta"; then
     touch "$meta"  # preliminary touch to prevent concurrent generators
     find "$dir" -type f -mindepth 1 -maxdepth 1 \
-    | grep -E "$file_pattern" \
+    | grep -aE "$file_pattern" \
     | while read -r v; do
       meta_line "$v"
     done >"$meta"
@@ -93,7 +93,7 @@ meta_dir(){
   elif [ -d "$dir/.index" -a "$dir" -nt "$meta" ] && LOCK "$meta"; then
     touch "$meta"
     find "$dir" -type f -mindepth 1 -maxdepth 1 \
-    | grep -E "$file_pattern" \
+    | grep -aE "$file_pattern" \
     | while read -r v; do
       if [ "$v" -nt "$meta" ]; then
         grep -qF "     $(meta_name "$v")" "$meta" \
diff --git a/list.sh b/list.sh
index 2dc1a8340307a7ca0f09f4d26c74d45b975d1ba8..9e2f2f8a110029dbd1ae8e766da9875e7c139703 100644 (file)
--- a/list.sh
+++ b/list.sh
@@ -4,9 +4,10 @@
 . "$_EXEC/widgets.sh"
 
 list_item() {
-  local name path length width height tags comment n
+  local name link path length width height tags comment n
   name="$(HTML "$1")"
-  path="$(URL "$ITEM/$1")"
+  link="$(URL "$ITEM/$1")"
+  path="$(HTML "$ITEM/$1")"
   qry=$(HTML "$QUERY_STRING")
 
   if [ -d "$_DATA/$ITEM/$1" ]; then
@@ -18,9 +19,9 @@ list_item() {
     printf '[div .list .file
               [a href="%s" [img src="%s?a=thumbnail"][label %s]]
               [span .time %i:%imin] [span .dim %ix%i] %s
-              [checkbox "select" "%s" id="select_%s" form="multitag"][label for="select_%s" +]
+              [checkbox "select" "%s" id="select_%s"][label for="select_%s" +]
             ]' \
-      "$path" "$path" "$name" \
+      "$link" "$link" "$name" \
       "$((length / 60))" "$((length % 60))" \
       "$width" "$height" \
       "$(UNSTRING "${tags#tags=}" |tr , '\0' |xargs -r0 printf ' [span .tag %s]')" \
@@ -69,20 +70,23 @@ list_filemeta(){
   if [ $ORDER = Name ]; then
     sort -k6 "$meta"
   elif [ $ORDER = Length ]; then
-    sort -n "$meta"
+    sort -n -k1 "$meta"
   else
     cat "$meta"
   fi \
   | if [ "$FILTER" ]; then
     sed -nr "$list_fex"
   elif [ "${SEARCH#!}" != "${SEARCH}" ]; then
-    grep -viE "$(STRING "${SEARCH#!}")"
+    grep -aviE "$(STRING "${SEARCH#!}" |sed -r ':x s;((^|[^\\])(\\\\)*)\+;\1\\+;g; tx;')"
   else
-    grep -iE "$(STRING "${SEARCH}")"
+    grep -aiE "$(STRING "${SEARCH}" \
+                 | sed -r ':x s;((^|[^\\])(\\\\)*)\+;\1 ;g; tx;
+                            s;((^|[^\\])(\\\\)*)\\\+;\1+;g;
+                            s; ;\\+;g;')"
   fi |cut -f6 | UNSTRING \
   | while read -r fn; do
     printf '%s\n' "${base}/${fn%${CR}}"
-  done
+  done | tee .index/debug
 }
 
 list_index(){
@@ -105,7 +109,7 @@ list_dateorder(){
 
 list_items() {
   local mode
-  mode="$(COOKIE mode |grep -m1 -xE 'index|browse' || printf browse )"
+  mode="$(COOKIE mode |grep -m1 -axE 'index|browse' || printf browse )"
 
   [ "$mode" = browse -a "$ITEM" ] && printf '..\n'
 
@@ -124,7 +128,7 @@ list_items() {
 
 list_paginate() {
   local page i c n end
-  page="$(GET p |grep -xE '[0-9]+' || printf 1)"; c=1
+  page="$(GET p |grep -axE '[0-9]+' || printf 1)"; c=1
   end=$((page + LISTSIZE))
 
   printf '[div .itemlist '
index 49bf273c9ed951f72cd19d031ff5d2ad69d024bb..649fb7858d5a05f33cbe0c9b6e669b3358f60ffd 100644 (file)
@@ -7,12 +7,20 @@ for select in $(seq 1 $(POST_COUNT select)); do
   file="$_DATA/$ITEM/$(POST select $select)"
   meta="${file%/*}/.index/meta"
 
-  read -r length width height tags comment fn <<-EOF
+  fn="$(meta_name "$file")"
+  read -r length width height tags comment discard <<-EOF
        $(meta_info "$file")
        EOF
+  [ "${length%%[1-9]*}" -o "${width%%[1-9]*}" -o "${height%%[1-9]*}" = 0 ] \
+  && read -r length width height discard <<-EOF
+       $(meta_line "$file"; echo Rereading meta for "$file" >&2)
+       EOF
+  [ "${tags%%tags=*}" ] && tags='tags=';
+  [ "${comment%%comment=*}" ] && comment='comment='
 
   if LOCK "$meta"; then
-    grep -vF " $fn" "$meta" >"${meta}.tmp"
+    grep -avF "        $fn" "$meta" >"${meta}.tmp"
+
     tags="$(UNSTRING "${tags#tags=}" |tr , '\n')"
 
     for tn in $(seq 1 $(POST_COUNT tag)); do
index 0eba5175dcef460eee0efd58c479ec92f2c04e02..14e37a0e67f0da30345143420f8937077f0fd5a9 100644 (file)
--- a/style.css
+++ b/style.css
@@ -1,6 +1,7 @@
 * {
   box-sizing: border-box;
   margin: 0; padding: 0;
+  text-align: left;
 }
 button { padding: .125em .5em; }
 a { color: inherit; text-decoration: none;}
@@ -32,7 +33,6 @@ body {
   position: relative;
   overflow: hidden;
   height: 0;
-  text-align: left;
   background-color: #333;
 }
 #prefs:target,
@@ -125,7 +125,6 @@ a[href="#advsearch"]:before {
   line-height: 2em;
   background-color: inherit;
   border-bottom: 1px solid;
-  text-align: left;
   padding-left: .5em;
   position: relative;
   top: -2em;
@@ -136,7 +135,6 @@ a[href="#advsearch"]:before {
   padding: .5em 1em;
   background-color: #444;
   line-height: 1.5em;
-  text-align: left;
 }
 
 #advsearch input.and {display: none;}
@@ -169,7 +167,6 @@ a[href="#advsearch"]:before {
   min-width: 200px;
   min-height: 12em;
   overflow: hidden;
-  text-align: left;
   vertical-align: top;
 }
 
@@ -278,6 +275,7 @@ a[href="#advsearch"]:before {
   background-color: #4F4;
 }
 
+.itemlist,
 .pagination {
   display: block;
   text-align: center;
@@ -293,7 +291,6 @@ a[href="#advsearch"]:before {
 }
 
 #editing {
-  text-align: left;
   width: 100%;
   background-color: #333;
   border-top: 1px solid;
index ba47062a9f775b9020b1cacebdd8a412edf1e0a8..4a64deb08df1957c4ff03eac7e2c1c1ad8f4d261 100644 (file)
@@ -128,7 +128,7 @@ w_advsearch(){
               $n "$category" "$t" "$lbid" "$lbid" "$category" $n
 
       printf '%s\n' "$w_tags" \
-      | { [ "$category" = '*' ] && grep -vF ':' |grep -vxF '' || grep -wF "${category}"; } \
+      | { [ "$category" = '*' ] && grep -avF ':' |grep -avxF '' || grep -awF "${category}"; } \
       | while read -r tag; do
         t=''; [ ! "${f%%*|${tag}|*}" ] && t=checked
         printf '[option %s value="%s"\n%s]' "$t" "$tag" "${tag#*:}"
@@ -159,7 +159,7 @@ w_tagging(){
   | while read -r category; do
     printf '[fieldset [legend %s:][select name=tag size=4 multiple' "$category"
     printf %s "$w_tags" \
-    | { [ "$category" = 'Tags' ] && grep -vF ':' | grep -vxF '' || grep -wF "${category}"; } \
+    | { [ "$category" = 'Tags' ] && grep -avF ':' | grep -avxF '' || grep -awF "${category}"; } \
     | while read -r tag; do
       printf '[option value="%s"\n%s]' "$tag" "${tag#*:}"
     done