summaryrefslogtreecommitdiffstats
path: root/Functions/Zftp/zfopen
diff options
context:
space:
mode:
authorTanaka Akira <akr@users.sourceforge.net>1999-09-10 13:57:31 +0000
committerTanaka Akira <akr@users.sourceforge.net>1999-09-10 13:57:31 +0000
commitb67e4abb100f67ca05809baab37700eb5ee0a342 (patch)
treef19c7eb1544bd6071e01155825a7aae3cc99117d /Functions/Zftp/zfopen
parentzsh-workers/7765 (diff)
downloadzsh-b67e4abb100f67ca05809baab37700eb5ee0a342.tar
zsh-b67e4abb100f67ca05809baab37700eb5ee0a342.tar.gz
zsh-b67e4abb100f67ca05809baab37700eb5ee0a342.tar.bz2
zsh-b67e4abb100f67ca05809baab37700eb5ee0a342.tar.lz
zsh-b67e4abb100f67ca05809baab37700eb5ee0a342.tar.xz
zsh-b67e4abb100f67ca05809baab37700eb5ee0a342.tar.zst
zsh-b67e4abb100f67ca05809baab37700eb5ee0a342.zip
manual/7767
Diffstat (limited to 'Functions/Zftp/zfopen')
-rw-r--r--Functions/Zftp/zfopen30
1 files changed, 12 insertions, 18 deletions
diff --git a/Functions/Zftp/zfopen b/Functions/Zftp/zfopen
index b264aeaba..32b450411 100644
--- a/Functions/Zftp/zfopen
+++ b/Functions/Zftp/zfopen
@@ -7,25 +7,13 @@
emulate -L zsh
-local optlist opt once dir
+local opt dir opt_1
-while [[ $1 = -* ]]; do
- if [[ $1 = - || $1 = -- ]]; then
- shift;
- break;
- fi
- optlist=${1#-}
- for (( i = 1; i <= $#optlist; i++)); do
- opt=$optlist[$i]
- case $optlist[$i] in
- 1) once=1
- ;;
- *) print option $opt not recognised >&2
- ;;
- esac
- done
- shift
+while getopts :1 opt; do
+ [[ $opt = "?" ]] && print "zfopen: bad option: -$OPTARG" >&2 && return 1
+ eval "opt_$opt=1"
done
+(( OPTIND > 1 )) && shift $(( OPTIND - 1 ))
# This is where we should try and do same name-lookupage in
# both .netrc and .ncftp/bookmarks . We could even try saving
@@ -37,8 +25,14 @@ if [[ $1 = */* ]]; then
1=${1%%/*}
fi
-if [[ $once = 1 ]]; then
+if [[ $opt_1 = 1 ]]; then
zftp open $* || return 1
+ if [[ $# = 1 ]]; then
+ if ! zftp login; then
+ zftp close
+ return 1
+ fi
+ fi
else
# set parameters, but only if there was at least a host
(( $# > 0 )) && zfparams $*