GNU bug report logs -
#57353
[PATCH] Fix parse-colon-path with UNC directory names
Previous Next
Reported by: Richard Copley <rcopley <at> gmail.com>
Date: Tue, 23 Aug 2022 11:35:01 UTC
Severity: normal
Tags: patch
Done: Eli Zaretskii <eliz <at> gnu.org>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
[Message part 1 (text/plain, inline)]
Your bug report
#57353: [PATCH] Fix parse-colon-path with UNC directory names
which was filed against the emacs package, has been closed.
The explanation is attached below, along with your original report.
If you require more details, please reply to 57353 <at> debbugs.gnu.org.
--
57353: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=57353
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
> From: Richard Copley <rcopley <at> gmail.com>
> Date: Wed, 24 Aug 2022 15:23:56 +0100
> Cc: 57353 <at> debbugs.gnu.org
>
> On Wed, 24 Aug 2022 at 15:15, Eli Zaretskii <eliz <at> gnu.org> wrote:
> >
> > 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)
>
> It does.
Thanks, installed with minor changes, and closing the bug.
[Message part 3 (message/rfc822, inline)]
[Message part 4 (text/plain, inline)]
The function `parse-colon-path' changes the leading double slash
in a UNC path component to a single slash:
(let path (mapconcat path-separator "one" "//server/share/dir")
(parse-colon-path path))
## -> ("one" "/server/share/dir")
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"
There's no reason to do it in `parse-colon-path' either.
[0001-Fix-parse-colon-path-with-UNC-directory-names.patch (text/plain, attachment)]
This bug report was last modified 2 years and 271 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.