X-Git-Url: https://cgit.sxemacs.org/?a=blobdiff_plain;f=lisp%2Friece-rdcc.el;h=530f40e558df5a299f738514a7f477af5c8dea09;hb=f8fb5a84f0fad33193354a469c2d54fdb7340286;hp=8ee61bf5e31a6ad5ddceead2cd6232c16a3b37ef;hpb=6c3c307edb49c8520da76be16a2c473caab6d52f;p=riece diff --git a/lisp/riece-rdcc.el b/lisp/riece-rdcc.el index 8ee61bf..530f40e 100644 --- a/lisp/riece-rdcc.el +++ b/lisp/riece-rdcc.el @@ -100,6 +100,11 @@ puts(\"#{" address " >> 24 & 0xFF}.#{" address " >> 16 & 0xFF}.#{" (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") + (defvar temporary-file-directory) (defvar jka-compr-compression-info-list) (defvar jam-zcat-filename-list) @@ -156,7 +161,7 @@ puts(\"#{" address " >> 24 & 0xFF}.#{" address " >> 16 & 0xFF}.#{" 'file (concat "'" file "'")) 'block-size - (number-of-string riece-rdcc-block-size)))) + (number-to-string riece-rdcc-block-size)))) (process-send-eof process) (save-excursion (set-buffer (process-buffer process)) @@ -189,7 +194,7 @@ puts(\"#{" address " >> 24 & 0xFF}.#{" address " >> 16 & 0xFF}.#{" (insert input) (let ((coding-system-for-write 'binary) jka-compr-compression-info-list jam-zcat-filename-list) - (append-to-file (point-min) (point-max) riece-rdcc-temp-file)) + (write-region (point-min) (point-max) riece-rdcc-temp-file t 0)) (message "Receiving %s from %s...(%s/%s)" (file-name-nondirectory riece-rdcc-request-file) riece-rdcc-request-user @@ -315,9 +320,10 @@ puts(\"#{" address " >> 24 & 0xFF}.#{" address " >> 16 & 0xFF}.#{" (defun riece-handle-dcc-request (prefix target message) (let ((case-fold-search t)) - (when (string-match - "SEND \\([^ ]+\\) \\([^ ]+\\) \\([^ ]+\\) \\([^ ]+\\)" - message) + (when (and riece-rdcc-enabled + (string-match + "SEND \\([^ ]+\\) \\([^ ]+\\) \\([^ ]+\\) \\([^ ]+\\)" + message)) (let ((file (match-string 1 message)) (address (match-string 2 message)) (port (string-to-number (match-string 3 message))) @@ -361,9 +367,17 @@ puts(\"#{" address " >> 24 & 0xFF}.#{" address " >> 16 & 0xFF}.#{" (defvar riece-dialogue-mode-map) (defun riece-rdcc-insinuate () (add-to-list 'riece-ctcp-additional-clientinfo "DCC") - (add-hook 'riece-ctcp-dcc-request-hook 'riece-handle-dcc-request) + (add-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)) + (define-key riece-dialogue-mode-map "\C-dr" 'riece-command-dcc-receive) + (setq riece-rdcc-enabled t)) + +(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)) (provide 'riece-rdcc)