# HG changeset patch # User Michael Albinus # Date 1238953787 0 # Node ID 0bb3e7671842b358b2e212f7d6b3e7186a5e9147 # Parent ec97c15e7e13202f6632c58b4a456c5eff933be9 * net/ange-ftp.el (ange-ftp-set-file-modes): New defun. Change `ange-ftp' property of `set-file-modes' to `ange-ftp-set-file-modes'. (ange-ftp-call-chmod): Add error handling. diff -r ec97c15e7e13 -r 0bb3e7671842 lisp/net/ange-ftp.el --- a/lisp/net/ange-ftp.el Sun Apr 05 05:12:08 2009 +0000 +++ b/lisp/net/ange-ftp.el Sun Apr 05 17:49:47 2009 +0000 @@ -4350,6 +4350,7 @@ (put 'dired-compress-file 'ange-ftp 'ange-ftp-dired-compress-file) (put 'load 'ange-ftp 'ange-ftp-load) (put 'find-backup-file-name 'ange-ftp 'ange-ftp-find-backup-file-name) +(put 'set-file-modes 'ange-ftp 'ange-ftp-set-file-modes) ;; Turn off truename processing to save time. ;; Treat each name as its own truename. @@ -4358,7 +4359,6 @@ ;; We must return non-nil in order to mask our inability to do the job. ;; Otherwise there are errors when applied to the target file during ;; copying from a (localhost) Tramp file. -(put 'set-file-modes 'ange-ftp 'ignore) (put 'set-file-times 'ange-ftp 'ignore) ;; Turn off RCS/SCCS processing to save time. @@ -4577,12 +4577,14 @@ (format "doing chmod %s" abbr)))) (or (car result) - (call-process - remote-shell-program - nil t nil host dired-chmod-program mode name)))))) + (ange-ftp-error + host user (concat "CHMOD failed: " (cdr result)))))))) rest)) (setq ange-ftp-ls-cache-file nil) ;Stop confusing Dired. 0) + +(defun ange-ftp-set-file-modes (filename mode) + (ange-ftp-call-chmod (list (format "%o" mode) filename))) ;; This is turned off because it has nothing properly to do ;; with dired. It could be reasonable to adapt this to