X-Git-Url: https://git.plutz.net/?a=blobdiff_plain;f=handlers%2F40_attachment.sh;h=bddaa47105f11433f58925864836cc4c1795471e;hb=fdfe0310c6bc644da671b847120e0bd84d923634;hp=1e0719037ee0d4642601abb1141ad456dbe64d2b;hpb=c895cb5c92f3b1ab8c61821d79ba2c1438eec304;p=shellwiki diff --git a/handlers/40_attachment.sh b/handlers/40_attachment.sh index 1e07190..bddaa47 100755 --- a/handlers/40_attachment.sh +++ b/handlers/40_attachment.sh @@ -1,5 +1,19 @@ #!/bin/sh +# Copyright 2022 - 2023 Paul Hänsch +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED “AS IS” AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY +# SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +# IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + . "$_EXEC/cgilite/file.sh" # REV_ATTACHMENTS="${REV_ATTACHMENTS:-false}" @@ -21,16 +35,15 @@ attachment_convert(){ elif [ -f "$cachepath" ]; then printf %s "$attpath" return 0 - elif ! mkdir -p -- "${cachepath%/*}" && touch "$cachepath"; then + elif ! mkdir -p -- "${cachepath%/*}" && touch -- "$cachepath"; then printf %s "$attpath" return 0 fi case $attpath in - *.jpg|*.jpeg|*.png) - read junk junk res junk <<-EOF - $(identify "$attpath") - EOF + *.[jJ][pP][gG]|*.[jJ][pP][eE][gG]|*.[pP][nN][gG]) + res="$(identify -- "$attpath")" + res="${res% * * * * * *}" res="${res##* }" if [ "${res%x*}" -gt 2048 ]; then convert "$attpath" -resize 1920x-2 -quality 85 "$cachepath" else @@ -39,7 +52,7 @@ attachment_convert(){ printf %s "$cachepath" return 0 ;; - *.webm|*.mp4|*.mkv|*.avi) + *.[wW][eE][bB][mM]|*.[mM][pP]4|*.[mM][kK][vV]|*.[aA][vV][iI]) res=$(ffprobe -show_entries stream=width "$attpath" 2>&-) res="${res#*width=}" res="${res%%${BR}*}" if [ "$res" -gt 1280 ]; then @@ -63,7 +76,7 @@ attachment_convert(){ printf %s "$attpath" return 0 ;; - *) printf "$attpath";; + *) printf %s "$attpath";; esac }