aboutsummaryrefslogtreecommitdiffstats
path: root/lisp/net/ange-ftp.el
diff options
context:
space:
mode:
authorSam Steingold <[email protected]>2001-10-12 19:16:34 +0000
committerSam Steingold <[email protected]>2001-10-12 19:16:34 +0000
commitb878b8c30ad954e9ffa7b58064cb4fe7ccecc2df (patch)
tree34ab817517a77edc8776be8a4cb6639bb7e663a7 /lisp/net/ange-ftp.el
parent77558f0a7259df9673923f19a74a0e930550d5f8 (diff)
(ange-ftp-copy-files-async): New function for
asynchronous multiple file copying.
Diffstat (limited to 'lisp/net/ange-ftp.el')
-rw-r--r--lisp/net/ange-ftp.el26
1 files changed, 26 insertions, 0 deletions
diff --git a/lisp/net/ange-ftp.el b/lisp/net/ange-ftp.el
index b167879db1..1afc11306f 100644
--- a/lisp/net/ange-ftp.el
+++ b/lisp/net/ange-ftp.el
@@ -3712,6 +3712,32 @@ Value is (0 0) if the modification time cannot be determined."
nil
nil
(interactive-p)))
+
+(defun ange-ftp-copy-files-async (okay-p line verbose-p files)
+ "Copy some files in the background.
+Arguments: (OKAY-P LINE VERBOSE-P FILES)
+OKAY-P must be T, and LINE does not matter. They are here to make this
+ function a valid CONT argument for `ange-ftp-raw-send-cmd'.
+If VERBOSE-P is non-nil, print progress report in the echo area.
+ When all the files have been copied already, a message is shown anyway.
+FILES is a list of files to copy in the form
+ (from-file to-file ok-if-already-exists keep-date)
+E.g.,
+ (ange-ftp-copy-files-async t nil t '((\"a\" \"b\" t t) (\"c\" \"d\" t t)))"
+ (unless okay-p (error "%s: %s" 'ange-ftp-copy-files-async line))
+ (if files
+ (let* ((ff (car files))
+ (from-file (nth 0 ff))
+ (to-file (nth 1 ff))
+ (ok-if-exists (nth 2 ff))
+ (keep-date (nth 3 ff)))
+ (ange-ftp-copy-file-internal
+ from-file to-file ok-if-exists keep-date
+ (and verbose-p (format "%s --> %s" from-file to-file))
+ (list 'ange-ftp-copy-files-async verbose-p (cdr files))
+ t))
+ (message "%s: done" 'ange-ftp-copy-files-async)))
+
;;;; ------------------------------------------------------------
;;;; File renaming support.