From: Eli Zaretskii <eliz@gnu.org>
To: rcopley@gmail.com
Cc: 57353@debbugs.gnu.org
Subject: bug#57353: [PATCH] Fix parse-colon-path with UNC directory names
Date: Wed, 24 Aug 2022 17:15:53 +0300 [thread overview]
Message-ID: <83fshl682u.fsf@gnu.org> (raw)
In-Reply-To: <83bksb859u.fsf@gnu.org> (message from Eli Zaretskii on Tue, 23 Aug 2022 16:21:17 +0300)
> Cc: 57353@debbugs.gnu.org
> Date: Tue, 23 Aug 2022 16:21:17 +0300
> From: Eli Zaretskii <eliz@gnu.org>
>
> > From: Richard Copley <rcopley@gmail.com>
> > Date: Tue, 23 Aug 2022 12:34:02 +0100
> >
> > A comment in `parse-colon-path' says:
> >
> > ;; Previous implementation used `substitute-in-file-name'
> > ;; which collapse multiple "/" in front. Do the same for
> > ;; backward compatibility.
> >
> > However, `substitute-in-file-name' does not do that:
> >
> > (substitute-in-file-name "//foo/a/b") // -> "//foo/a/b"
>
> That is true, but:
>
> (substitute-in-file-name "///foo/a/b") => "//foo/a/b"
>
> So it does collapse multiple "/", at least sometimes. Moreover, the
> above is on MS-Windows, but on GNU/Linux:
>
> (substitute-in-file-name "///foo/a/b") => "/foo/a/b"
>
> So (a) this is system-dependent, and (b) substitute-in-file-name does
> collapse multiple slashes, but preserves UNCs on MS-Windows.
>
> Therefore, your patch needs some (minor) amendments.
Does the patch below give good results in your use cases?
diff --git a/lisp/files.el b/lisp/files.el
index 8596d9a..26730df 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -856,10 +856,16 @@ parse-colon-path
(if (equal "" f) nil
(let ((dir (file-name-as-directory f)))
;; Previous implementation used `substitute-in-file-name'
- ;; which collapse multiple "/" in front. Do the same for
- ;; backward compatibility.
- (if (string-match "\\`/+" dir)
- (substring dir (1- (match-end 0))) dir))))
+ ;; which collapses multiple "/" in front, while
+ ;; preserving double slash where it matters. Do
+ ;; the same for backward compatibility.
+ (if (string-match "\\`//+" dir)
+ (substring dir
+ (- (match-end 0)
+ (if (memq system-type
+ '(windows-nt 'cygwin 'ms-dos))
+ 2 1)))
+ dir))))
(split-string spath path-separator)))))
(defun cd-absolute (dir)
next prev parent reply other threads:[~2022-08-24 14:15 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-08-23 11:34 bug#57353: [PATCH] Fix parse-colon-path with UNC directory names Richard Copley
2022-08-23 13:21 ` Eli Zaretskii
2022-08-24 14:15 ` Richard Copley
2022-08-24 14:15 ` Eli Zaretskii [this message]
2022-08-24 14:23 ` Richard Copley
2022-08-24 16:21 ` Eli Zaretskii
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=83fshl682u.fsf@gnu.org \
--to=eliz@gnu.org \
--cc=57353@debbugs.gnu.org \
--cc=rcopley@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.