1204861Sdes#	$OpenBSD: sftp-glob.sh,v 1.4 2009/08/13 01:11:55 djm Exp $
2146998Sdes#	Placed in the Public Domain.
3146998Sdes
4146998Sdestid="sftp glob"
5146998Sdes
6218767Sdesconfig_defined FILESYSTEM_NO_BACKSLASH && nobs="not supported on this platform"
7218767Sdes
8180746Sdessftp_ls() {
9180746Sdes	target=$1
10180746Sdes	errtag=$2
11180746Sdes	expected=$3
12180746Sdes	unexpected=$4
13218767Sdes	skip=$5
14218767Sdes	if test "x$skip" != "x" ; then
15218767Sdes		verbose "$tid: $errtag (skipped: $skip)"
16218767Sdes		return
17218767Sdes	fi
18180746Sdes	verbose "$tid: $errtag"
19180746Sdes	printf "ls -l %s" "${target}" | \
20204861Sdes		${SFTP} -b - -D ${SFTPSERVER} 2>/dev/null | \
21180746Sdes		grep -v "^sftp>" > ${RESULTS}
22180746Sdes	if [ $? -ne 0 ]; then
23180746Sdes		fail "$errtag failed"
24180746Sdes	fi
25180746Sdes	if test "x$expected" != "x" ; then
26180746Sdes	    if fgrep "$expected" ${RESULTS} >/dev/null 2>&1 ; then
27180746Sdes		:
28180746Sdes	    else
29180746Sdes		fail "$expected missing from $errtag results"
30180746Sdes	    fi
31180746Sdes	fi
32180746Sdes	if test "x$unexpected" != "x" && \
33180746Sdes	   fgrep "$unexpected" ${RESULTS} >/dev/null 2>&1 ; then
34180746Sdes		fail "$unexpected present in $errtag results"
35180746Sdes	fi
36180746Sdes	rm -f ${RESULTS}
37180746Sdes}
38180746Sdes
39146998SdesBASE=${OBJ}/glob
40180746SdesRESULTS=${OBJ}/results
41146998SdesDIR=${BASE}/dir
42146998SdesDATA=${DIR}/file
43146998Sdes
44180746SdesGLOB1="${DIR}/g-wild*"
45180746SdesGLOB2="${DIR}/g-wildx"
46180746SdesQUOTE="${DIR}/g-quote\""
47180746SdesSLASH="${DIR}/g-sl\\ash"
48180746SdesESLASH="${DIR}/g-slash\\"
49180746SdesQSLASH="${DIR}/g-qs\\\""
50180746SdesSPACE="${DIR}/g-q space"
51180746Sdes
52146998Sdesrm -rf ${BASE}
53146998Sdesmkdir -p ${DIR}
54218767Sdestouch "${DATA}" "${GLOB1}" "${GLOB2}" "${QUOTE}" "${SPACE}"
55218767Sdestest "x$nobs" = "x" && touch "${QSLASH}" "${ESLASH}" "${SLASH}"
56146998Sdes
57180746Sdes#       target                   message                expected     unexpected
58180746Sdessftp_ls "${DIR}/fil*"            "file glob"            "${DATA}"    ""
59180746Sdessftp_ls "${BASE}/d*"             "dir glob"             "`basename ${DATA}`" ""
60180746Sdessftp_ls "${DIR}/g-wild\"*\""     "quoted glob"          "g-wild*"    "g-wildx"
61180746Sdessftp_ls "${DIR}/g-wild\*"        "escaped glob"         "g-wild*"    "g-wildx"
62180746Sdessftp_ls "${DIR}/g-quote\\\""     "escaped quote"        "g-quote\""  ""
63180746Sdessftp_ls "\"${DIR}/g-quote\\\"\"" "quoted quote"         "g-quote\""  ""
64180746Sdessftp_ls "'${DIR}/g-quote\"'"     "single-quoted quote"  "g-quote\""  ""
65180746Sdessftp_ls "${DIR}/g-q\\ space"     "escaped space"        "g-q space"  ""
66180746Sdessftp_ls "'${DIR}/g-q space'"     "quoted space"         "g-q space"  ""
67218767Sdessftp_ls "${DIR}/g-sl\\\\ash"     "escaped slash"        "g-sl\\ash"  "" "$nobs"
68218767Sdessftp_ls "'${DIR}/g-sl\\\\ash'"   "quoted slash"         "g-sl\\ash"  "" "$nobs"
69218767Sdessftp_ls "${DIR}/g-slash\\\\"     "escaped slash at EOL" "g-slash\\"  "" "$nobs"
70218767Sdessftp_ls "'${DIR}/g-slash\\\\'"   "quoted slash at EOL"  "g-slash\\"  "" "$nobs"
71218767Sdessftp_ls "${DIR}/g-qs\\\\\\\""    "escaped slash+quote"  "g-qs\\\""   "" "$nobs"
72218767Sdessftp_ls "'${DIR}/g-qs\\\\\"'"    "quoted slash+quote"   "g-qs\\\""   "" "$nobs"
73146998Sdes
74180746Sdesrm -rf ${BASE}
75146998Sdes
76