Stefan Monnier <[EMAIL PROTECTED]> writes: > Finally, I don't think I have write-access to any ftp server any more. > Can I use sftp instead? How would I go about telling ange-ftp to use sftp?
I've tried shortly the following settings, it didn't work. But you get an inspiration what to do ... (setq ange-ftp-ftp-program-name "sftp" ange-ftp-ftp-program-args '("v") tramp-default-method "ftp") > One more thing: if someone could reproduce (part of) the problem without > dired, that would help (or if someone could edebug dired to see where the > problem comes from). Hm. The problem is related to dired: copying the file via ange-ftp works, the error happens when dired refreshes the buffer. If you manage to setup ange-ftp you can try the following scenario: - Load both the local and remote dired buffers C-x C-f /localhost:/tmp/ C-x C-f ~/ - Set the cursor on any file on the local dired buffer - Copy the file to the remote host C /localhost:/tmp/ > Oh, wait: could you get a backtrace (by setting setq debug-on-error or if > that doesn't work, by setting debug-on-signal) ? There's no backtrace setting debug-*. I've put a backtrace call into ange-ftp-error, here it is: # backtrace() (let ((standard-output standard-output)) (backtrace)) (let ((standard-output ...)) (let (...) (backtrace)) (with-current-buffer standard-output (prog1 ... ...))) (with-output-to-string (backtrace)) (tramp-message 1 "%s" (with-output-to-string (backtrace))) ange-ftp-error("localhost" "albinus" #("DIR failed: 550 /tmp/.emacs: No such file or directory." 0 12 nil 12 55 (inhibit-line-move-field-capture t field output rear-nonsticky t))) (if no-error nil (ange-ftp-error host user (concat "DIR failed: " ...))) (if (car (setq result ...)) (save-excursion (set-buffer ...) (erase-buffer) (if ... ... ... ...) (while ... ...) (goto-char 1) (run-hooks ...) (if parse ...) (run-hooks ...) (setq ange-ftp-ls-cache-file key ange-ftp-ls-cache-lsargs lsargs ange-ftp-ls-cache-res ...) (if ... nil ange-ftp-ls-cache-res)) (if no-error nil (ange-ftp-error host user ...))) (unwind-protect (if (car ...) (save-excursion ... ... ... ... ... ... ... ... ... ...) (if no-error nil ...)) (ange-ftp-del-tmp-name temp)) (if (and ange-ftp-ls-cache-file (string-equal key ange-ftp-ls-cache-file) (or dumb ...)) ange-ftp-ls-cache-res (setq temp (ange-ftp-make-tmp-name host)) (if wildcard (progn ... ...) (setq lscmd ...)) (unwind-protect (if ... ... ...) (ange-ftp-del-tmp-name temp))) (let* ((host ...) (user ...) (name ...) (key ...) (host-type ...) (dumb ...) result temp lscmd parse-func) (if (string-equal name "") (setq name ...)) (if (and ange-ftp-ls-cache-file ... ...) ange-ftp-ls-cache-res (setq temp ...) (if wildcard ... ...) (unwind-protect ... ...))) (if parsed (let* (... ... ... ... ... ... result temp lscmd parse-func) (if ... ...) (if ... ange-ftp-ls-cache-res ... ... ...)) (error "Should never happen. Please report. Bug ref. no.: 1")) (let* ((ange-ftp-this-file ...) (parsed ...)) (if parsed (let* ... ... ...) (error "Should never happen. Please report. Bug ref. no.: 1"))) ange-ftp-ls(".emacs" "--dired -ald" nil) (if wildcard (let (...) (ange-ftp-ls ... switches nil nil t)) (ange-ftp-ls file switches full)) (insert (if wildcard (let ... ...) (ange-ftp-ls file switches full))) (if (and (not wildcard) (setq tem ...)) (ange-ftp-insert-directory (ange-ftp-expand-symlink tem ...) switches wildcard full) (insert (if wildcard ... ...))) (if parsed (if (and ... ...) (ange-ftp-insert-directory ... switches wildcard full) (insert ...)) (ange-ftp-real-insert-directory file switches wildcard full)) (let ((short ...) (parsed ...) tem) (if parsed (if ... ... ...) (ange-ftp-real-insert-directory file switches wildcard full))) ange-ftp-insert-directory(".emacs" "--dired -ald" nil nil) apply(ange-ftp-insert-directory (".emacs" "--dired -ald" nil nil)) (progn (apply fn args)) (unwind-protect (progn (apply fn args)) (set-match-data save-match-data-internal)) (let ((save-match-data-internal ...)) (unwind-protect (progn ...) (set-match-data save-match-data-internal))) (save-match-data (apply fn args)) (if fn (save-match-data (apply fn args)) (ange-ftp-run-real-handler operation args)) (let ((fn ...)) (if fn (save-match-data ...) (ange-ftp-run-real-handler operation args))) ange-ftp-hook-function(insert-directory ".emacs" "--dired -ald" nil nil) apply(ange-ftp-hook-function insert-directory (".emacs" "--dired -ald" nil nil)) (let* ((inhibit-file-name-handlers ...) (inhibit-file-name-operation operation)) (apply (quote ange-ftp-hook-function) operation args)) (cond ((memq operation ...) (apply ... operation args)) (t (let* ... ...))) (let ((ange-ftp-name-format ...) (ange-ftp-ftp-name-arg "") (ange-ftp-ftp-name-res nil)) (cond (... ...) (t ...))) (progn (or (boundp ...) (require ...)) (let (... ... ...) (cond ... ...))) (unwind-protect (progn (or ... ...) (let ... ...)) (set-match-data save-match-data-internal)) (let ((save-match-data-internal ...)) (unwind-protect (progn ... ...) (set-match-data save-match-data-internal))) (save-match-data (or (boundp ...) (require ...)) (let (... ... ...) (cond ... ...))) tramp-ftp-file-name-handler(insert-directory ".emacs" "--dired -ald" nil nil) apply(tramp-ftp-file-name-handler insert-directory (".emacs" "--dired -ald" nil nil)) (cond (foreign (apply foreign operation args)) (t (tramp-run-real-handler operation args))) (let* ((filename ...) (foreign ...)) (cond (foreign ...) (t ...))) (progn (let* (... ...) (cond ... ...))) (unwind-protect (progn (let* ... ...)) (set-match-data save-match-data-internal)) (let ((save-match-data-internal ...)) (unwind-protect (progn ...) (set-match-data save-match-data-internal))) (save-match-data (let* (... ...) (cond ... ...))) tramp-file-name-handler(insert-directory ".emacs" "--dired -ald" nil nil) insert-directory(".emacs" "--dired -ald" nil nil) (while --dolist-temp--46606 (setq f (car --dolist-temp--46606)) (insert-directory f switches nil nil) (setq --dolist-temp--46606 (cdr --dolist-temp--46606))) (let ((--dolist-temp--46606 file-list) f) (while --dolist-temp--46606 (setq f ...) (insert-directory f switches nil nil) (setq --dolist-temp--46606 ...)) nil) (catch (quote --cl-block-nil--) (let (... f) (while --dolist-temp--46606 ... ... ...) nil)) (cl-block-wrapper (catch (quote --cl-block-nil--) (let ... ... nil))) (block nil (let (... f) (while --dolist-temp--46606 ... ... ...) nil)) (dolist (f file-list) (insert-directory f switches nil nil)) (if file-list (dolist (f file-list) (insert-directory f switches nil nil)) (insert-directory dir switches wildcard (not wildcard))) (let ((opoint ...) (process-environment ...) end) (if (or dired-use-ls-dired ...) (setq switches ...)) (if file-list (dolist ... ...) (insert-directory dir switches wildcard ...)) (if (not ...) (save-excursion ... ... ... ... ... ...)) (dired-insert-set-properties opoint (point)) (unless (save-excursion ... ...) (let ... ...)) (save-excursion (goto-char opoint) (if ... ...) (when wildcard ...))) dired-insert-directory("/localhost:/tmp/" "-ald" (".emacs")) (let ((default-directory directory)) (dired-insert-directory directory (concat dired-actual-switches "d") (list filename))) (let (buffer-read-only opoint) (beginning-of-line) (setq opoint (point)) (let (...) (dired-insert-directory directory ... ...)) (goto-char opoint) (when marker-char (let ... ...)) (goto-char opoint) (let (...) (if ... ... ...)) (forward-line -1) (if dired-after-readin-hook (save-excursion ...)) (dired-move-to-filename)) (catch (quote not-found) (if (string= directory cur-dir) (progn ... ... ...) (if ... ... ...)) (let (buffer-read-only opoint) (beginning-of-line) (setq opoint ...) (let ... ...) (goto-char opoint) (when marker-char ...) (goto-char opoint) (let ... ...) (forward-line -1) (if dired-after-readin-hook ...) (dired-move-to-filename)) nil) (setq filename (if relative (file-relative-name filename directory) (file-name-nondirectory filename)) reason (catch (quote not-found) (if ... ... ...) (let ... ... ... ... ... ... ... ... ... ... ...) nil)) (let* ((opoint ...) (cur-dir ...) (orig-file-name filename) (directory ...) reason) (setq filename (if relative ... ...) reason (catch ... ... ... nil)) (if reason (goto-char opoint)) (not reason)) dired-add-entry("/localhost:/tmp/.emacs" 67) apply(dired-add-entry ("/localhost:/tmp/.emacs" 67)) (if (apply fun args) (setq success-list (cons ... success-list))) (save-current-buffer (set-buffer buf) (if (apply fun args) (setq success-list ...))) (with-current-buffer buf (if (apply fun args) (setq success-list ...))) (while --dolist-temp--46605 (setq buf (car --dolist-temp--46605)) (with-current-buffer buf (if ... ...)) (setq --dolist-temp--46605 (cdr --dolist-temp--46605))) (let ((--dolist-temp--46605 ...) buf) (while --dolist-temp--46605 (setq buf ...) (with-current-buffer buf ...) (setq --dolist-temp--46605 ...)) nil) (catch (quote --cl-block-nil--) (let (... buf) (while --dolist-temp--46605 ... ... ...) nil)) (cl-block-wrapper (catch (quote --cl-block-nil--) (let ... ... nil))) (block nil (let (... buf) (while --dolist-temp--46605 ... ... ...) nil)) (dolist (buf (dired-buffers-for-dir ... file)) (with-current-buffer buf (if ... ...))) (let (success-list) (dolist (buf ...) (with-current-buffer buf ...)) success-list) dired-fun-in-all-buffers("/localhost:/tmp/" ".emacs" dired-add-entry "/localhost:/tmp/.emacs" 67) dired-add-file("/localhost:/tmp/.emacs" 67) (progn (funcall file-creator from to dired-overwrite-confirmed) (if overwrite (dired-remove-file to)) (setq success-count (1+ success-count)) (message "%s: %d of %d" operation success-count total) (dired-add-file to actual-marker-char)) (condition-case err (progn (funcall file-creator from to dired-overwrite-confirmed) (if overwrite ...) (setq success-count ...) (message "%s: %d of %d" operation success-count total) (dired-add-file to actual-marker-char)) (file-error (progn ... ...))) (let* ((overwrite ...) (dired-overwrite-confirmed ...) (actual-marker-char ...)) (condition-case err (progn ... ... ... ... ...) (file-error ...))) (if (not to) (setq skipped (cons ... skipped)) (let* (... ... ...) (condition-case err ... ...))) (lambda (from) (setq to (funcall name-constructor from)) (if (equal to from) (progn ... ...)) (if (not to) (setq skipped ...) (let* ... ...)))("/home/albinus/.emacs") mapcar((lambda (from) (setq to (funcall name-constructor from)) (if (equal to from) (progn ... ...)) (if (not to) (setq skipped ...) (let* ... ...))) ("/home/albinus/.emacs")) (let (to overwrite-query overwrite-backup-query) (mapcar (function ...) fn-list)) (let (failures skipped (success-count 0) (total ...)) (let (to overwrite-query overwrite-backup-query) (mapcar ... fn-list)) (cond (failures ...) (skipped ...) (t ...))) dired-create-files(dired-copy-file "Copy [-p]" ("/home/albinus/.emacs") (lambda (from) (expand-file-name (file-name-nondirectory from) target)) 67) (if (and (consp into-dir) (functionp ...)) (apply (car into-dir) operation rfn-list fn-list target (cdr into-dir)) (if (not ...) (error "Marked %s: target must be a directory: %s" operation target)) (or into-dir (setq target ...)) (dired-create-files file-creator operation fn-list (if into-dir ... ...) marker-char)) (let* ((fn-list ...) (rfn-list ...) (dired-one-file ...) (target-dir ...) (default ...) (target ...) (into-dir ...)) (if (and ... ...) (apply ... operation rfn-list fn-list target ...) (if ... ...) (or into-dir ...) (dired-create-files file-creator operation fn-list ... marker-char))) dired-do-create-files(copy dired-copy-file "Copy [-p]" nil 67 nil nil) (let ((dired-recursive-copies dired-recursive-copies)) (dired-do-create-files (quote copy) (function dired-copy-file) (if dired-copy-preserve-time "Copy [-p]" "Copy") arg dired-keep-marker-copy nil dired-copy-how-to-fn)) dired-do-copy(nil) call-interactively(dired-do-copy) > Stefan Best regards, Michael. _______________________________________________ Tramp-devel mailing list [EMAIL PROTECTED] http://mail.nongnu.org/mailman/listinfo/tramp-devel