- (list (completing-read
- "User: "
- (mapcar #'list (riece-get-users-on-server)))
- (expand-file-name (read-file-name "File: ")))))
- (let ((process
- (start-process "DCC" (generate-new-buffer " *DCC*")
- "ruby" "-rsocket")))
- (process-send-string process
- (apply #'concat
- (riece-rdcc-substitute-variables
- (riece-rdcc-substitute-variables
- riece-rdcc-send-program
- 'address
- (if riece-rdcc-server-address
- (concat "'" riece-rdcc-server-address
- "'")
- "nil"))
- 'file
- (concat "'" file "'"))))
- (process-send-eof process)
- (save-excursion
- (set-buffer (process-buffer process))
- (while (and (eq (process-status process) 'run)
- (progn
- (goto-char (point-min))
- (not (looking-at "\\([0-9]+\\) \\([0-9]+\\)"))))
- (accept-process-output))
- (if (eq (process-status process) 'run)
- (let ((address (match-string 1))
- (port (match-string 2)))
- (erase-buffer)
- (make-local-variable 'riece-rdcc-request-size)
- (setq riece-rdcc-request-file file
- riece-rdcc-request-size (nth 7 (file-attributes file)))
- (set-buffer-modified-p nil)
- (set-process-filter process #'riece-rdcc-server-filter)
- (set-process-sentinel process #'riece-rdcc-server-sentinel)
- (riece-send-string
- (format "PRIVMSG %s :\1DCC SEND %s %s %s %d\1\r\n"
- user (file-name-nondirectory file)
- address port
- riece-rdcc-request-size)))))))
+ (list (riece-completing-read-identity
+ (riece-mcat "User: ")
+ (riece-get-users-on-server (riece-current-server-name)))
+ (expand-file-name (read-file-name (riece-mcat "File: "))))))
+ (let ((name (riece-ruby-execute
+ (riece-ruby-substitute-variables
+ riece-rdcc-send-program
+ (list (cons 'address
+ (if riece-rdcc-server-address
+ (concat "'" riece-rdcc-server-address
+ "'")
+ "nil"))
+ (cons 'port
+ (if riece-rdcc-server-port
+ (number-to-string riece-rdcc-server-port)
+ "0"))
+ (cons 'file
+ (concat "'" file "'"))
+ (cons 'block-size
+ (number-to-string
+ riece-rdcc-block-size)))))))
+ (riece-ruby-set-property name 'riece-rdcc-request-user user)
+ (riece-ruby-set-property name 'riece-rdcc-request-file file)
+ (riece-ruby-set-property name 'riece-rdcc-request-size
+ (nth 7 (file-attributes file)))
+ (riece-ruby-set-output-handler name #'riece-rdcc-output-handler)
+ (riece-ruby-set-exit-handler name #'riece-rdcc-exit-handler)))