X-Git-Url: https://git.sommitrealweird.co.uk/bpgallery.git/blobdiff_plain/5207b33c23b0f42288bc6d1ff1b16960bdbf3d1f..bd2b083210e038f02bd8ee677c0e7772d372c3a0:/bpgallery.sh diff --git a/bpgallery.sh b/bpgallery.sh index e532c68..ade52a5 100755 --- a/bpgallery.sh +++ b/bpgallery.sh @@ -52,7 +52,7 @@ else caption_alt=$caption fi cat << END -
+ END } @@ -176,6 +176,24 @@ function bpgallery_escape_url() { $ECHOCOMMAND $temp } +function bpgallery_cleanup_directory_name() { + temp=$1 + temp=${temp//\%/_} + temp=${temp//:/_} + temp=${temp//;/_} + temp=${temp// /_} + temp=${temp//$/_} + temp=${temp//&/_} + temp=${temp//+/_} + temp=${temp//,/_} + temp=${temp//\//_} + temp=${temp//=/_} + temp=${temp//\?/_} + temp=${temp//@/_} + temp=${temp//\"/_} + $ECHOCOMMAND $temp +} + declare -rf bpgallery_escape_url if [[ ! -z ${BPGALLERY_THEME} ]] ; then @@ -222,39 +240,140 @@ if [[ -z $TITLE ]]; then fi if [[ -z $CONVERTTOOL ]]; then - CONVERTTOOL=convert + hash convert + if [[ $? != 0 ]]; then + echo "Can't find convert, exiting" + exit 3 + fi + CONVERTTOOL=$(hash -t convert) +else + if [[ ! -x $CONVERTTOOL ]]; then + echo "Can't find convert at location $CONVERTTOOL, exiting" + exit 3 + fi fi if [[ -z $FINDCOMMAND ]]; then - FINDCOMMAND=find + hash find + if [[ $? != 0 ]]; then + echo "Can't find find, exiting" + exit 3 + fi + FINDCOMMAND=$(hash -t find) +else + if [[ ! -x $FINDCOMMAND ]]; then + echo "Can't find find at $FINDCOMMAND, exiting" + exit 3 + fi fi if [[ -z $XARGSCOMMAND ]]; then - XARGSCOMMAND=xargs + hash xargs + if [[ $? != 0 ]]; then + echo "Can't find xargs, exiting" + exit 3 + fi + XARGSCOMMAND=$(hash -t xargs) +else + if [[ ! -x $XARGSCOMMAND ]]; then + echo "Can't find xargs at $XARGSCOMMAND, exiting" + exit 3 + fi fi if [[ -z $ECHOCOMMAND ]]; then ECHOCOMMAND=echo +else + if [[ ! -x $ECHOCOMMAND ]]; then + echo "Can't find echo at $ECHOCOMMAND, exiting" + exit 3 + fi fi if [[ -z $SORTCOMMAND ]]; then - SORTCOMMAND=sort + hash sort + if [[ $? != 0 ]]; then + echo "Can't find sort, exiting" + exit 3 + fi + SORTCOMMAND=$(hash -t sort) +else + if [[ ! -x $SORTCOMMAND ]]; then + echo "Can't find sort, exiting" + exit 3 + fi fi if [[ -z $IDENTIFYCOMMAND ]]; then - IDENTIFYCOMMAND=identify + hash identify + if [[ $? != 0 ]]; then + echo "Can't find indentify, exiting" + exit 3 + fi + IDENTIFYCOMMAND=$(hash -t identify) +else + if [[ ! -x $IDENTIFYCOMMAND ]]; then + echo "Can't find identify at $IDENTIFYCOMMAND, exiting" + exit 3 + fi fi if [[ -z $HEADCOMMAND ]]; then - HEADCOMMAND=head + hash head + if [[ $? != 0 ]]; then + echo "Can't find head, exiting" + exit 3 + fi + HEADCOMMAND=$(hash -t head) +else + if [[ ! -x $HEADCOMMAND ]]; then + echo "Can't find head at $HEADCOMMAND, exiting" + exit 3 + fi fi if [[ -z $GREPCOMMAND ]]; then - GREPCOMMAND=grep + hash grep + if [[ $? != 0 ]]; then + echo "Can't find grep, exiting" + exit 3 + fi + GREPCOMMAND=$(hash -t grep) +else + if [[ ! -x $GREPCOMMAND ]]; then + echo "Can't find grep at $GREPCOMMAND, exiting" + exit 3 + fi fi if [[ -z $SEDCOMMAND ]]; then - SEDCOMMAND=sed + hash sed + if [[ $? != 0 ]]; then + echo "Can't find sed, exiting" + exit 3 + fi + SEDCOMMAND=$(hash -t sed) +else + if [[ ! -x $SEDCOMMAND ]]; then + echo "Can't find sed at $SEDCOMMAND, exiting" + exit 3 + fi +fi + +if [[ -z $WCCOMMAND ]]; then + hash wc + if [[ $? != 0 ]]; then + echo "Can't find wc, exiting" + exit 3 + fi + WCCOMMAND=$(hash -t wc) + WCCOMMAND="$WCCOMMAND -l" +else + if [[ ! -x $WCCOMMAND ]]; then + echo "Can't find wc at $WCCOMMAND, exiting" + exit 3 + fi + WCCOMMAND="$WCCOMMAND -l" fi if [[ -z $WIDTH ]]; then @@ -265,10 +384,6 @@ if [[ -z $IMAGEEXTENSIONS ]]; then IMAGEEXTENSIONS="jpeg jpg gif png"; fi -if [[ -z $WCCOMMAND ]]; then - WCCOMMAND="wc -l" -fi - if [[ -z $CAPTIONHEIGHT ]]; then CAPTIONHEIGHT=75 fi @@ -288,10 +403,13 @@ fi if [[ -z $PAGESDIRECTORY ]]; then PAGESDIRECTORY="" else - temp=${PAGESDIRECTORY:${#PAGESDIRECTORY}-1:1} - if [[ "x$temp" != "x/" ]] && [[ "x$temp" != "x\\" ]]; then - PAGESDIRECTORY=${PAGESDIRECTORY}/ - fi + removetrailingslashes=${PAGESDIRECTORY%/} + temp=$removetrailingslashes + while [[ $removetrailingslashes != $temp ]]; do + temp=$removetrailingslashes + removetrailingslashes=${temp%/} + done + PAGESDIRECTORY=$(bpgallery_escape_url "${PAGESDIRECTORY}") fi if [[ -z $MEDIUMWIDTH ]]; then @@ -302,6 +420,20 @@ if [[ -z $INDEXDOCUMENT ]]; then INDEXDOCUMENT=index.html fi +if [[ -z $MEDIUMDIRECTORY ]]; then + MEDIUMDIRECTORY=medium +else + # Strip out anything that might be broken + MEDIUMDIRECTORY=$(bpgallery_cleanup_directory_name "$MEDIUMDIRECTORY") +fi + +if [[ -z $ICONSDIRECTORY ]]; then + ICONSDIRECTORY=icons +else + # Strip out anything that might be broken + ICONSDIRECTORY=$(bpgallery_cleanup_directory_name "$ICONSDIRECTORY") +fi + if declare -F "bpgallery_${BPGALLERY_THEME}_page" > /dev/null ; then BPGALLERY_PAGE_FUNCTION="bpgallery_${BPGALLERY_THEME}_page" else @@ -435,11 +567,19 @@ function generate_resized_images() { } function generate_thumbs() { - generate_resized_images $WIDTH icons + if [[ ! -z $HEIGHT ]]; then + generate_resized_images "${WIDTH}x${HEIGHT}" $ICONSDIRECTORY + else + generate_resized_images $WIDTH $ICONSDIRECTORY + fi } function generate_medium() { - generate_resized_images $MEDIUMWIDTH medium + if [[ ! -z $MEDIUMHEIGHT ]]; then + generate_resized_images "${WIDTH}x${HEIGHT}" $MEDIUMDIRECTORY + else + generate_resized_images $MEDIUMWIDTH $MEDIUMDIRECTORY + fi } function generate_pages() { @@ -536,7 +676,7 @@ function generate_pages() { } function generate_medium_pages() { - generate_pages __medium medium + generate_pages __${MEDIUMDIRECTORY} ${MEDIUMDIRECTORY} } function generate_general_page() { @@ -565,7 +705,7 @@ function generate_general_page() { caption="" fi - $BPGALLERY_PAGE_FUNCTION > "${PAGESDIRECTORY}$currentpage" + $BPGALLERY_PAGE_FUNCTION > "${UNIXPAGESDIRECTORY}$currentpage" } if [[ $OUTPUTHTML != 0 ]]; then @@ -627,8 +767,13 @@ if [[ "x$PAGESDIRECTORY" != "x" ]]; then $ECHOCOMMAND "Can't write to $PAGESDIRECTORY directory, exiting" exit 16 fi + UNIXPAGESDIRECTORY=$PAGESDIRECTORY/ + PAGESDIRECTORY=$(bpgallery_escape_url $PAGESDIRECTORY)/ BASEURL="../" +else + BASEURL="" + UNIXPAGESDIRECTORY="" fi if [ $GENERATEPAGESFORMEDIUMSIZE != 0 ]; then @@ -638,7 +783,7 @@ fi if [ $GENERATEPAGESFORFULLSIZE != 0 ]; then if [ $GENERATEPAGESFORMEDIUMSIZE != 0 ]; then - generate_pages __medium + generate_pages __${MEDIUMDIRECTORY} else generate_pages fi @@ -661,7 +806,7 @@ $ECHOCOMMAND "Adding Captions" extra="" if [ $GENERATEPAGESFORMEDIUMSIZE != 0 ]; then - extra=__medium + extra=__${MEDIUMDIRECTORY} fi $FINDCOMMAND . $FINDIMAGESOPTIONS | $XARGSCOMMAND -0 -I {} $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; if [ $GENERATEPAGESFORMEDIUMSIZE != 0 ]; then link=${PAGESDIRECTORY}$(bpgallery_escape_url "${filename}${extra}.html"); elif [ $GENERATEPAGESFORFULLSIZE != 0 ]; then link=${PAGESDIRECTORY}$(bpgallery_escape_url "${filename}.html"); else link=$(bpgallery_escape_url "$filename"); fi; filename=$(bpgallery_escape_url "$filename"); $BPGALLERY_THUMBSLINE_FUNCTION; done >> ${INDEXDOCUMENT} @@ -670,7 +815,7 @@ $BPGALLERY_TAIL_FUNCTION >> ${INDEXDOCUMENT} $ECHOCOMMAND "Finished generating the page" $ECHOCOMMAND "Generating stylesheet" -cd icons +cd $ICONSDIRECTORY MAXHEIGHT=$($FINDCOMMAND . $FINDIMAGESOPTIONS | $XARGSCOMMAND -0 $IDENTIFYCOMMAND -format "%h\n" | $GREPCOMMAND -v "^$" | $SORTCOMMAND -g -r | $HEADCOMMAND -n 1) MAXWIDTH=$($FINDCOMMAND . $FINDIMAGESOPTIONS | $XARGSCOMMAND -0 $IDENTIFYCOMMAND -format "%w\n" | $GREPCOMMAND -v "^$" | $SORTCOMMAND -g -r | $HEADCOMMAND -n 1)