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=''
WGETRUSTSERVERNAMES=''
CURLTRUSTSERVERNAMES=''
CURLOUTPUTDIR=''
WGETOUTPUTDIR=''
USEOUTPUTDIR=''
ARIA2OUTPUTDIR=''
AXELOUTPUTDIR=''
WGETNODIRECTORIES=''
WGETCONTINUE=''
CURLCONTINUE=''
......@@ -470,7 +466,7 @@ local argvalue
local count="$#"
while [ -n "$1" ] ; do
argument="$(echo "$1" | cut -d= -f1)"
argvalue="$(echo "$1" | cut -s -d= -f2)"
argvalue="$(echo "$1" | cut -s -d= -f2-)"
case "$argument" in
-h|--help)
eget_help
......@@ -516,10 +512,6 @@ while [ -n "$1" ] ; do
argvalue="$1"
fi
[ -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"
;;
-U|-A|--user-agent)
......@@ -606,6 +598,7 @@ while [ -n "$1" ] ; do
argvalue="$1"
fi
[ -z "$argvalue" ] && fatal "Error: --timeout requires an argument"
! is_numeric "$argvalue" && fatal "Error: --timeout requires a numeric value, got '$argvalue'"
WGETTIMEOUT="--timeout $argvalue"
CURLMAXTIME="--max-time $argvalue"
AXELTIMEOUT="--timeout=$argvalue"
......@@ -616,6 +609,7 @@ while [ -n "$1" ] ; do
argvalue="$1"
fi
[ -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"
if [ -z "$CURLMAXTIME" ] ; then
CURLMAXTIME="--max-time $argvalue"
......@@ -1058,7 +1052,8 @@ esac
__wget()
{
[ -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
__curl()
{
[ -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
url_scat()
......@@ -1369,7 +1365,8 @@ url_get_response()
elif [ "$EGET_BACKEND" = "aria2" ] ; then
__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
......@@ -1489,7 +1486,8 @@ __axel()
# --show-progress overrides --quiet for axel
[ -n "$AXELSHOWPROGRESS" ] && AXELQ_LOCAL=''
[ -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
......@@ -2107,7 +2105,6 @@ if [ -n "$USEOUTPUTDIR" ] ; then
if [ -n "$TIMESTAMPING" ] ; then
fatal "Error: --timestamping is not supported with --output-dir (parallel downloads)"
fi
CURLOUTPUTDIR="--create-dirs --output-dir $USEOUTPUTDIR"
pget "$@"
exit
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