]> code.delx.au - gnu-emacs/blobdiff - lisp/net/rlogin.el
Merge from emacs-23 branch
[gnu-emacs] / lisp / net / rlogin.el
index 77f3296751a29c1f43696cfecc5bc778da51d2ed..e2619e3bf79f0282a13e12f6689cc8998461332e 100644 (file)
@@ -1,7 +1,6 @@
 ;;; rlogin.el --- remote login interface
 
-;; Copyright (C) 1992, 1993, 1994, 1995, 1997, 1998, 2001, 2002, 2003,
-;;   2004, 2005, 2006, 2007, 2008, 2009, 2010
+;; Copyright (C) 1992-1995, 1997-1998, 2001-2011
 ;;   Free Software Foundation, Inc.
 
 ;; Author: Noah Friedman
   :group 'rlogin)
 
 (defcustom rlogin-process-connection-type
-  (save-match-data
-    ;; Solaris 2.x `rlogin' will spew a bunch of ioctl error messages if
-    ;; stdin isn't a tty.
-    (cond ((and (boundp 'system-configuration)
-                (stringp system-configuration)
-                (string-match "-solaris2" system-configuration))
-           t)
-          (t nil)))
+  ;; Solaris 2.x `rlogin' will spew a bunch of ioctl error messages if
+  ;; stdin isn't a tty.
+  (and (string-match-p "-solaris2" system-configuration) t)
   "If non-nil, use a pty for the local rlogin process.
 If nil, use a pipe (if pipes are supported on the local system).
 
@@ -116,19 +110,19 @@ this variable is set from that."
   :type '(choice (const nil) string)
   :group 'rlogin)
 
-;; Initialize rlogin mode map.
-(defvar rlogin-mode-map '())
-(cond
((null rlogin-mode-map)
-  (setq rlogin-mode-map (if (consp shell-mode-map)
-                            (cons 'keymap shell-mode-map)
-                          (copy-keymap shell-mode-map)))
-  (define-key rlogin-mode-map "\C-c\C-c" 'rlogin-send-Ctrl-C)
-  (define-key rlogin-mode-map "\C-c\C-d" 'rlogin-send-Ctrl-D)
-  (define-key rlogin-mode-map "\C-c\C-z" 'rlogin-send-Ctrl-Z)
-  (define-key rlogin-mode-map "\C-c\C-\\" 'rlogin-send-Ctrl-backslash)
-  (define-key rlogin-mode-map "\C-d" 'rlogin-delchar-or-send-Ctrl-D)
-  (define-key rlogin-mode-map "\C-i" 'rlogin-tab-or-complete)))
+(defvar rlogin-mode-map
+  (let ((map (if (consp shell-mode-map)
+                 (cons 'keymap shell-mode-map)
              (copy-keymap shell-mode-map))))
+    (define-key rlogin-mode-map "\C-c\C-c" 'rlogin-send-Ctrl-C)
+    (define-key rlogin-mode-map "\C-c\C-d" 'rlogin-send-Ctrl-D)
+    (define-key rlogin-mode-map "\C-c\C-z" 'rlogin-send-Ctrl-Z)
+    (define-key rlogin-mode-map "\C-c\C-\\" 'rlogin-send-Ctrl-backslash)
+    (define-key rlogin-mode-map "\C-d" 'rlogin-delchar-or-send-Ctrl-D)
+    (define-key rlogin-mode-map "\C-i" 'rlogin-tab-or-complete)
+    map)
+  "Keymap for `rlogin-mode'.")
+
 
 \f
 ;;;###autoload (add-hook 'same-window-regexps (purecopy "^\\*rlogin-.*\\*\\(\\|<[0-9]+>\\)"))
@@ -176,7 +170,6 @@ variable."
                (read-from-minibuffer "rlogin arguments (hostname first): "
                                      nil nil nil 'rlogin-history)
                current-prefix-arg))
-
   (let* ((process-connection-type rlogin-process-connection-type)
          (args (if rlogin-explicit-args
                    (append (split-string input-args)
@@ -193,7 +186,6 @@ variable."
          (buffer-name (if (string= user (user-login-name))
                           (format "*rlogin-%s*" host)
                         (format "*rlogin-%s@%s*" user host))))
-
     (cond ((null buffer))
          ((stringp buffer)
           (setq buffer-name buffer))
@@ -203,32 +195,26 @@ variable."
            (setq buffer-name (format "%s<%d>" buffer-name buffer)))
           (t
            (setq buffer-name (generate-new-buffer-name buffer-name))))
-
     (setq buffer (get-buffer-create buffer-name))
     (pop-to-buffer buffer-name)
-
     (unless (comint-check-proc buffer-name)
       (comint-exec buffer buffer-name rlogin-program nil args)
-
       (rlogin-mode)
-
       (make-local-variable 'rlogin-host)
       (setq rlogin-host host)
       (make-local-variable 'rlogin-remote-user)
       (setq rlogin-remote-user user)
-
-      (condition-case ()
-          (cond ((eq rlogin-directory-tracking-mode t)
-                 ;; Do this here, rather than calling the tracking mode
-                 ;; function, to avoid a gratuitous resync check; the default
-                 ;; should be the user's home directory, be it local or remote.
-                 (setq comint-file-name-prefix
-                       (concat "/" rlogin-remote-user "@" rlogin-host ":"))
-                 (cd-absolute comint-file-name-prefix))
-                ((null rlogin-directory-tracking-mode))
-                (t
-                 (cd-absolute (concat comint-file-name-prefix "~/"))))
-        (error nil)))))
+      (ignore-errors
+        (cond ((eq rlogin-directory-tracking-mode t)
+               ;; Do this here, rather than calling the tracking mode
+               ;; function, to avoid a gratuitous resync check; the default
+               ;; should be the user's home directory, be it local or remote.
+               (setq comint-file-name-prefix
+                     (concat "/" rlogin-remote-user "@" rlogin-host ":"))
+               (cd-absolute comint-file-name-prefix))
+              ((null rlogin-directory-tracking-mode))
+              (t
+               (cd-absolute (concat comint-file-name-prefix "~/"))))))))
 
 (put 'rlogin-mode 'mode-class 'special)
 
@@ -303,8 +289,7 @@ local one share the same directories (e.g. through NFS)."
   (process-send-string nil "\C-\\"))
 
 (defun rlogin-delchar-or-send-Ctrl-D (arg)
-  "\
-Delete ARG characters forward, or send a C-d to process if at end of buffer."
+  "Delete ARG characters forward, or send a C-d to process if at end of buffer."
   (interactive "p")
   (if (eobp)
       (rlogin-send-Ctrl-D)
@@ -319,5 +304,4 @@ Delete ARG characters forward, or send a C-d to process if at end of buffer."
 
 (provide 'rlogin)
 
-;; arch-tag: 6e20eabf-feda-40fa-ab40-0d156db447e4
 ;;; rlogin.el ends here