From 415e75cecaa7cc34cb133085d07021e93ee345d5 Mon Sep 17 00:00:00 2001
From: Brett Parker <arch@sommitrealweird.co.uk>
Date: Fri, 26 Aug 2005 12:29:16 +0000
Subject: [PATCH] Escape image src and href URLs

 * Fix bug in the find options
 * URL escape filenames

git-archimport-id: arch@sommitrealweird.co.uk--2005-desktop/bpgallery--mainline--1.0--patch-9
---
 bpgallery.sh | 29 +++++++++++++++++++++++++----
 1 file changed, 25 insertions(+), 4 deletions(-)

diff --git a/bpgallery.sh b/bpgallery.sh
index 6117231..ba71cc7 100755
--- a/bpgallery.sh
+++ b/bpgallery.sh
@@ -97,6 +97,26 @@ END
 
 declare -rf bpgallery_default_stylesheet
 
+function bpgallery_escape_url() {
+	temp=$1
+	temp=${temp//\%/%25}
+	temp=${temp//:/%3A}
+	temp=${temp//;/%3B}
+	temp=${temp// /%20}
+	temp=${temp//$/%24}
+	temp=${temp//&/%26}
+	temp=${temp//+/%2B}
+	temp=${temp//,/%2C}
+	temp=${temp//\//%2F}
+	temp=${temp//=/%3D}
+	temp=${temp//\?/%3F}
+	temp=${temp//@/%40}
+	temp=${temp//\"/%22}
+	echo $temp
+}
+
+declare -rf bpgallery_escape_url
+
 if [[ ! -z ${BPGALLERY_THEME} ]] ; then
 	declare -r BPGALLERY_THEME
 fi
@@ -218,10 +238,11 @@ fi
 FINDIMAGESOPTIONS=""
 
 for imageext in $IMAGEEXTENSIONS; do
-	FINDIMAGESOPTIONS=$FINDIMAGESOPTIONS' -o -type f -maxdepth 1 -iname '*.$imageext' -print0'
+	FINDIMAGESOPTIONS=$FINDIMAGESOPTIONS' -o -type f -iname '*.$imageext' -print0'
 done
 
 FINDIMAGESOPTIONS=${FINDIMAGESOPTIONS## -o }
+FINDIMAGESOPTIONS='-maxdepth 1 '${FINDIMAGESOPTIONS}
 
 function usage() {
 cat <<END
@@ -283,14 +304,14 @@ if [ ! -d icons ]; then
 else
 	echo "$1 already contains an icons folder, updating."
 
-	imagestoupdate=$($FINDCOMMAND . $FINDIMAGESOPTIONS | $XARGSCOMMAND -0 --replace $ECHOCOMMAND {} | while read filename; do if [ ! -r "icons/$filename" ] || [ "$filename" -nt "icons/$filename" ]; then $ECHOCOMMAND $filename; fi; done | $WCCOMMAND)
+	imagestoupdate=$($FINDCOMMAND . $FINDIMAGESOPTIONS | $XARGSCOMMAND -0 --replace $ECHOCOMMAND {} | while read filename; do filename=${filename//\"/\\\"}; if [ ! -r "icons/$filename" ] || [ "$filename" -nt "icons/$filename" ]; then $ECHOCOMMAND $filename; fi; done | $WCCOMMAND)
 
 	echo "images to update: $imagestoupdate"
 	
 	
 	currentimage=0
 
-	$FINDCOMMAND . $FINDIMAGESOPTIONS | $XARGSCOMMAND -0 --replace $ECHOCOMMAND {} | while read filename; do if [ ! -r "icons/$filename" ] || [ "$filename" -nt "icons/$filename" ] ; then $ECHOCOMMAND $filename; fi; done | $XARGSCOMMAND --verbose --max-procs=4 --replace $CONVERTTOOL -resize $WIDTH '{}' 'icons/{}' 2>&1 | while read throwout; do $ECHOCOMMAND done: $currentimage/$imagestoupdate images; currentimage=$((currentimage+1)); done
+	$FINDCOMMAND . $FINDIMAGESOPTIONS | $XARGSCOMMAND -0 --replace $ECHOCOMMAND {} | while read filename; do tempfilename=${filename//\"/\\\"/}; if [ ! -r "icons/$tempfilename" ] || [ "$tempfilename" -nt "icons/$tempfilename" ] ; then $ECHOCOMMAND -n $filename; $ECHOCOMMAND -n -e "\000"; fi; done | $XARGSCOMMAND -0 --verbose --max-procs=4 --replace $CONVERTTOOL -resize $WIDTH '{}' 'icons/{}' 2>&1 | while read throwout; do $ECHOCOMMAND done: $currentimage/$imagestoupdate images; echo $throwout; currentimage=$((currentimage+1)); done
 	echo done: $imagestoupdate/$imagestoupdate images
 fi
 
@@ -304,7 +325,7 @@ fi
 $BPGALLERY_HEAD_FUNCTION > index.html
 $BPGALLERY_DESCRIPTION_FUNCTION >> index.html
 
-$FINDCOMMAND . $FINDIMAGESOPTIONS | $XARGSCOMMAND -0 --replace $ECHOCOMMAND {} |$SORTCOMMAND -g | while read filename; do filename=${filename#./}; if [ -r captions.txt ]; then caption=$($GREPCOMMAND -E "^$filename	" captions.txt); caption=${caption#*	}; else caption=""; fi; $BPGALLERY_THUMBSLINE_FUNCTION; done >> index.html
+$FINDCOMMAND . $FINDIMAGESOPTIONS | $XARGSCOMMAND -0 --replace $ECHOCOMMAND {} |$SORTCOMMAND -g | while read filename; do filename=${filename#./}; if [ -r captions.txt ]; then caption=$($GREPCOMMAND -E "^$filename	" captions.txt); caption=${caption#*	}; else caption=""; fi; filename=$(bpgallery_escape_url "$filename"); $BPGALLERY_THUMBSLINE_FUNCTION; done >> index.html
 
 $BPGALLERY_TAIL_FUNCTION >> index.html
 
-- 
2.39.5