]> code.delx.au - gnu-emacs/blobdiff - lisp/url/url-irc.el
* url-auth.el (url-digest-auth): Changed an if so that the
[gnu-emacs] / lisp / url / url-irc.el
index 9ff4e122d527b09c366d92ccb409ec3026b28dc9..7297e75496eb5146793936518bd405848b177142 100644 (file)
@@ -1,47 +1,49 @@
 ;;; url-irc.el --- IRC URL interface
-;; Author: $Author: monnier $
-;; Created: $Date: 2004/04/04 01:21:46 $
-;; Version: $Revision: 1.1.1.1 $
+
+;; Copyright (C) 1996, 1997, 1998, 1999, 2004,
+;;   2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+
 ;; Keywords: comm, data, processes
 
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Copyright (c) 1996 by William M. Perry <wmperry@cs.indiana.edu>
-;;; Copyright (c) 1996 - 1999 Free Software Foundation, Inc.
-;;;
-;;; This file is part of GNU Emacs.
-;;;
-;;; GNU Emacs is free software; you can redistribute it and/or modify
-;;; it under the terms of the GNU General Public License as published by
-;;; the Free Software Foundation; either version 2, or (at your option)
-;;; any later version.
-;;;
-;;; GNU Emacs is distributed in the hope that it will be useful,
-;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;;; GNU General Public License for more details.
-;;;
-;;; 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.
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-;;; IRC URLs are defined in http://www.w3.org/Addressing/draft-mirashi-url-irc-01.txt
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; 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., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;;; Commentary:
+
+;; IRC URLs are defined in http://www.w3.org/Addressing/draft-mirashi-url-irc-01.txt
+
+;;; Code:
 
 (require 'url-vars)
 (require 'url-parse)
 
 (defconst url-irc-default-port 6667 "Default port for IRC connections")
 
-(defcustom url-irc-function 'url-irc-zenirc
+(defcustom url-irc-function 'url-irc-rcirc
   "*Function to actually open an IRC connection.
-Should be a function that takes several argument:
+Should be a function that takes several arguments:
     HOST - the hostname of the IRC server to contact
     PORT - the port number of the IRC server to contact
  CHANNEL - What channel on the server to visit right away (can be nil)
     USER - What username to use
 PASSWORD - What password to use"
-  :type '(choice (const :tag "ZEN IRC" :value 'url-irc-zenirc)
+  :type '(choice (const :tag "rcirc" :value url-irc-rcirc)
+                (const :tag "ERC" :value url-irc-erc)
+                (const :tag "ZEN IRC" :value url-irc-zenirc)
                 (function :tag "Other"))
   :group 'url)
 
@@ -59,10 +61,19 @@ PASSWORD - What password to use"
       (insert "/join " channel)
       (zenirc-send-line))))
 
+(defun url-irc-rcirc (host port channel user password)
+  (let ((chan (when channel (concat "#" channel))))
+    (rcirc-connect host port user nil nil (when chan (list chan)))
+    (when chan
+      (switch-to-buffer (concat chan "@" host)))))
+
+(defun url-irc-erc (host port channel user password)
+  (erc-handle-irc-url host port channel user password))
+
 ;;;###autoload
 (defun url-irc (url)
   (let* ((host (url-host url))
-        (port (string-to-int (url-port url)))
+        (port (url-port url))
         (pass (url-password url))
         (user (url-user url))
         (chan (url-filename url)))
@@ -74,7 +85,8 @@ PASSWORD - What password to use"
        (setq chan nil))
     (funcall url-irc-function host port chan user pass)
     nil))
-    
+
 (provide 'url-irc)
 
 ;;; arch-tag: 2e5eecf8-9eb3-436b-9fbd-c26f2fb2bf3e
+;;; url-irc.el ends here