diff --git a/pkgmk.in b/pkgmk.in index 997453d..d527b55 100755 --- a/pkgmk.in +++ b/pkgmk.in @@ -46,11 +46,14 @@ error() { } get_filename() { - if [[ $1 =~ ^(http|https|ftp|file)://.*/(.+) ]]; then - echo "$PKGMK_SOURCE_DIR/${BASH_REMATCH[2]}" - else - echo $1 + local FILE=$1 + if [[ $FILE =~ ^(http|https|ftp|file)://.*/(.+) ]]; then + FILE="$PKGMK_SOURCE_DIR/${BASH_REMATCH[2]}" + fi + if [[ $FILE =~ (.*),(.*) ]]; then + FILE="$PKGMK_SOURCE_DIR/${BASH_REMATCH[2]}" fi + echo $FILE } get_basename() { @@ -95,14 +98,15 @@ check_file() { } download_file() { - info "Downloading '$1'." + local FILE=$1 + info "Downloading '$FILE'." if [ ! "`type -p wget`" ]; then error "Command 'wget' not found." exit $E_GENERAL fi - LOCAL_FILENAME=`get_filename $1` + LOCAL_FILENAME=`get_filename $FILE` LOCAL_FILENAME_PARTIAL="$LOCAL_FILENAME.partial" DOWNLOAD_OPTS="--passive-ftp --no-directories --tries=3 --waitretry=3 \ --directory-prefix=$PKGMK_SOURCE_DIR \ @@ -115,7 +119,9 @@ download_file() { error=1 - BASENAME=`get_basename $1` + FILE=${FILE%,*} + + BASENAME=`get_basename $FILE` for REPO in ${PKGMK_SOURCE_MIRRORS[@]}; do REPO="`echo $REPO | sed 's|/$||'`" wget $RESUME_CMD $DOWNLOAD_OPTS $PKGMK_WGET_OPTS $REPO/$BASENAME @@ -127,7 +133,7 @@ download_file() { if [ $error != 0 ]; then while true; do - wget $RESUME_CMD $DOWNLOAD_OPTS $PKGMK_WGET_OPTS $1 + wget $RESUME_CMD $DOWNLOAD_OPTS $PKGMK_WGET_OPTS $FILE error=$? if [ $error != 0 ] && [ "$RESUME_CMD" ]; then info "Partial download failed, restarting" @@ -140,7 +146,7 @@ download_file() { fi if [ $error != 0 ]; then - error "Downloading '$1' failed." + error "Downloading '$FILE' failed." exit $E_DOWNLOAD fi