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

Reply via email to