1999-04-25 17:43:45 +02:00
|
|
|
# function zfput {
|
|
|
|
# Simple put: dump every file under the same name, but stripping
|
|
|
|
# off any directory parts to get the remote filename (i.e. always
|
|
|
|
# goes into current remote directory). Use zfpcp to specify new
|
|
|
|
# file name or new directory at remote end.
|
2000-05-08 12:45:02 +02:00
|
|
|
#
|
|
|
|
# -r means put recursively: any directories encountered will have
|
|
|
|
# all their contents to arbitrary depth transferred. Note that
|
|
|
|
# this creates the required directories. Any files in subdirectories
|
|
|
|
# whose names begin with a `.' will also be included.
|
1999-04-25 17:43:45 +02:00
|
|
|
|
|
|
|
emulate -L zsh
|
|
|
|
|
2000-05-08 12:45:02 +02:00
|
|
|
[[ $curcontext = :zf* ]] || local curcontext=:zfput
|
|
|
|
local opt opt_r
|
|
|
|
integer stat do_close abort
|
|
|
|
|
|
|
|
while getopts :r opt; do
|
|
|
|
[[ $opt = '?' ]] && print "zfget: bad option: -$OPTARG" && return 1
|
|
|
|
eval "opt_$opt=1"
|
|
|
|
done
|
|
|
|
(( OPTIND > 1 )) && shift $(( OPTIND - 1 ))
|
1999-04-25 17:43:45 +02:00
|
|
|
|
|
|
|
zfautocheck
|
|
|
|
|
2000-05-08 12:45:02 +02:00
|
|
|
zfput_sub() {
|
|
|
|
local subdirs loc rem
|
|
|
|
integer stat
|
|
|
|
subdirs=()
|
|
|
|
|
|
|
|
for loc in $*; do
|
|
|
|
if [[ -n $opt_r ]]; then
|
|
|
|
if [[ -d $loc ]]; then
|
|
|
|
subdirs=($subdirs $loc)
|
|
|
|
continue
|
|
|
|
else
|
|
|
|
rem=$loc
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
rem=${loc:t}
|
|
|
|
fi
|
|
|
|
|
|
|
|
zftp put $rem <$loc
|
|
|
|
(( $? )) && stat=$?
|
|
|
|
if ! zftp test; then
|
|
|
|
abort=1
|
|
|
|
(( stat )) || stat=1
|
|
|
|
break;
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
|
|
|
|
while (( $#subdirs && ! abort )); do
|
|
|
|
zftp mkdir ${subdirs[1]}
|
|
|
|
zfput_sub ${subdirs[1]}/*(ND)
|
|
|
|
(( $? )) && stat=$?
|
|
|
|
shift subdirs
|
|
|
|
done
|
|
|
|
|
|
|
|
return $stat
|
|
|
|
}
|
|
|
|
|
|
|
|
zfput_sub $*
|
|
|
|
stat=$?
|
1999-04-25 17:43:45 +02:00
|
|
|
|
|
|
|
(( $do_close )) && zfclose
|
|
|
|
|
|
|
|
return $stat
|
|
|
|
# }
|