mirror of
				git://git.code.sf.net/p/zsh/code
				synced 2025-10-31 18:10:56 +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
 | |
| # }
 |