]> code.delx.au - gnu-emacs/blobdiff - lisp/rlogin.el
(thai-category-table): Use
[gnu-emacs] / lisp / rlogin.el
index db4433a026860cf570eb13ed6024185855750ccd..09e3b13066c856e4222b0ef7bd65d0248e9cfc03 100644 (file)
@@ -1,11 +1,13 @@
 ;;; rlogin.el --- remote login interface
 
-;; Copyright (C) 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
+;; Copyright (C) 1992-1995, 1997, 1998 Free Software Foundation, Inc.
 
 ;; Author: Noah Friedman
-;; Maintainer: Noah Friedman <friedman@prep.ai.mit.edu>
+;; Maintainer: Noah Friedman <friedman@splode.com>
 ;; Keywords: unix, comm
 
+;; $Id: rlogin.el,v 1.43 1998/09/11 01:22:53 friedman Exp $
+
 ;; This file is part of GNU Emacs.
 
 ;; GNU Emacs is free software; you can redistribute it and/or modify
@@ -23,8 +25,6 @@
 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 ;; Boston, MA 02111-1307, USA.
 
-;; $Id: rlogin.el,v 1.35 1996/06/23 04:31:17 friedman Exp rms $
-
 ;;; Commentary:
 
 ;; Support for remote logins using `rlogin'.
@@ -47,7 +47,6 @@
   :group 'processes
   :group 'unix)
 
-
 (defcustom rlogin-program "rlogin"
   "*Name of program to invoke rlogin"
   :type 'string
   :type 'hook
   :group 'rlogin)
 
-(defcustom rlogin-process-connection-type nil
+(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)))
   "*If non-`nil', use a pty for the local rlogin process.
 If `nil', use a pipe (if pipes are supported on the local system).
 
 Generally it is better not to waste ptys on systems which have a static
 number of them.  On the other hand, some implementations of `rlogin' assume
 a pty is being used, and errors will result from using a pipe instead."
-  :type '(choice (const :tag "ptys" t)
-                (const :tag "pipes" nil))
+  :type '(choice (const :tag "pipes" nil)
+                (other :tag "ptys" t))
   :group 'rlogin)
 
 (defcustom rlogin-directory-tracking-mode 'local
@@ -93,7 +100,7 @@ simply setting this variable, since the function does the necessary
 re-synching of directories."
   :type '(choice (const :tag "off" nil)
                 (const :tag "ftp" t)
-                (const :tag "local" local))
+                (other :tag "local" local))
   :group 'rlogin)
 
 (make-variable-buffer-local 'rlogin-directory-tracking-mode)
@@ -207,15 +214,19 @@ variable."
       ;; buffer from a previous exited process.
       (set-marker (process-mark proc) (point-max))
 
-      ;; comint-output-filter-functions is just like a hook, except that the
-      ;; functions in that list are passed arguments.  add-hook serves well
-      ;; enough for modifying it.
+      ;; comint-output-filter-functions is treated like a hook: it is
+      ;; processed via run-hooks or run-hooks-with-args in later versions
+      ;; of emacs.
       ;; comint-output-filter-functions should already have a
       ;; permanent-local property, at least in emacs 19.27 or later.
-      (if (fboundp 'make-local-hook)
-          (make-local-hook 'comint-output-filter-functions)
-        (make-local-variable 'comint-output-filter-functions))
-      (add-hook 'comint-output-filter-functions 'rlogin-carriage-filter)
+      (cond
+       ((fboundp 'make-local-hook)
+        (make-local-hook 'comint-output-filter-functions)
+        (add-hook 'comint-output-filter-functions 'rlogin-carriage-filter
+                  nil t))
+       (t
+        (make-local-variable 'comint-output-filter-functions)
+        (add-hook 'comint-output-filter-functions 'rlogin-carriage-filter)))
 
       (rlogin-mode)
 
@@ -237,6 +248,8 @@ variable."
                  (cd-absolute (concat comint-file-name-prefix "~/"))))
         (error nil))))))
 
+(put 'rlogin-mode 'mode-class 'special)
+
 (defun rlogin-mode ()
   "Set major-mode for rlogin sessions.
 If `rlogin-mode-hook' is set, run it."
@@ -310,7 +323,7 @@ local one share the same directories (through NFS)."
       (setq list (cons (substring line (match-beginning 0) (match-end 0))
                        list))
       (setq posn (match-end 0)))
-    (store-match-data (match-data))
+    (set-match-data (match-data))
     (nreverse list)))
 
 (defun rlogin-carriage-filter (string)
@@ -326,19 +339,19 @@ local one share the same directories (through NFS)."
 
 (defun rlogin-send-Ctrl-C ()
   (interactive)
-  (send-string nil "\C-c"))
+  (process-send-string nil "\C-c"))
 
 (defun rlogin-send-Ctrl-D ()
   (interactive)
-  (send-string nil "\C-d"))
+  (process-send-string nil "\C-d"))
 
 (defun rlogin-send-Ctrl-Z ()
   (interactive)
-  (send-string nil "\C-z"))
+  (process-send-string nil "\C-z"))
 
 (defun rlogin-send-Ctrl-backslash ()
   (interactive)
-  (send-string nil "\C-\\"))
+  (process-send-string nil "\C-\\"))
 
 (defun rlogin-delchar-or-send-Ctrl-D (arg)
   "\
@@ -355,4 +368,6 @@ Delete ARG characters forward, or send a C-d to process if at end of buffer."
       (comint-dynamic-complete)
     (insert "\C-i")))
 
+(provide 'rlogin)
+
 ;;; rlogin.el ends here