emacs-pretest-bug
[Top][All Lists]
Advanced

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

`file-relative-name' for compressed files


From: Emilio Lopes
Subject: `file-relative-name' for compressed files
Date: Fri, 11 Jun 2004 00:15:32 +0200
User-agent: Emacs Gnus

1- Start a fresh version of Emacs (with "emacs --no-init-file --no-site-file")

2- Turn auto-compression-mode on: M-x auto-compression-mode

3- Now evaluating the following code

      (file-relative-name "/a/b/c/foo.gz"
                          "/a/b/c/")

   returns

      "/a/b/c/foo.gz"

   instead of the expected "foo.gz".

The problem lies on the fact that the expression

   (find-file-name-handler filename 'file-remote-p)

or in this specific case

   (find-file-name-handler "/a/b/c/foo.gz" 'file-remote-p)

in file-relative-name (files.el) returns `jka-compr-handler'. Later
in this function the file's "remote handler" is compared to the
directory's one. Since they are different (directories are normally
not compressed), the file and directory are considered to lye on
different machines, and thus the full filename is returned.

The following patch should fix this.

2004-06-10  Emilio C. Lopes  <address@hidden>

        * files.el (file-relative-name): Ignore `jka-compr-handler' when
        determining the handler of FILENAME.


*** lisp/files.el.~1.701.~      Sun Jun  6 15:32:03 2004
--- lisp/files.el       Fri Jun 11 00:04:11 2004
***************
*** 2912,2918 ****
          (file-name-as-directory (expand-file-name (or directory
                                                        default-directory))))
      (setq filename (expand-file-name filename))
!     (let ((hf (find-file-name-handler filename 'file-remote-p))
            (hd (find-file-name-handler directory 'file-remote-p)))
        (if ;; Conditions for separate trees
          (or
--- 2912,2920 ----
          (file-name-as-directory (expand-file-name (or directory
                                                        default-directory))))
      (setq filename (expand-file-name filename))
!     (let ((hf (let ((inhibit-file-name-handlers '(jka-compr-handler))
!                     (inhibit-file-name-operation 'file-remote-p))
!                 (find-file-name-handler filename 'file-remote-p)))
            (hd (find-file-name-handler directory 'file-remote-p)))
        (if ;; Conditions for separate trees
          (or




reply via email to

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