GNU bug report logs -
#27982
25.1.50; expand-file-name docstring on how to traverse the filesystem
Previous Next
Reported by: Nicolas Richard <youngfrog <at> members.fsf.org>
Date: Sun, 6 Aug 2017 11:39:01 UTC
Severity: minor
Found in version 25.1.50
Done: Nicolas Richard <youngfrog <at> members.fsf.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
#27982: 25.1.50; expand-file-name docstring on how to traverse the filesystem
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 27982 <at> debbugs.gnu.org.
--
27982: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=27982
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
Hi Eli,
Thanks for your help but let me close this.
I initially thought it was "obviously wrong", but it is not. I think the
wording is slightly misleading (e.g. "dirname" vs "dir-as-file-name"),
but nothing important.
Nicolas.
Eli Zaretskii <eliz <at> gnu.org> writes:
>> From: Nicolas Richard <youngfrog <at> members.fsf.org>
>> Cc: 27982 <at> debbugs.gnu.org
>> Date: Wed, 23 Aug 2017 21:18:53 +0200
>>
>> Ok so now I'm saying that, with the suggestion in the docstring, output
>> will be different if "dirname" ends in a slash.
>
> Of course. directory-file-name and file-name-directory look at the
> slashes, so having one more slash at the end changes everything.
> There's nothing new here.
>
> So where do we go from here, in the context of this bug report? What
> would you propose to change, where, and why?
>
> Thanks.
--
[Message part 3 (message/rfc822, inline)]
[Message part 4 (text/plain, inline)]
The docstring of expand-file-name suggest
(directory-file-name (file-name-directory dirname))
to traverse a directory
This looks wrong to me, e.g.
(list current-directory
(directory-file-name (file-name-directory current-directory)))
=> ("/home/youngfrog/" "/home/youngfrog")
I think it should be (file-name-directory (directory-file-name dirname))
instead. Then the example becomes:
(list current-directory
(file-name-directory (directory-file-name current-directory)))
=> ("/home/youngfrog/" "/home/")
Am I overlooking something ?
Is this patch ok to commit ?
In GNU Emacs 25.1.50.1 (x86_64-pc-linux-gnu)
of 2016-11-15 built on phie-fixe
Repository revision: f994c2046588b168c1a4a900879cdffaf9d02f01
Windowing system distributor 'The X.Org Foundation', version 11.0.11804000
System Description: Ubuntu 16.04.2 LTS
[0001-src-fileio.c-Fexpand_file_name-fix-suggestion-to-tra.patch (text/x-diff, inline)]
From 607e1445cfb1294c14af38cb4c39a93683e5671d Mon Sep 17 00:00:00 2001
From: Nicolas Richard <youngfrog <at> members.fsf.org>
Date: Sun, 6 Aug 2017 13:14:41 +0200
Subject: [PATCH] * src/fileio.c (Fexpand_file_name): fix suggestion to
traverse the filesystem
---
src/fileio.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/fileio.c b/src/fileio.c
index c3b2be7..28d619c 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -776,7 +776,7 @@ See also the function `substitute-in-file-name'.
For technical reasons, this function can return correct but
non-intuitive results for the root directory; for instance,
\(expand-file-name ".." "/") returns "/..". For this reason, use
-\(directory-file-name (file-name-directory dirname)) to traverse a
+\(file-name-directory (directory-file-name dirname)) to traverse a
filesystem tree, not (expand-file-name ".." dirname). */)
(Lisp_Object name, Lisp_Object default_directory)
{
--
2.7.4
This bug report was last modified 7 years and 267 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.