]> git.plutz.net Git - shellwiki/blobdiff - handlers/40_attachment.sh
bugfix: handle white space in filenames for image conversion
[shellwiki] / handlers / 40_attachment.sh
index 5ea36e90b568aa30b7cd32385ccd452e00ce83c1..bddaa47105f11433f58925864836cc4c1795471e 100755 (executable)
@@ -35,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
@@ -53,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
@@ -77,7 +76,7 @@ attachment_convert(){
       printf %s "$attpath"
       return 0
     ;;
-    *) printf "$attpath";;
+    *) printf %s "$attpath";;
   esac
 }