Fixed.
[riece] / lisp / riece-rdcc.el
index 1f8ddce..9b5286f 100644 (file)
@@ -1,4 +1,4 @@
-;;; riece-rdcc.el --- ruby implementation of DCC add-on
+;;; riece-rdcc.el --- DCC file sending protocol support (written in Ruby)
 ;; Copyright (C) 1998-2003 Daiki Ueno
 
 ;; Author: Daiki Ueno <ueno@unixuser.org>
 
 ;; You should have received a copy of the GNU General Public License
 ;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;;; Commentary:
+
+;; NOTE: This is an add-on module for Riece.
 
 ;;; Code:
 
 (require 'riece-identity)
 (require 'riece-ctcp)                  ;for riece-ctcp-additional-clientinfo
 (require 'riece-ruby)
+(require 'riece-mcat)
 
 (defgroup riece-rdcc nil
-  "DCC implementation using ruby"
+  "DCC written in Ruby."
   :prefix "riece-"
   :group 'riece)
 
@@ -98,16 +103,14 @@ end
 (defvar riece-rdcc-temp-file nil)
 (defvar riece-rdcc-received-size nil)
 
-(defvar riece-rdcc-enabled nil)
-
 (defconst riece-rdcc-description
-  "DCC file sending extension implemented in Ruby")
+  "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)
+(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)))
@@ -121,24 +124,23 @@ end
                 (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)
-  (message "Sending %s...(%s/%d)"
+(defun riece-rdcc-output-handler-2 (name output time)
+  (message (riece-mcat "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))
-  (riece-ruby-clear name))
+  (message (riece-mcat "Sending %s...done")
+          (riece-ruby-property name 'riece-rdcc-request-file)))
 
 (defun riece-command-dcc-send (user file)
   (interactive
    (let ((completion-ignore-case t))
      (list (riece-completing-read-identity
-           "User: "
+           (riece-mcat "User: ")
            (riece-get-users-on-server (riece-current-server-name)))
-          (expand-file-name (read-file-name "File: ")))))
+          (expand-file-name (read-file-name (riece-mcat "File: "))))))
   (let ((name (riece-ruby-execute
               (riece-ruby-substitute-variables
                riece-rdcc-send-program
@@ -175,7 +177,7 @@ end
             (logand (lsh riece-rdcc-received-size -16) 255)
             (logand (lsh riece-rdcc-received-size -8) 255)
             (logand riece-rdcc-received-size 255)))
-    (message "Receiving %s from %s...(%s/%s)"
+    (message (riece-mcat "Receiving %s from %s...(%s/%s)")
             (file-name-nondirectory riece-rdcc-request-file)
             riece-rdcc-request-user
             (riece-rdcc-format-size riece-rdcc-received-size)
@@ -188,7 +190,7 @@ end
     (set-buffer (process-buffer process))
     (unless (= riece-rdcc-received-size riece-rdcc-request-size)
       (error "Premature end of file"))
-    (message "Receiving %s from %s...done"
+    (message (riece-mcat "Receiving %s from %s...done")
             (file-name-nondirectory riece-rdcc-request-file)
             riece-rdcc-request-user)
     (condition-case nil
@@ -223,7 +225,7 @@ end
                 (let ((requests riece-rdcc-requests)
                       (index 1))
                   (while requests
-                    (princ (format "%2d: %s %s (%d bytes)\n"
+                    (princ (format (riece-mcat "%2d: %s %s (%d bytes)\n")
                                    index
                                    (car (car requests))
                                    (nth 1 (car requests))
@@ -245,8 +247,8 @@ end
        (list request
             (expand-file-name
              (read-file-name
-              (concat "Save as (default "
-                      (file-name-nondirectory default-name) ") ")
+              (format (riece-mcat "Save as (default %s) ")
+                      (file-name-nondirectory default-name))
               (file-name-directory default-name)
               default-name))))))
   (let* ((temp-file (expand-file-name
@@ -302,7 +304,7 @@ end
 
 (defun riece-handle-dcc-request (prefix target message)
   (let ((case-fold-search t))
-    (when (and riece-rdcc-enabled
+    (when (and (get 'riece-rdcc 'riece-addon-enabled)
               (string-match
                "SEND \\(\\([^ ]+\\)\\|\"\\(.+\\)\"\\) \\([^ ]+\\) \\([^ ]+\\) \\([^ ]+\\)"
                message))
@@ -322,7 +324,8 @@ end
                 (with-current-buffer (window-buffer (selected-window))
                   (substitute-command-keys
                    (format
-                    "Type \\[riece-command-dcc-receive] to receive"
+                    (riece-mcat
+                     "Type \\[riece-command-dcc-receive] to receive")
                     user))))
        (riece-insert-change buffer (format "DCC SEND from %s: %s (%s)\n"
                                            user file
@@ -352,15 +355,18 @@ end
   (add-to-list 'riece-ctcp-additional-clientinfo "DCC")
   (add-hook 'riece-ctcp-dcc-request-hook 'riece-handle-dcc-request))
 
+(defun riece-rdcc-uninstall ()
+  (setq riece-ctcp-additional-clientinfo
+       (delete "DCC" riece-ctcp-additional-clientinfo))
+  (remove-hook 'riece-ctcp-dcc-request-hook 'riece-handle-dcc-request))
+
 (defun riece-rdcc-enable ()
   (define-key riece-dialogue-mode-map "\C-ds" 'riece-command-dcc-send)
-  (define-key riece-dialogue-mode-map "\C-dr" 'riece-command-dcc-receive)
-  (setq riece-rdcc-enabled t))
+  (define-key riece-dialogue-mode-map "\C-dr" 'riece-command-dcc-receive))
 
 (defun riece-rdcc-disable ()
   (define-key riece-dialogue-mode-map "\C-ds" nil)
-  (define-key riece-dialogue-mode-map "\C-dr" nil)
-  (setq riece-rdcc-enabled nil))
+  (define-key riece-dialogue-mode-map "\C-dr" nil))
 
 (provide 'riece-rdcc)