;;; rlogin.el --- remote login interface
-;; Copyright (C) 1992, 1993, 1994, 1995, 1997 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
;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
;; Boston, MA 02111-1307, USA.
-;; $Id: rlogin.el,v 1.36 1997/04/12 02:53:36 rms Exp rms $
-
;;; Commentary:
;; Support for remote logins using `rlogin'.
: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
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)
;; 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)
(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."
(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)
(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)
"\
(comint-dynamic-complete)
(insert "\C-i")))
+(provide 'rlogin)
+
;;; rlogin.el ends here