Commit b35824d5 authored by Vitaly Lipatov's avatar Vitaly Lipatov

eget: fix paths with spaces and add numeric validation for timeout options

parent 37c469c8
...@@ -328,11 +328,7 @@ AXELNAMEOPTIONS='' ...@@ -328,11 +328,7 @@ AXELNAMEOPTIONS=''
WGETRUSTSERVERNAMES='' WGETRUSTSERVERNAMES=''
CURLTRUSTSERVERNAMES='' CURLTRUSTSERVERNAMES=''
CURLOUTPUTDIR=''
WGETOUTPUTDIR=''
USEOUTPUTDIR='' USEOUTPUTDIR=''
ARIA2OUTPUTDIR=''
AXELOUTPUTDIR=''
WGETNODIRECTORIES='' WGETNODIRECTORIES=''
WGETCONTINUE='' WGETCONTINUE=''
CURLCONTINUE='' CURLCONTINUE=''
...@@ -470,7 +466,7 @@ local argvalue ...@@ -470,7 +466,7 @@ local argvalue
local count="$#" local count="$#"
while [ -n "$1" ] ; do while [ -n "$1" ] ; do
argument="$(echo "$1" | cut -d= -f1)" argument="$(echo "$1" | cut -d= -f1)"
argvalue="$(echo "$1" | cut -s -d= -f2)" argvalue="$(echo "$1" | cut -s -d= -f2-)"
case "$argument" in case "$argument" in
-h|--help) -h|--help)
eget_help eget_help
...@@ -516,10 +512,6 @@ while [ -n "$1" ] ; do ...@@ -516,10 +512,6 @@ while [ -n "$1" ] ; do
argvalue="$1" argvalue="$1"
fi fi
[ -z "$argvalue" ] && fatal "Error: --output-dir requires an argument" [ -z "$argvalue" ] && fatal "Error: --output-dir requires an argument"
CURLOUTPUTDIR="--create-dirs --output-dir $argvalue"
WGETOUTPUTDIR="-P $argvalue"
ARIA2OUTPUTDIR="-d $argvalue"
AXELOUTPUTDIR="-o $argvalue"
USEOUTPUTDIR="$argvalue" USEOUTPUTDIR="$argvalue"
;; ;;
-U|-A|--user-agent) -U|-A|--user-agent)
...@@ -606,6 +598,7 @@ while [ -n "$1" ] ; do ...@@ -606,6 +598,7 @@ while [ -n "$1" ] ; do
argvalue="$1" argvalue="$1"
fi fi
[ -z "$argvalue" ] && fatal "Error: --timeout requires an argument" [ -z "$argvalue" ] && fatal "Error: --timeout requires an argument"
! is_numeric "$argvalue" && fatal "Error: --timeout requires a numeric value, got '$argvalue'"
WGETTIMEOUT="--timeout $argvalue" WGETTIMEOUT="--timeout $argvalue"
CURLMAXTIME="--max-time $argvalue" CURLMAXTIME="--max-time $argvalue"
AXELTIMEOUT="--timeout=$argvalue" AXELTIMEOUT="--timeout=$argvalue"
...@@ -616,6 +609,7 @@ while [ -n "$1" ] ; do ...@@ -616,6 +609,7 @@ while [ -n "$1" ] ; do
argvalue="$1" argvalue="$1"
fi fi
[ -z "$argvalue" ] && fatal "Error: --read-timeout requires an argument" [ -z "$argvalue" ] && fatal "Error: --read-timeout requires an argument"
! is_numeric "$argvalue" && fatal "Error: --read-timeout requires a numeric value, got '$argvalue'"
WGETREADTIMEOUT="--read-timeout $argvalue" WGETREADTIMEOUT="--read-timeout $argvalue"
if [ -z "$CURLMAXTIME" ] ; then if [ -z "$CURLMAXTIME" ] ; then
CURLMAXTIME="--max-time $argvalue" CURLMAXTIME="--max-time $argvalue"
...@@ -1058,7 +1052,8 @@ esac ...@@ -1058,7 +1052,8 @@ esac
__wget() __wget()
{ {
[ -n "$USERAGENT" ] && set -- -U "$USERAGENT" "$@" [ -n "$USERAGENT" ] && set -- -U "$USERAGENT" "$@"
docmd $WGET $FORCEIPV $WGETQ $WGETSHOWPROGRESS $NOGLOB $WGETCOMPRESSED $WGETHEADER $WGETOUTPUTDIR $WGETNOSSLCHECK $WGETNODIRECTORIES $WGETCONTINUE $WGETTIMESTAMPING $WGETTIMEOUT $WGETREADTIMEOUT $WGETRETRYCONNREFUSED $WGETTRIES $WGETLOADCOOKIES $WGETRUSTSERVERNAMES $EGET_WGET_OPTIONS "$@" [ -n "$USEOUTPUTDIR" ] && set -- -P "$USEOUTPUTDIR" "$@"
docmd $WGET $FORCEIPV $WGETQ $WGETSHOWPROGRESS $NOGLOB $WGETCOMPRESSED $WGETHEADER $WGETNOSSLCHECK $WGETNODIRECTORIES $WGETCONTINUE $WGETTIMESTAMPING $WGETTIMEOUT $WGETREADTIMEOUT $WGETRETRYCONNREFUSED $WGETTRIES $WGETLOADCOOKIES $WGETRUSTSERVERNAMES $EGET_WGET_OPTIONS "$@"
} }
...@@ -1265,7 +1260,8 @@ elif [ "$EGET_BACKEND" = "curl" ] ; then ...@@ -1265,7 +1260,8 @@ elif [ "$EGET_BACKEND" = "curl" ] ; then
__curl() __curl()
{ {
[ -n "$USERAGENT" ] && set -- -A "$USERAGENT" "$@" [ -n "$USERAGENT" ] && set -- -A "$USERAGENT" "$@"
docmd $CURL $FORCEIPV --fail -L $CURLQ $CURLSHOWPROGRESS $CURLCOMPRESSED $CURLHEADER $CURLOUTPUTDIR $CURLNOSSLCHECK $CURLCONTINUE $CURLMAXTIME $CURLRETRYCONNREFUSED $CURLRETRY $CURLCOOKIE $CURLTRUSTSERVERNAMES $EGET_CURL_OPTIONS "$@" [ -n "$USEOUTPUTDIR" ] && set -- --create-dirs --output-dir "$USEOUTPUTDIR" "$@"
docmd $CURL $FORCEIPV --fail -L $CURLQ $CURLSHOWPROGRESS $CURLCOMPRESSED $CURLHEADER $CURLNOSSLCHECK $CURLCONTINUE $CURLMAXTIME $CURLRETRYCONNREFUSED $CURLRETRY $CURLCOOKIE $CURLTRUSTSERVERNAMES $EGET_CURL_OPTIONS "$@"
} }
# put remote content to stdout # put remote content to stdout
url_scat() url_scat()
...@@ -1369,7 +1365,8 @@ url_get_response() ...@@ -1369,7 +1365,8 @@ url_get_response()
elif [ "$EGET_BACKEND" = "aria2" ] ; then elif [ "$EGET_BACKEND" = "aria2" ] ; then
__aria2() __aria2()
{ {
docmd $ARIA2 $ARIA2Q $ARIA2SHOWPROGRESS $ARIA2OUTPUTDIR $ARIA2CONTINUE $EGET_ARIA2_OPTIONS "$@" [ -n "$USEOUTPUTDIR" ] && set -- -d "$USEOUTPUTDIR" "$@"
docmd $ARIA2 $ARIA2Q $ARIA2SHOWPROGRESS $ARIA2CONTINUE $EGET_ARIA2_OPTIONS "$@"
} }
# put remote content to stdout # put remote content to stdout
...@@ -1489,7 +1486,8 @@ __axel() ...@@ -1489,7 +1486,8 @@ __axel()
# --show-progress overrides --quiet for axel # --show-progress overrides --quiet for axel
[ -n "$AXELSHOWPROGRESS" ] && AXELQ_LOCAL='' [ -n "$AXELSHOWPROGRESS" ] && AXELQ_LOCAL=''
[ -n "$USERAGENT" ] && set -- --user-agent="$USERAGENT" "$@" [ -n "$USERAGENT" ] && set -- --user-agent="$USERAGENT" "$@"
docmd $AXEL $FORCEIPV $AXELQ_LOCAL $AXELOUTPUTDIR $AXELCONTINUE $AXELTIMEOUT $AXELHEADER $AXELNOSSLCHECK $EGET_AXEL_OPTIONS "$@" # Note: axel doesn't support output directory, only output file (-o)
docmd $AXEL $FORCEIPV $AXELQ_LOCAL $AXELCONTINUE $AXELTIMEOUT $AXELHEADER $AXELNOSSLCHECK $EGET_AXEL_OPTIONS "$@"
} }
# put remote content to stdout # put remote content to stdout
...@@ -2107,7 +2105,6 @@ if [ -n "$USEOUTPUTDIR" ] ; then ...@@ -2107,7 +2105,6 @@ if [ -n "$USEOUTPUTDIR" ] ; then
if [ -n "$TIMESTAMPING" ] ; then if [ -n "$TIMESTAMPING" ] ; then
fatal "Error: --timestamping is not supported with --output-dir (parallel downloads)" fatal "Error: --timestamping is not supported with --output-dir (parallel downloads)"
fi fi
CURLOUTPUTDIR="--create-dirs --output-dir $USEOUTPUTDIR"
pget "$@" pget "$@"
exit exit
else else
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment