mirror of
				git://git.code.sf.net/p/zsh/code
				synced 2025-11-04 07:21:06 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			68 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
# 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.
 | 
						|
#
 | 
						|
# -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.
 | 
						|
 | 
						|
emulate -L zsh
 | 
						|
 | 
						|
[[ $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 ))
 | 
						|
 | 
						|
zfautocheck
 | 
						|
 | 
						|
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=$?
 | 
						|
 | 
						|
(( $do_close )) && zfclose
 | 
						|
 | 
						|
return $stat
 | 
						|
# }
 |