-(defun riece-rdcc-server-filter (process input)
- (save-excursion
- (set-buffer (process-buffer process))
- (goto-char (point-max))
- (insert input)
- (goto-char (point-min))
- (while (and (not (eobp))
- (looking-at "\\([0-9]+\\)\n"))
- (message "Sending %s...(%s/%d)"
- riece-rdcc-request-file
- (match-string 1) riece-rdcc-request-size)
- (forward-line))
- (unless (eobp)
- (delete-region (point-min) (point)))))
-
-(defun riece-rdcc-server-sentinel (process status)
- (with-current-buffer (process-buffer process)
- (message "Sending %s...done" riece-rdcc-request-file))
- (kill-buffer (process-buffer process))
- (delete-process process))
+(defvar riece-rdcc-temp-file nil)
+(defvar riece-rdcc-received-size nil)
+
+(defconst riece-rdcc-description
+ "DCC file sending protocol support (written in Ruby.)")
+
+(defvar temporary-file-directory)
+(defvar jka-compr-compression-info-list)
+(defvar jam-zcat-filename-list)
+
+(defun riece-rdcc-output-handler (name output time)
+ (if (string-match "\\([0-9]+\\) \\([0-9]+\\)" output)
+ (let ((address (match-string 1 output))
+ (port (match-string 2 output)))
+ (riece-send-string
+ (format "PRIVMSG %s :\1DCC SEND %s %s %s %d\1\r\n"
+ (riece-identity-prefix
+ (riece-ruby-property name 'riece-rdcc-request-user))
+ (file-name-nondirectory
+ (riece-ruby-property name 'riece-rdcc-request-file))
+ address port
+ (riece-ruby-property name 'riece-rdcc-request-size)))))
+ (riece-ruby-set-output-handler name #'riece-rdcc-output-handler-2))
+
+(defun riece-rdcc-output-handler-2 (name output time)
+ (message "Sending %s...(%s/%d)"
+ (riece-ruby-property name 'riece-rdcc-request-file)
+ (string-to-number output)
+ (riece-ruby-property name 'riece-rdcc-request-size)))
+
+(defun riece-rdcc-exit-handler (name)
+ (message "Sending %s...done"
+ (riece-ruby-property name 'riece-rdcc-request-file)))