aboutsummaryrefslogtreecommitdiffstats
path: root/lisp/net
diff options
context:
space:
mode:
authorKai Großjohann <[email protected]>2002-09-22 17:39:18 +0000
committerKai Großjohann <[email protected]>2002-09-22 17:39:18 +0000
commit292ffc15564ef7a1e869b7735804794c5a347f45 (patch)
tree66c6e6426f4bbfb019a7b92fbddd879533da6756 /lisp/net
parent91879624ba4e260553f5f66978fba871ff0b6ab9 (diff)
Version 2.0.22 released.
(tramp-parse-rhosts, tramp-parse-shosts) (tramp-parse-hosts, tramp-parse-passwd): Apply `push' but `add-to-list' for performance reasons. (tramp-get-completion-user-host): Return `nil' in case both `user' and 'host' are empty (not necessarily `nil'. (tramp-parse-netrc, tramp-parse-netrc-group): New functions. (tramp-user-regexp): " \t" are not user regexp characters. (tramp-completion-handle-file-name-all-completions): Remove Ange-FTP cmpletion. It has a bug not handling the "/ftp:" prefix completely, and it returns local completions as well. (tramp-completion-function-alist-ftp): New constant. (tramp-completion-function-alist): Add completion function for "ftp". From Michael Albinus <[email protected]>.
Diffstat (limited to 'lisp/net')
-rw-r--r--lisp/net/tramp.el96
1 files changed, 55 insertions, 41 deletions
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el
index 58ec71b312..36f81005ec 100644
--- a/lisp/net/tramp.el
+++ b/lisp/net/tramp.el
@@ -72,7 +72,7 @@
;; In the Tramp CVS repository, the version numer is auto-frobbed from
;; the Makefile, so you should edit the top-level Makefile to change
;; the version number.
-(defconst tramp-version "2.0.21"
+(defconst tramp-version "2.0.22"
"This version of tramp.")
(defconst tramp-bug-report-address "[email protected]"
@@ -656,7 +656,7 @@ See `tramp-methods' for a list of possibilities for METHOD."
(unless (memq system-type '(windows-nt))
'((tramp-parse-rhosts "/etc/hosts.equiv")
(tramp-parse-rhosts "~/.rhosts")))
- "Default list of (FUNNCTION FILE) pairs to be examined for rsh methods."
+ "Default list of (FUNCTION FILE) pairs to be examined for rsh methods."
)
;; Default values for non-Unices seeked
@@ -668,21 +668,28 @@ See `tramp-methods' for a list of possibilities for METHOD."
(tramp-parse-rhosts "~/.rhosts")
(tramp-parse-rhosts "~/.shosts")
(tramp-parse-shosts "~/.ssh/known_hosts")))
- "Default list of (FUNNCTION FILE) pairs to be examined for ssh methods."
+ "Default list of (FUNCTION FILE) pairs to be examined for ssh methods."
)
;; Default values for non-Unices seeked
(defconst tramp-completion-function-alist-telnet
(unless (memq system-type '(windows-nt))
'((tramp-parse-hosts "/etc/hosts")))
- "Default list of (FUNNCTION FILE) pairs to be examined for telnet methods."
+ "Default list of (FUNCTION FILE) pairs to be examined for telnet methods."
)
;; Default values for non-Unices seeked
(defconst tramp-completion-function-alist-su
(unless (memq system-type '(windows-nt))
'((tramp-parse-passwd "/etc/passwd")))
- "Default list of (FUNNCTION FILE) pairs to be examined for su methods."
+ "Default list of (FUNCTION FILE) pairs to be examined for su methods."
+)
+
+;; Default values for non-Unices seeked
+(defconst tramp-completion-function-alist-ftp
+ (unless (memq system-type '(windows-nt))
+ '((tramp-parse-netrc "~/.netrc")))
+ "Default list of (FUNCTION FILE) pairs to be examined for ftp methods."
)
(defcustom tramp-completion-function-alist
@@ -708,6 +715,7 @@ See `tramp-methods' for a list of possibilities for METHOD."
(cons "krlogin" tramp-completion-function-alist-rsh)
(cons "plink" tramp-completion-function-alist-ssh)
(cons "pscp" tramp-completion-function-alist-ssh)
+ (cons "ftp" tramp-completion-function-alist-ftp)
(cons "fcp" nil)
)
"*Alist of methods for remote files.
@@ -720,9 +728,7 @@ names from FILE for completion. The following predefined FUNCTIONs exists:
* `tramp-parse-shosts' for \"ssh_known_hosts\" like files,
* `tramp-parse-hosts' for \"/etc/hosts\" like files, and
* `tramp-parse-passwd' for \"/etc/passwd\" like files.
-
-A FUNCTION parsing \".netrc\" file syntax doesn't exist in TRAMP. This
-task is delegated to ange-ftp; its customization should be used instead.
+ * `tramp-parse-netrc ' for \".netrc\" like files.
FUNCTION can also see a customer defined function. For more details see
the info pages."
@@ -934,7 +940,7 @@ Derived from `tramp-postfix-multi-hop-format'."
:type 'regexp)
(defcustom tramp-user-regexp
- "[^:@/]*"
+ "[^:@/ \t]*"
"*Regexp matching user names."
:group 'tramp
:type 'regexp)
@@ -3611,10 +3617,6 @@ Return (nil) if arg is nil."
(let*
((fullname (concat directory filename))
- ;; prepare ange-ftp fix
- (fix-ange-ftp-string
- (concat tramp-ftp-method tramp-postfix-single-method-format))
- (fix-ange-ftp (string-match (concat "^" fix-ange-ftp-string) filename))
;; local files
(result
(if (tramp-completion-mode fullname)
@@ -3658,25 +3660,7 @@ Return (nil) if arg is nil."
;; Possible methods
(setq result
- (append result (tramp-get-completion-methods m))))
-
- ;; Ange-ftp completions.
- ;; Filename might have the form "ftp:xxx". Ange-ftp isn't able to
- ;; handle the prefix "ftp:" correctly in
- ;; `ange-ftp-file-name-all-completions'; it simply calls
- ;;`(all-completions file (ange-ftp-generate-root-prefixes))'.
- ;; So we must wrap around.
- (when (tramp-ange-ftp-file-name-p nil m)
- (setq result (append result
- (mapcar
- '(lambda (x) (if fix-ange-ftp (concat fix-ange-ftp-string x) x))
- (catch 'tramp-forward-to-ange-ftp
- (tramp-invoke-ange-ftp
- 'file-name-all-completions
- (if fix-ange-ftp
- (substring filename (length fix-ange-ftp-string))
- filename)
- directory)))))))
+ (append result (tramp-get-completion-methods m)))))
(setq v (delq car v))))
@@ -3852,13 +3836,13 @@ PARTIAL-USER must match USER, PARTIAL-HOST must match HOST."
(t (setq user nil
host nil)))
- (when (or user host)
+ (unless (zerop (+ (length user) (length host)))
;; we must remove leading "/".
(substring (tramp-make-tramp-file-name nil method user host nil) 1)))
(defun tramp-parse-rhosts (filename)
"Return a list of (user host) tuples allowed to access.
-Either user or host may be nil"
+Either user or host may be nil."
(let (res)
(when (file-exists-p filename)
@@ -3866,7 +3850,7 @@ Either user or host may be nil"
(insert-file-contents filename)
(goto-char (point-min))
(while (not (eobp))
- (add-to-list 'res (tramp-parse-rhosts-group)))))
+ (push (tramp-parse-rhosts-group) res))))
res))
;; Taken from gnus/netrc.el
@@ -3878,7 +3862,7 @@ Either user or host may be nil"
(defun tramp-parse-rhosts-group ()
"Return a (user host) tuple allowed to access.
-Either user or host may be nil"
+Either user or host may be nil."
(let ((result)
(regexp
@@ -3903,7 +3887,7 @@ User is always nil."
(insert-file-contents filename)
(goto-char (point-min))
(while (not (eobp))
- (add-to-list 'res (tramp-parse-shosts-group)))))
+ (push (tramp-parse-shosts-group) res))))
res))
(defun tramp-parse-shosts-group ()
@@ -3932,7 +3916,7 @@ User is always nil."
(insert-file-contents filename)
(goto-char (point-min))
(while (not (eobp))
- (add-to-list 'res (tramp-parse-hosts-group)))))
+ (push (tramp-parse-hosts-group) res))))
res))
(defun tramp-parse-hosts-group ()
@@ -3964,12 +3948,12 @@ Host is always \"localhost\"."
(insert-file-contents filename)
(goto-char (point-min))
(while (not (eobp))
- (add-to-list 'res (tramp-parse-passwd-group)))))
+ (push (tramp-parse-passwd-group) res))))
res)))
(defun tramp-parse-passwd-group ()
"Return a (user host) tuple allowed to access.
-User is always nil."
+Host is always \"localhost\"."
(let ((result)
(regexp (concat "^\\(" tramp-user-regexp "\\):")))
@@ -3981,6 +3965,36 @@ User is always nil."
(forward-line 1)
result))
+(defun tramp-parse-netrc (filename)
+ "Return a list of (user host) tuples allowed to access.
+User may be nil."
+
+ (let (res)
+ (when (file-exists-p filename)
+ (with-temp-buffer
+ (insert-file-contents filename)
+ (goto-char (point-min))
+ (while (not (eobp))
+ (push (tramp-parse-netrc-group) res))))
+ res))
+
+(defun tramp-parse-netrc-group ()
+ "Return a (user host) tuple allowed to access.
+User may be nil."
+
+ (let ((result)
+ (regexp
+ (concat
+ "^[ \t]*machine[ \t]+" "\\(" tramp-host-regexp "\\)"
+ "\\([ \t]+login[ \t]+" "\\(" tramp-user-regexp "\\)" "\\)?")))
+
+ (narrow-to-region (point) (tramp-point-at-eol))
+ (when (re-search-forward regexp nil t)
+ (setq result (list (match-string 3) (match-string 1))))
+ (widen)
+ (forward-line 1)
+ result))
+
(defun tramp-completion-handle-expand-file-name (name &optional dir)
"Like `expand-file-name' for tramp files."
(let ((fullname (concat (or dir default-directory) name)))
@@ -6461,7 +6475,7 @@ report.
;; without ":". Hmm. Worth a bug report?
;; ** Acknowledge port numbers.
;; ** Extend `tramp-get-completion-su' for NIS and shadow passwords.
-;; ** Unify `tramp-parse-{rhosts,shosts,hosts,passwd}'.
+;; ** Unify `tramp-parse-{rhosts,shosts,hosts,passwd,netrc}'.
;; Code is nearly identical.
;; ** Decide whiche files to take for searching user/host names depending on
;; operating system (windows-nt) in `tramp-completion-function-alist'.