Function: erc-dcc-send-filter
erc-dcc-send-filter is a byte-compiled function defined in
erc-dcc.el.gz.
Signature
(erc-dcc-send-filter PROC STRING)
Source Code
;; Defined in /usr/src/emacs/lisp/erc/erc-dcc.el.gz
(defun erc-dcc-send-filter (proc string)
(let* ((size (erc-unpack-int string))
(elt (erc-dcc-member :peer proc))
(parent (plist-get elt :parent))
(sent-marker (plist-get elt :sent))
(confirmed-marker (plist-get elt :confirmed)))
(with-current-buffer (process-buffer proc)
(set-marker confirmed-marker (+ (point-min) size))
(cond
((and (= confirmed-marker sent-marker)
(= confirmed-marker (point-max)))
(erc-display-message
nil 'notice parent
'dcc-send-finished
?n (plist-get elt :nick)
?f buffer-file-name
?s (number-to-string (- sent-marker (point-min))))
(setq erc-dcc-list (delete elt erc-dcc-list))
(set-buffer-modified-p nil)
(delete-process proc)
(kill-buffer (current-buffer)))
((<= confirmed-marker sent-marker)
(while (and (< (- sent-marker confirmed-marker)
(or erc-dcc-pump-bytes
erc-dcc-block-size))
(> (erc-dcc-send-block proc) 0))))
((> confirmed-marker sent-marker)
(erc-display-message
nil 'notice parent
(format "DCC: Client confirmed too much (%s vs %s)!"
(marker-position confirmed-marker)
(marker-position sent-marker)))
(set-buffer-modified-p nil)
(delete-process proc)
(kill-buffer (current-buffer)))))))