Files
RedBear-OS/recipes/shells/zsh/source/Functions/Zftp/zftransfer
T
vasilito ff4ff35918 feat: track all source trees in git — full fork offline-first model
Red Bear OS is a full fork. All sources must be available from git clone
with zero network access. Removed gitignore rules that excluded fetched
source trees under recipes/*/source/, local/recipes/kde/*/source/,
local/recipes/qt/*/source/, and vendor source trees.

Build artifacts (target/, build/, source.tar, *.o, *.so) remain excluded.

127291 files added — kernel, relibc, base, bootloader, pkgar, all KDE/Qt
frameworks, mesa, wayland, DRM drivers, and every other recipe source.
2026-05-14 10:55:53 +01:00

67 lines
1.5 KiB
Plaintext

# function zftransfer {
# Transfer files between two distinct sessions. No remote globbing
# is done, since only single pairs can be transferred.
emulate -L zsh
[[ $curcontext = :zf* ]] || local curcontext=:zftransfer
local sess1 sess2 file1 file2 oldsess=${ZFTP_SESSION}
if [[ $# -ne 2 ]]; then
print "Usage: zftransfer sess1:file1 sess2:file2" 1>&2
return 1
fi
if [[ $1 = *:* ]]; then
sess1=${1%%:*}
file1=${1#*:}
fi
: ${sess1:=$ZFTP_SESSION}
if [[ $2 = *:* ]]; then
sess2=${2%%:*}
file2=${2#*:}
fi
: ${sess2:=$ZFTP_SESSION}
if [[ -z $file2 || $file2 = */ ]]; then
file2="${file2}${file1:t}"
fi
if [[ $sess1 = $sess2 ]]; then
print "zftransfer: must use two distinct sessions." 1>&2
return 1
fi
zftp session $sess1
zfautocheck || return 1
# It's more useful to show the progress for the second part
# of the pipeline, but unfortunately that can't necessarily get
# the size from the pipe --- and if it does, it's probably wrong.
# To avoid that, try to get the size and set it for the progress to
# see.
local style
zstyle -s ':zftp:zftransfer' progress style
if [[ -n $style && $style != none ]]; then
local ZFTP_TSIZE array
() {
zftp remote $file1 >|$1 2>/dev/null
array=($(<$1))
} =(<<<'temporary file')
[[ $#array -eq 2 ]] && ZFTP_TSIZE=$array[1]
fi
# We do the RHS of the pipeline in a subshell, too, so that
# the LHS can get SIGPIPE when it exits.
{ zstyle '*' progress none
zftp get $file1 } |
( zftp session $sess2
zfautocheck && zftp put $file2 )
local stat=$?
zftp session $oldsess
return $stat
# }