- (expand-file-name (read-file-name "File: ")))))
- (let* ((process-connection-type nil)
- (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-substitute-variables
- riece-rdcc-send-program
- 'address
- (if riece-rdcc-server-address
- (concat "'" riece-rdcc-server-address
- "'")
- "nil"))
- 'file
- (concat "'" file "'"))
- 'block-size
- (number-to-string riece-rdcc-block-size))))
- (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 process))
- (if (eq (process-status process) 'run)
- (let ((address (match-string 1))
- (port (match-string 2))
- (filename (file-name-nondirectory file)))
- (while (string-match "[ \t]+" filename)
- (setq filename (replace-match "_" nil nil filename)))
- (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"
- (riece-identity-prefix user)
- filename
- address port
- riece-rdcc-request-size)))))))
+ (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 '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)))