-;;; riece-ndcc.el --- elisp native DCC add-on
+;;; riece-ndcc.el --- DCC file sending protocol support (written in elisp)
;; 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 'calc)
(defgroup riece-ndcc nil
- "Elisp native DCC implementation"
+ "DCC written in elisp."
:prefix "riece-"
:group 'riece)
(defvar riece-ndcc-request-user nil)
(defvar riece-ndcc-request-size nil)
+(defconst riece-ndcc-description
+ "DCC file sending protocol support (written in elisp.)")
+
(defun riece-ndcc-encode-address (address)
(unless (string-match
"^\\([0-9]+\\)\\.\\([0-9]+\\)\\.\\([0-9]+\\)\\.\\([0-9]+\\)$"
(defun riece-handle-dcc-request (prefix target message)
(let ((case-fold-search t))
- (when (string-match
- "SEND \\([^ ]+\\) \\([^ ]+\\) \\([^ ]+\\) \\([^ ]+\\)"
- message)
+ (when (and (get 'riece-ndcc 'riece-addon-enabled)
+ (string-match
+ "SEND \\([^ ]+\\) \\([^ ]+\\) \\([^ ]+\\) \\([^ ]+\\)"
+ message))
(let ((file (match-string 1 message))
(address (match-string 2 message))
(port (string-to-number (match-string 3 message)))
(defvar riece-dialogue-mode-map)
(defun riece-ndcc-insinuate ()
- (add-hook 'riece-ctcp-dcc-request-hook 'riece-handle-dcc-request)
+ (unless (fboundp 'make-network-process)
+ (error "This Emacs does not have make-network-process"))
+ (add-hook 'riece-ctcp-dcc-request-hook 'riece-handle-dcc-request))
+
+(defun riece-ndcc-uninstall ()
+ (remove-hook 'riece-ctcp-dcc-request-hook 'riece-handle-dcc-request))
+
+(defun riece-ndcc-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))
+(defun riece-ndcc-disable ()
+ (define-key riece-dialogue-mode-map "\C-ds" nil)
+ (define-key riece-dialogue-mode-map "\C-dr" nil))
+
(provide 'riece-ndcc)
;;; riece-ndcc.el ends here