emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] emacs/lisp/net tramp.el


From: Michael Albinus
Subject: [Emacs-diffs] emacs/lisp/net tramp.el
Date: Wed, 02 Sep 2009 11:13:44 +0000

CVSROOT:        /sources/emacs
Module name:    emacs
Changes by:     Michael Albinus <albinus>       09/09/02 11:13:43

Modified files:
        lisp/net       : tramp.el 

Log message:
        * net/tramp.el (tramp-handle-file-attributes-with-ls)
        (tramp-do-file-attributes-with-perl)
        (tramp-do-file-attributes-with-stat): Rename from
        `tramp-handle-file-attributes-with-*'.
        (tramp-handle-file-attributes): Use them.
        (tramp-do-directory-files-and-attributes-with-perl)
        (tramp-do-directory-files-and-attributes-with-stat): Rename from
        `tramp-handle-directory-files-and-attributes-with-*'.
        (tramp-handle-directory-files-and-attributes): Use them.
        (tramp-method-out-of-band-p): Additional parameter SIZE.
        (tramp-do-copy-or-rename-file, tramp-handle-file-local-copy)
        (tramp-handle-write-region): Use it.
        (tramp-handle-insert-directory): Use "?\ " for compatibility
        reasons.
        (tramp-handle-vc-registered): Check, whether the first run did
        return files to be tested.
        (tramp-advice-make-auto-save-file-name): Do not call directly
        `tramp-handle-make-auto-save-file-name', because this would bypass
        the locking mechanism.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/net/tramp.el?cvsroot=emacs&r1=1.252&r2=1.253

Patches:
Index: tramp.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/net/tramp.el,v
retrieving revision 1.252
retrieving revision 1.253
diff -u -b -r1.252 -r1.253
--- tramp.el    28 Aug 2009 12:11:42 -0000      1.252
+++ tramp.el    2 Sep 2009 11:13:42 -0000       1.253
@@ -2504,21 +2504,18 @@
   (let ((last-coding-system-used last-coding-system-used))
     (with-parsed-tramp-file-name (expand-file-name filename) nil
       (with-file-property v localname (format "file-attributes-%s" id-format)
-       (when (file-exists-p filename)
-         ;; file exists, find out stuff
          (save-excursion
            (tramp-convert-file-attributes
             v
-            (if (tramp-get-remote-stat v)
-                (tramp-handle-file-attributes-with-stat
-                 v localname id-format)
-              (if (tramp-get-remote-perl v)
-                  (tramp-handle-file-attributes-with-perl
-                   v localname id-format)
-                (tramp-handle-file-attributes-with-ls
-                  v localname id-format))))))))))
+          (cond
+           ((tramp-get-remote-stat v)
+            (tramp-do-file-attributes-with-stat v localname id-format))
+           ((tramp-get-remote-perl v)
+            (tramp-do-file-attributes-with-perl v localname id-format))
+           (t
+            (tramp-do-file-attributes-with-ls v localname id-format)))))))))
 
-(defun tramp-handle-file-attributes-with-ls (vec localname &optional id-format)
+(defun tramp-do-file-attributes-with-ls (vec localname &optional id-format)
   "Implement `file-attributes' for Tramp files using the ls(1) command."
   (let (symlinkp dirp
                 res-inode res-filemodes res-numlinks
@@ -2603,7 +2600,7 @@
        -1
        ))))
 
-(defun tramp-handle-file-attributes-with-perl
+(defun tramp-do-file-attributes-with-perl
   (vec localname &optional id-format)
   "Implement `file-attributes' for Tramp files using a Perl script."
   (tramp-message vec 5 "file attributes with perl: %s" localname)
@@ -2614,7 +2611,7 @@
    (format "tramp_perl_file_attributes %s %s"
           (tramp-shell-quote-argument localname) id-format)))
 
