Regression in pathname between version 2.6.14 to 2.7.1
Raymond Toy <[email protected]> Wed, 18 Feb 2026 19:05:28 -0800
| Newsgroups | gmane.lisp.gcl.devel |
|---|---|
| Message-ID | <[email protected]> |
This is a multi-part message in MIME format.
--------------7E14vMllQWq8grfcjks0rYQO
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
This came up on the Maxima list. Consider
|(let ((file (pathname "//tmp/.////test.txt"))) (with-open-file (stream
file :direction :output :if-exists :supersede) (values file (truename
file) (pathname stream)))) |
gcl 2.6.14 returns:
|#p"/tmp/test.txt" #p"/tmp/test.txt" #p"/tmp/test.txt" |
Losing the "/./" is unfortunate, but not really incorrect on Unix.
However, with gcl 2.7.1 we get:
|Error: Fast links are on: do (si::use-fast-links nil) for debugging
Signalled by PATHNAME. Condition in PATHNAME [or a callee]:
INTERNAL-SIMPLE-PARSE-ERROR: "//tmp/.////test.txt" is not a valid
pathname on host NIL Broken at PATHNAME. Type :H for Help. 1 Return to
top level. >> |
This version basically dislikes having consecutive slashes. On unix,
this is equivalent to just one "/".
If you change the namestring to "/tmp/./test.txt", gcl 2.7.1 works and
preserves the "/./".
It would be really nice to get this fixed before 2.7.2 is released.
​
--------------7E14vMllQWq8grfcjks0rYQO
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<!DOCTYPE html>
<html>
<head>
<meta http-equiv=3D"content-type" content=3D"text/html; charset=3DUTF=
-8">
<title></title>
<meta charset=3D"utf-8">
</head>
<body>
<div class=3D"markdown-here-wrapper">
<p style=3D"margin-bottom: 19.2px; margin-top: 0px;">This came up o=
n
the Maxima list. Consider</p>
<pre
style=3D"font-family: Consolas, Inconsolata, Courier, monospace; font-siz=
e: 16px; line-height: 19.2px; margin-bottom: 19.2px; margin-top: 19.2px;"=
><code
style=3D"background-color: rgba(175, 184, 193, 0.2); border-block: 1px so=
lid rgb(204, 204, 204); border-bottom: 1px solid rgb(204, 204, 204); bord=
er-bottom-left-radius: 3px; border-bottom-right-radius: 3px; border-end-e=
nd-radius: 3px; border-end-start-radius: 3px; border-inline: 1px solid rg=
b(204, 204, 204); border-left: 1px solid rgb(204, 204, 204); border-right=
: 1px solid rgb(204, 204, 204); border-start-end-radius: 3px; border-star=
t-start-radius: 3px; border-top: 1px solid rgb(204, 204, 204); border-top=
-left-radius: 3px; border-top-right-radius: 3px; display: block; font-fam=
ily: Consolas, Inconsolata, Courier, monospace; font-size: 16px; font-wei=
ght: 550; line-height: 19.2px; margin-left: 2.4px; margin-right: 2.4px; o=
verflow-block: auto; overflow-inline: auto; overflow: auto; padding-block=
: 8px; padding-bottom: 8px; padding-inline: 11.2px; padding-left: 11.2px;=
padding-right: 11.2px; padding-top: 8px;">
(let ((file (pathname "//tmp/.////test.txt")))
(with-open-file (stream file :direction :output :if-exists :supersede)
(values file (truename file)
(pathname stream))))
</code></pre>
<p style=3D"margin-bottom: 19.2px; margin-top: 0px;">gcl 2.6.14
returns:</p>
<pre
style=3D"font-family: Consolas, Inconsolata, Courier, monospace; font-siz=
e: 16px; line-height: 19.2px; margin-bottom: 19.2px; margin-top: 19.2px;"=
><code
style=3D"background-color: rgba(175, 184, 193, 0.2); border-block: 1px so=
lid rgb(204, 204, 204); border-bottom: 1px solid rgb(204, 204, 204); bord=
er-bottom-left-radius: 3px; border-bottom-right-radius: 3px; border-end-e=
nd-radius: 3px; border-end-start-radius: 3px; border-inline: 1px solid rg=
b(204, 204, 204); border-left: 1px solid rgb(204, 204, 204); border-right=
: 1px solid rgb(204, 204, 204); border-start-end-radius: 3px; border-star=
t-start-radius: 3px; border-top: 1px solid rgb(204, 204, 204); border-top=
-left-radius: 3px; border-top-right-radius: 3px; display: block; font-fam=
ily: Consolas, Inconsolata, Courier, monospace; font-size: 16px; font-wei=
ght: 550; line-height: 19.2px; margin-left: 2.4px; margin-right: 2.4px; o=
verflow-block: auto; overflow-inline: auto; overflow: auto; padding-block=
: 8px; padding-bottom: 8px; padding-inline: 11.2px; padding-left: 11.2px;=
padding-right: 11.2px; padding-top: 8px;">
#p"/tmp/test.txt"
#p"/tmp/test.txt"
#p"/tmp/test.txt"
</code></pre>
<p style=3D"margin-bottom: 19.2px; margin-top: 0px;">Losing the
"/./" is unfortunate, but not really incorrect on Unix.</p>
<p style=3D"margin-bottom: 19.2px; margin-top: 0px;">However, with
gcl 2.7.1 we get:</p>
<pre
style=3D"font-family: Consolas, Inconsolata, Courier, monospace; font-siz=
e: 16px; line-height: 19.2px; margin-bottom: 19.2px; margin-top: 19.2px;"=
><code
style=3D"background-color: rgba(175, 184, 193, 0.2); border-block: 1px so=
lid rgb(204, 204, 204); border-bottom: 1px solid rgb(204, 204, 204); bord=
er-bottom-left-radius: 3px; border-bottom-right-radius: 3px; border-end-e=
nd-radius: 3px; border-end-start-radius: 3px; border-inline: 1px solid rg=
b(204, 204, 204); border-left: 1px solid rgb(204, 204, 204); border-right=
: 1px solid rgb(204, 204, 204); border-start-end-radius: 3px; border-star=
t-start-radius: 3px; border-top: 1px solid rgb(204, 204, 204); border-top=
-left-radius: 3px; border-top-right-radius: 3px; display: block; font-fam=
ily: Consolas, Inconsolata, Courier, monospace; font-size: 16px; font-wei=
ght: 550; line-height: 19.2px; margin-left: 2.4px; margin-right: 2.4px; o=
verflow-block: auto; overflow-inline: auto; overflow: auto; padding-block=
: 8px; padding-bottom: 8px; padding-inline: 11.2px; padding-left: 11.2px;=
padding-right: 11.2px; padding-top: 8px;">
Error:
Fast links are on: do (si::use-fast-links nil) for debugging
Signalled by PATHNAME.
Condition in PATHNAME [or a callee]: INTERNAL-SIMPLE-PARSE-ERROR: "//tmp/=
=2E////test.txt" is not a valid pathname on host NIL
Broken at PATHNAME. Type :H for Help.
1 Return to top level.=20
>>
</code></pre>
<p style=3D"margin-bottom: 19.2px; margin-top: 0px;">This version
basically dislikes having consecutive slashes. On unix, this is
equivalent to just one "/".</p>
<p style=3D"margin-bottom: 19.2px; margin-top: 0px;">If you change
the namestring to "/tmp/./test.txt", gcl 2.7.1 works and
preserves the "/./".</p>
<p style=3D"margin-bottom: 19.2px; margin-top: 0px;">It would be
really nice to get this fixed before 2.7.2 is released.</p>
</div>
<div class=3D"mdhr-raw"
style=3D"height:0;width:0;max-height:0;max-width:0;overflow:hidden;font-s=
ize:0;padding:0;margin:0;"
aria-hidden=3D"true"
title=3D"MDH:PHA+VGhpcyBjYW1lIHVwIG9uIHRoZSBNYXhpbWEgbGlzdC4mbmJzcDsgQ29u=
c2lkZXI8L3A+PHA+YGBgPC9wPjxwPihsZXQgKChmaWxlIChwYXRobmFtZSAiLy90bXAvLi8vL=
y90ZXN0LnR4dCIpKSk8YnI+Jm5ic3A7ICh3aXRoLW9wZW4tZmlsZSAoc3RyZWFtIGZpbGUgOm=
RpcmVjdGlvbiA6b3V0cHV0IDppZi1leGlzdHMgOnN1cGVyc2VkZSk8YnI+Jm5ic3A7ICZuYnN=
wOyAodmFsdWVzIGZpbGUgKHRydWVuYW1lIGZpbGUpPGJyPiZuYnNwOyAmbmJzcDsgJm5ic3A7=
ICZuYnNwOyAmbmJzcDsgJm5ic3A7IChwYXRobmFtZSBzdHJlYW0pKSkpPC9wPjxwPmBgYDwvc=
D48cD5nY2wgMi42LjE0IHJldHVybnM6PC9wPjxwPmBgYDwvcD48cD4jcCIvdG1wL3Rlc3QudH=
h0Ijxicj4jcCIvdG1wL3Rlc3QudHh0Ijxicj4jcCIvdG1wL3Rlc3QudHh0Ijxicj5gYGA8L3A=
+PHA+TG9zaW5nIHRoZSAiLy4vIiBpcyB1bmZvcnR1bmF0ZSwgYnV0IG5vdCByZWFsbHkgaW5j=
b3JyZWN0IG9uIFVuaXguPC9wPjxwPkhvd2V2ZXIsIHdpdGggZ2NsIDIuNy4xIHdlIGdldDo8L=
3A+PHA+YGBgPC9wPjxwPkVycm9yOjxicj5GYXN0IGxpbmtzIGFyZSBvbjogZG8gKHNpOjp1c2=
UtZmFzdC1saW5rcyBuaWwpIGZvciBkZWJ1Z2dpbmc8YnI+U2lnbmFsbGVkIGJ5IFBBVEhOQU1=
FLjxicj48YnI+Q29uZGl0aW9uIGluIFBBVEhOQU1FIFtvciBhIGNhbGxlZV06IElOVEVSTkFM=
LVNJTVBMRS1QQVJTRS1FUlJPUjogIi8vdG1wLy4vLy8vdGVzdC50eHQiIGlzIG5vdCBhIHZhb=
GlkIHBhdGhuYW1lIG9uIGhvc3QgTklMPGJyPjxicj5Ccm9rZW4gYXQgUEFUSE5BTUUuJm5ic3=
A7IFR5cGUgOkggZm9yIEhlbHAuPGJyPiZuYnNwOyAmbmJzcDsgMSZuYnNwOyBSZXR1cm4gdG8=
gdG9wIGxldmVsLiZuYnNwOzxicj4mZ3Q7Jmd0OzwvcD48cD5gYGA8L3A+PHA+VGhpcyB2ZXJz=
aW9uIGJhc2ljYWxseSBkaXNsaWtlcyBoYXZpbmcgY29uc2VjdXRpdmUgc2xhc2hlcy4mbmJzc=
DsgT24gdW5peCwgdGhpcyBpcyBlcXVpdmFsZW50IHRvIGp1c3Qgb25lICIvIi48L3A+PHA+SW=
YgeW91IGNoYW5nZSB0aGUgbmFtZXN0cmluZyB0byZuYnNwOyIvdG1wLy4vdGVzdC50eHQiLCB=
nY2wgMi43LjEgd29ya3MgYW5kIHByZXNlcnZlcyB0aGUgIi8uLyIuPC9wPjxwPkl0IHdvdWxk=
IGJlIHJlYWxseSBuaWNlIHRvIGdldCB0aGlzIGZpeGVkIGJlZm9yZSAyLjcuMiBpcyByZWxlY=
XNlZC48L3A+PHVsIGNsYXNzPSJkcm9wZG93bi1tZW51IHRleHRjb21wbGV0ZS1kcm9wZG93bi=
Igc3R5bGU9ImRpc3BsYXk6IG5vbmU7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgei1pbmRleDogMTA=
wMDsiIGNvbnRlbnRlZGl0YWJsZT0iZmFsc2UiIHBvcG92ZXI9ImF1dG8iPjwvdWw+">&#=
8203;</div>
</body>
</html>
--------------7E14vMllQWq8grfcjks0rYQO--