diff options
Diffstat (limited to 'Functions/Zftp/zffcache')
-rw-r--r-- | Functions/Zftp/zffcache | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/Functions/Zftp/zffcache b/Functions/Zftp/zffcache new file mode 100644 index 000000000..0d9686660 --- /dev/null +++ b/Functions/Zftp/zffcache @@ -0,0 +1,24 @@ +# Generate an array name for storing the cache for the current session, +# storing it in fcache_name, then generate the cache for the current +# directory, or with argument -d clear the cache. + +fcache_name=$zfconfig[fcache_$ZFTP_SESSION] +if [[ -z $fcache_name ]]; then + local vals + vals=(${(v)zfconfig[(I)fcache_*]##zftp_fcache_}) + integer i + while [[ -n ${vals[(r)zftp_fcache_$i]} ]]; do + (( i++ )) + done + fcache_name=zftp_fcache_$i + zfconfig[fcache_$ZFTP_SESSION]=$fcache_name +fi + +if [[ $1 = -d ]]; then + unset $fcache_name +elif (( ${(P)#fcache_name} == 0 )); then + local tmpf=${TMPPREFIX}zffcache$$ + zftp ls >$tmpf + eval "$fcache_name=(\${(f)\"\$(<\$tmpf)\"})" + rm -f $tmpf +fi |