diff options
author | Michael Albinus <albinus@detlef> | 2010-01-28 22:13:01 +0100 |
---|---|---|
committer | Michael Albinus <albinus@detlef> | 2010-01-28 22:13:01 +0100 |
commit | f95e14e904f14afd92094e9d527dc3cd7164ac41 (patch) | |
tree | ff8008098debf16f322163b9b490ee73c1e0c9e3 | |
parent | e4a8e1b74917ab02487570b17fbfa53449d62926 (diff) | |
download | emacs-f95e14e904f14afd92094e9d527dc3cd7164ac41.tar.gz |
* net/ange-ftp.el (ange-ftp-insert-directory): Handle the case,
FILENAME is not in `default-directory'. (Bug#5478)
* net/tramp.el (tramp-handle-insert-directory): Simplify handling
of SWITCHES. Handle the case, FILENAME is not in
`default-directory'. (Bug#5478)
(tramp-register-file-name-handlers): Add safe-magic property.
-rw-r--r-- | lisp/ChangeLog | 10 | ||||
-rw-r--r-- | lisp/net/ange-ftp.el | 13 | ||||
-rwxr-xr-x | lisp/net/tramp.el | 35 |
3 files changed, 45 insertions, 13 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index fbac27409aa..4020daccc72 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,13 @@ +2010-01-28 Michael Albinus <michael.albinus@gmx.de> + + * net/ange-ftp.el (ange-ftp-insert-directory): Handle the case, + FILENAME is not in `default-directory'. (Bug#5478) + + * net/tramp.el (tramp-handle-insert-directory): Simplify handling + of SWITCHES. Handle the case, FILENAME is not in + `default-directory'. (Bug#5478) + (tramp-register-file-name-handlers): Add safe-magic property. + 2010-01-28 Chong Yidong <cyd@stupidchicken.com> * arc-mode.el (archive-zip-extract): Quote the argument passed to diff --git a/lisp/net/ange-ftp.el b/lisp/net/ange-ftp.el index b045431bf78..98a3f557595 100644 --- a/lisp/net/ange-ftp.el +++ b/lisp/net/ange-ftp.el @@ -4542,7 +4542,18 @@ NEWNAME should be the name to give the new compressed or uncompressed file.") (if (string-match (concat "^.+[^ ] " (regexp-quote filename) "\\( -> .*\\)?[@/*=]?\n") dirlist) (match-string 0 dirlist) - ""))))))) + ""))))) + + ;; The inserted file could be from somewhere else. + (when (and (not wildcard) (not full) + (search-backward + (if (zerop (length (file-name-nondirectory + (expand-file-name file)))) + "." + (file-name-nondirectory file)) + nil 'noerror)) + (replace-match (file-relative-name (expand-file-name file)) t) + (goto-char (point-max))))) (defun ange-ftp-dired-uncache (dir) (if (ange-ftp-ftp-name (expand-file-name dir)) diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el index d411c69cb96..9e8522f3db0 100755 --- a/lisp/net/tramp.el +++ b/lisp/net/tramp.el @@ -4062,26 +4062,25 @@ This is like `dired-recursive-delete-directory' for Tramp files." (not (symbol-value 'ls-lisp-use-insert-directory-program))) (tramp-run-real-handler 'insert-directory (list filename switches wildcard full-directory-p)) - (when (and (string-match "^--dired\\s-+" switches) + (when (stringp switches) + (setq switches (split-string switches))) + (when (and (member "--dired" switches) (not (tramp-get-ls-command-with-dired v))) - (setq switches (replace-match "" nil t switches))) - (tramp-message - v 4 "Inserting directory `ls %s %s', wildcard %s, fulldir %s" - switches filename (if wildcard "yes" "no") - (if full-directory-p "yes" "no")) + (setq switches (delete "--dired" switches))) (when wildcard (setq wildcard (tramp-run-real-handler 'file-name-nondirectory (list localname))) (setq localname (tramp-run-real-handler 'file-name-directory (list localname)))) - (when (listp switches) - (setq switches (mapconcat 'identity switches " "))) (unless full-directory-p - (setq switches (concat "-d " switches))) + (setq switches (add-to-list 'switches "-d" 'append))) + (setq switches (mapconcat 'tramp-shell-quote-argument switches " ")) (when wildcard - (setq switches (concat switches " " wildcard))) - (when (string-match "'" switches) - (setq switches (replace-match "\\\\'" nil nil switches))) + (setq switches (concat switches " " wildcard))) + (tramp-message + v 4 "Inserting directory `ls %s %s', wildcard %s, fulldir %s" + switches filename (if wildcard "yes" "no") + (if full-directory-p "yes" "no")) ;; If `full-directory-p', we just say `ls -l FILENAME'. ;; Else we chdir to the parent directory, then say `ls -ld BASENAME'. (if full-directory-p @@ -4144,6 +4143,17 @@ This is like `dired-recursive-delete-directory' for Tramp files." (while (looking-at "//") (forward-line 1) (delete-region (match-beginning 0) (point))) + + ;; The inserted file could be from somewhere else. + (when (and (not wildcard) (not full-directory-p)) + (goto-char (point-max)) + (search-backward + (if (zerop (length (file-name-nondirectory filename))) + "." + (file-name-nondirectory filename)) + beg 'noerror) + (replace-match (file-relative-name filename) t)) + (goto-char (point-max)))))) (defun tramp-handle-unhandled-file-name-directory (filename) @@ -5481,6 +5491,7 @@ Falls back to normal file name handler if no Tramp file name handler exists." ;; Add the handlers. (add-to-list 'file-name-handler-alist (cons tramp-file-name-regexp 'tramp-file-name-handler)) + (put 'tramp-file-name-handler 'safe-magic t) (add-to-list 'file-name-handler-alist (cons tramp-completion-file-name-regexp 'tramp-completion-file-name-handler)) |