@@ -114,6 +114,10 @@ config BR2_SCP
string "Secure copy (scp) command"
default "scp"
+config BR2_SFTP
+ string "Secure file transfer (sftp) command"
+ default "sftp"
+
config BR2_HG
string "Mercurial (hg) command"
default "hg"
@@ -15,6 +15,7 @@ export BZR := $(call qstrip,$(BR2_BZR))
export GIT := $(call qstrip,$(BR2_GIT))
export HG := $(call qstrip,$(BR2_HG))
export SCP := $(call qstrip,$(BR2_SCP))
+export SFTP := $(call qstrip,$(BR2_SFTP))
export LOCALFILES := $(call qstrip,$(BR2_LOCALFILES))
DL_WRAPPER = support/download/dl-wrapper
@@ -88,7 +88,7 @@ main() {
backend_urlencode="${uri%%+*}"
backend="${backend_urlencode%|*}"
case "${backend}" in
- git|svn|cvs|bzr|file|scp|hg) ;;
+ git|svn|cvs|bzr|file|scp|hg|sftp) ;;
*) backend="wget" ;;
esac
uri=${uri#*+}
new file mode 100755
@@ -0,0 +1,37 @@
+#!/usr/bin/env bash
+
+# We want to catch any unexpected failure, and exit immediately
+set -e
+
+# Download helper for sftp, to be called from the download wrapper script
+#
+# Options:
+# -q Be quiet.
+# -o FILE Copy to local file FILE.
+# -f FILE Copy from remote file FILE.
+# -u URI Download file at URI.
+#
+# Environment:
+# SFTP : the sftp command to call
+
+verbose=
+while getopts "${BR_BACKEND_DL_GETOPTS}" OPT; do
+ case "${OPT}" in
+ q) verbose=-q;;
+ o) output="${OPTARG}";;
+ f) filename="${OPTARG}";;
+ u) uri="${OPTARG}";;
+ :) printf "option '%s' expects a mandatory argument\n" "${OPTARG}"; exit 1;;
+ \?) printf "unknown option '%s'\n" "${OPTARG}" >&2; exit 1;;
+ esac
+done
+
+shift $((OPTIND-1)) # Get rid of our options
+
+# Caller needs to single-quote its arguments to prevent them from
+# being expanded a second time (in case there are spaces in them)
+_sftp() {
+ eval ${SFTP} "${@}"
+}
+
+_sftp ${verbose} "${@}" "'${uri}/${filename}'" "'${output}'"