-(defun tramp-handle-file-attributes-with-stat
+(defun tramp-do-file-attributes-with-stat
   (vec localname &optional id-format)
   "Implement `file-attributes' for Tramp files using stat(1) command."
   (tramp-message vec 5 "file attributes with stat: %s" localname)
@@ -2643,7 +2640,7 @@
          (when (boundp 'last-coding-system-used)
            (setq coding-system-used (symbol-value 'last-coding-system-used)))
          ;; We use '(0 0) as a don't-know value.  See also
-         ;; `tramp-handle-file-attributes-with-ls'.
+         ;; `tramp-do-file-attributes-with-ls'.
          (if (not (equal modtime '(0 0)))
              (tramp-run-real-handler 'set-visited-file-modtime (list modtime))
            (progn
@@ -2968,11 +2965,12 @@
                    (lambda (x)
                      (cons (car x)
                            (tramp-convert-file-attributes v (cdr x))))
-                   (if (tramp-get-remote-stat v)
-                       (tramp-handle-directory-files-and-attributes-with-stat
-                        v localname id-format)
-                     (if (tramp-get-remote-perl v)
-                         (tramp-handle-directory-files-and-attributes-with-perl
+                   (cond
+                    ((tramp-get-remote-stat v)
+                     (tramp-do-directory-files-and-attributes-with-stat
+                      v localname id-format))
+                    ((tramp-get-remote-perl v)
+                     (tramp-do-directory-files-and-attributes-with-perl
                           v localname id-format)))))))))
           result item)
 
@@ -2987,7 +2985,7 @@
          result
        (sort result (lambda (x y) (string< (car x) (car y))))))))
 
-(defun tramp-handle-directory-files-and-attributes-with-perl
+(defun tramp-do-directory-files-and-attributes-with-perl
   (vec localname &optional id-format)
   "Implement `directory-files-and-attributes' for Tramp files using a Perl 
script."
   (tramp-message vec 5 "directory-files-and-attributes with perl: %s" 
localname)
@@ -3002,7 +3000,7 @@
     (when (stringp object) (tramp-error vec 'file-error object))
     object))
 
-(defun tramp-handle-directory-files-and-attributes-with-stat
+(defun tramp-do-directory-files-and-attributes-with-stat
   (vec localname &optional id-format)
   "Implement `directory-files-and-attributes' for Tramp files using stat(1) 
command."
   (tramp-message vec 5 "directory-files-and-attributes with stat: %s" 
localname)
@@ -3201,9 +3199,8 @@
                 ok-if-already-exists keep-date preserve-uid-gid))
 
               ;; Try out-of-band operation.
-              ((and (tramp-method-out-of-band-p v1)
-                    (> (nth 7 (file-attributes filename))
-                       tramp-copy-size-limit))
+              ((tramp-method-out-of-band-p
+                v1 (nth 7 (file-attributes filename)))
                (tramp-do-copy-or-rename-file-out-of-band
                 op filename newname keep-date))
 
@@ -3232,9 +3229,7 @@
 
             ;; If the Tramp file has an out-of-band method, the corresponding
             ;; copy-program can be invoked.
-            ((and (tramp-method-out-of-band-p v)
-                  (> (nth 7 (file-attributes filename))
-                     tramp-copy-size-limit))
+            ((tramp-method-out-of-band-p v (nth 7 (file-attributes filename)))
              (tramp-do-copy-or-rename-file-out-of-band
               op filename newname keep-date))
 
@@ -3778,7 +3773,7 @@
            (while (< (point) end)
              (let ((start (+ beg (read (current-buffer))))
                    (end (+ beg (read (current-buffer)))))
-               (if (memq (char-after end) '(?\n ?\s))
+               (if (memq (char-after end) '(?\n ?\ ))
                    ;; End is followed by \n or by " -> ".
                    (put-text-property start end 'dired-filename t)))))
          ;; Reove training lines.
@@ -4219,9 +4214,8 @@
          (cond
           ;; `copy-file' handles direct copy and out-of-band methods.
           ((or (tramp-local-host-p v)
-               (and (tramp-method-out-of-band-p v)
-                    (> (nth 7 (file-attributes filename))
-                       tramp-copy-size-limit)))
+               (tramp-method-out-of-band-p
+                v (nth 7 (file-attributes filename))))
            (copy-file filename tmpfile t t))
 
           ;; Use inline encoding for file transfer.
@@ -4619,9 +4613,8 @@
          (cond
           ;; `rename-file' handles direct copy and out-of-band methods.
           ((or (tramp-local-host-p v)
-               (and (tramp-method-out-of-band-p v)
-                    (> (- (or end (point-max)) (or start (point-min)))
-                       tramp-copy-size-limit)))
+               (tramp-method-out-of-band-p
+                v (- (or end (point-max)) (or start (point-min)))))
            (condition-case err
                (rename-file tmpfile filename t)
              ((error quit)
@@ -4761,9 +4754,10 @@
 ;; any other remote command.
 (defun tramp-handle-vc-registered (file)
   "Like `vc-registered' for Tramp files."
+  (with-parsed-tramp-file-name file nil
+
   ;; There could be new files, created by the vc backend.  We cannot
   ;; reuse the old cache entries, therefore.
-  (with-parsed-tramp-file-name file nil
     (let (tramp-vc-registered-file-names
          (tramp-cache-inhibit-cache (current-time))
          (file-name-handler-alist
@@ -4774,6 +4768,7 @@
       (tramp-message v 10 "\n%s" tramp-vc-registered-file-names)
 
       ;; Send just one command, in order to fill the cache.
+      (when tramp-vc-registered-file-names
       (tramp-maybe-send-script
        v
        (format tramp-vc-registered-read-file-names
@@ -4791,11 +4786,12 @@
                        tramp-vc-registered-file-names
                        " "))))
 
-       (tramp-set-file-property v (car elt) (cadr elt)   (cadr (cdr elt)))))
+         (tramp-set-file-property v (car elt) (cadr elt) (cadr (cdr elt))))))
 
-    ;; Second run. Now all requests shall be answered from the file
-    ;; cache.  We unset `process-file-side-effects' in order to keep
-    ;; the cache when `process-file' calls appear.
+    ;; Second run.  Now all `file-exists-p' or `file-readable-p' calls
+    ;; shall be answered from the file cache.
+    ;; We unset `process-file-side-effects' in order to keep the cache
+    ;; when `process-file' calls appear.
     (let (process-file-side-effects)
       (tramp-run-real-handler 'vc-registered (list file)))))
 
@@ -7391,9 +7387,15 @@
         (format "address@hidden:%s" user host localname)
       (format "%s:%s" host localname))))
 
-(defun tramp-method-out-of-band-p (vec)
+(defun tramp-method-out-of-band-p (vec size)
   "Return t if this is an out-of-band method, nil otherwise."
-  (tramp-get-method-parameter (tramp-file-name-method vec) 
'tramp-copy-program))
+  (and
+   ;; It shall be an out-of-band method.
+   (tramp-get-method-parameter (tramp-file-name-method vec) 
'tramp-copy-program)
+   ;; Either the file size is large enough, or (in rare cases) there
+   ;; does not exist a remote encoding.
+   (or (> size tramp-copy-size-limit)
+       (null (tramp-get-remote-coding vec "remote-encoding")))))
 
 (defun tramp-local-host-p (vec)
   "Return t if this points to the local host, nil otherwise."
@@ -7522,7 +7524,7 @@
     (with-connection-property vec "ls-dired"
       (tramp-message vec 5 "Checking, whether `ls --dired' works")
       (zerop (tramp-send-command-and-check
-             vec (format "%s --diredd /" (tramp-get-ls-command vec)))))))
+             vec (format "%s --dired /" (tramp-get-ls-command vec)))))))
 
 (defun tramp-get-test-command (vec)
   (with-connection-property vec "test"
@@ -7692,7 +7694,10 @@
     (around tramp-advice-make-auto-save-file-name () activate)
     "Invoke `tramp-handle-make-auto-save-file-name' for Tramp files."
     (if (and (buffer-file-name) (tramp-tramp-file-p (buffer-file-name)))
-       (setq ad-return-value (tramp-handle-make-auto-save-file-name))
+       ;; We cannot call `tramp-handle-make-auto-save-file-name'
+       ;; directly, because this would bypass the locking mechanism.
+       (setq ad-return-value
+             (tramp-file-name-handler 'make-auto-save-file-name))
       ad-do-it))
   (add-hook 'tramp-unload-hook
            (lambda () (ad-unadvise 'make-auto-save-file-name))))
@@ -8041,14 +8046,8 @@
 ;;   SSH instance, would correctly be propagated to the remote process
 ;;   automatically; possibly SSH would have to be started with
 ;;   "-t". (Markus Triska)
-;; * Set `tramp-copy-size-limit' to 0, when there is no remote
-;;   encoding routine.
 ;; * It makes me wonder if tramp couldn't fall back to ssh when scp
 ;;   isn't on the remote host. (Mark A. Hershberger)
-;; * To improve the behavior in case of things like "git status", it
-;;   might be worthwhile to add some way to indicate that a particular
-;;   use of process-file is (supposed to be) free of side-effects.
-;;   (Stefan Monnier)
 ;; * Use lsh instead of ssh. (Alfred M. Szmidt)
 ;; * Implement a general server-local-variable mechanism, as there are
 ;;   probably other variables that need different values for different
@@ -8060,11 +8059,6 @@
 ;;   rsync).
 ;; * Keep a second connection open for out-of-band methods like scp or
 ;;   rsync.
-;; * Partial completion completes word constituents.  I find it
-;;   acceptable if method completion works only after :, so that we
-;;   have "/s: TAB" offer completion for the method first, filenames
-;;   afterwards. (David Kastrup)
-
 
 ;; Functions for file-name-handler-alist:
 ;; diff-latest-backup-file -- in diff.el




reply via email to

[Prev in Thread] Current Thread [Next in Thread]