diff --git a/dsv/dsv b/dsv/dsv index 0165c38..3fdeb9f 100755 --- a/dsv/dsv +++ b/dsv/dsv @@ -61,8 +61,16 @@ flush() ds=$nm-`basename "$url"` mkdir -p $DSV_DIR if [ ! -r "$DSV_DIR/$ds" ]; then - wget -nv -O "$DSV_DIR/$ds" "$url" - # @@@ should handle error + inside=${url#*.[Zz][Ii][Pp] } + if [ "$inside" = "$url" ]; then + wget -nv -O "$DSV_DIR/$ds" "$url" + # @@@ should handle error + else + url=${url%`echo x"$inside" | sed 's/./?/g'`} + wget -nv -O "$DSV_DIR/_tmp" "$url" + unzip -p "$DSV_DIR/_tmp" "$inside" >"$DSV_DIR/$ds" || + { rm -f "$DSV_DIR/$ds"; exit 1; } + fi fi eval for n in $name $alias\; do \ 'nm=`echo "$n" | sed "s/%/%25/g;s|/|%2F|g"`;' \