mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-01-29 02:32:11 +01:00
70 lines
1.8 KiB
Text
70 lines
1.8 KiB
Text
# function zfanon {
|
|
|
|
emulate -L zsh
|
|
|
|
local opt optlist once
|
|
|
|
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
|
|
done
|
|
|
|
if [[ -z $EMAIL_ADDR ]]; then
|
|
# Exercise in futility. There's a poem by Wallace Stevens
|
|
# called something like `N ways of looking at a blackbird',
|
|
# where N is somewhere around 0x14 to 0x18. Now zftp is
|
|
# ashamed to prsent `N ways of looking at a hostname'.
|
|
local domain host
|
|
# First, maybe we've already got it. Zen-like.
|
|
if [[ $HOST = *.* ]]; then
|
|
# assume this is the full host name
|
|
host=$HOST
|
|
elif [[ -f /etc/resolv.conf ]]; then
|
|
# Next, maybe we've got resolv.conf.
|
|
domain=$(awk '/domain/ { print $2 }' /etc/resolv.conf)
|
|
[[ -n $domain ]] && host=$HOST.$domain
|
|
fi
|
|
# Next, maybe we've got nlsookup. May not work on LINUX.
|
|
[[ -z $host ]] && host=$(nslookup $HOST | awk '/Name:/ { print $2 }')
|
|
if [[ -z $host ]]; then
|
|
# we're running out of ideas, but this should work.
|
|
# after all, i wrote it...
|
|
# don't want user to know about this, too embarrassed.
|
|
local oldvb=$ZFTP_VERBOSE oldtm=$ZFTP_TMOUT
|
|
ZFTP_VERBOSE=
|
|
ZFTP_TMOUT=5
|
|
if zftp open $host >& /dev/null; then
|
|
host=$ZFTP_HOST
|
|
zftp close $host
|
|
fi
|
|
ZFTP_VERBOSE=$oldvb
|
|
ZFTP_TMOUT=$oldtm
|
|
fi
|
|
if [[ -z $host ]]; then
|
|
print "Can't get your hostname. Define \$EMAIL_ADDR by hand."
|
|
return 1;
|
|
fi
|
|
EMAIL_ADDR="$USER@$host"
|
|
print "Using $EMAIL_ADDR as anonymous FTP password."
|
|
fi
|
|
|
|
if [[ $once = 1 ]]; then
|
|
zftp open $1 anonymous $EMAIL_ADDR
|
|
else
|
|
zftp params $1 anonymous $EMAIL_ADDR
|
|
zftp open
|
|
fi
|
|
# }
|