diff options
author | Tanaka Akira <akr@users.sourceforge.net> | 1999-04-25 15:43:45 +0000 |
---|---|---|
committer | Tanaka Akira <akr@users.sourceforge.net> | 1999-04-25 15:43:45 +0000 |
commit | e8eb43fc308acb3f1a8ebada7633c097e5050e46 (patch) | |
tree | 2df36ef3c7709c7d4d3b7bdcb5761f98649859bf /Functions/Zftp/zfanon | |
parent | e74702b467171dbdafb56dfe354794a212e020d9 (diff) | |
download | zsh-e8eb43fc308acb3f1a8ebada7633c097e5050e46.tar.gz zsh-e8eb43fc308acb3f1a8ebada7633c097e5050e46.tar.xz zsh-e8eb43fc308acb3f1a8ebada7633c097e5050e46.zip |
Initial revision
Diffstat (limited to 'Functions/Zftp/zfanon')
-rw-r--r-- | Functions/Zftp/zfanon | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/Functions/Zftp/zfanon b/Functions/Zftp/zfanon new file mode 100644 index 000000000..d8a9d06a3 --- /dev/null +++ b/Functions/Zftp/zfanon @@ -0,0 +1,70 @@ +# 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 +# } |