OriginalBugID: 4131 Bug
Version: 8.3b2
SubmitDate: '2000-02-07'
LastModified: '2000-03-01'
Severity: LOW
Status: Closed
Submitter: techsupp
ChangedBy: hobbs
OS: Windows 98
OSVersion: 4.10.1998
Machine: Celeron 300 / 64 Mb
FixedDate: '2000-10-25'
ClosedDate: '2000-03-01'
Name: SnakE
Comments:
The bug is in the 'glob' command. In example above its output is:
tools Stuff ~test.file temp
while it should be:
tools Stuff ./~test.file temp
ReproducibleScript:
test.tsh:
foreach name [glob -nocomplain *] { puts [file join somedir $name] }
To see the bug, you should have a file which name starts with tilde, '~test.file' for example, in the current directory. Then run the test: 'tclsh83.exe test.tsh'
ObservedBehavior:
The output will be like this:
somedir/tools
somedir/Stuff
~test.file
somedir/temp
As you've noticed, directory name 'somedir' have been lost for the '~test.file' by 'file join' command
DesiredBehavior:
The output should be like this:
somedir/tools
somedir/Stuff
somedir/~test.file
somedir/temp
The ~ is one of those chars that has to be handled separately, and
with minor coding improvements you can make the above work without
problems:
foreach name [glob -nocomplain ./*] { puts [file join somedir $name] }
or in 8.3:
foreach name [glob -nocomplain -dir . *] { ... }
-- 03/01/2000 hobbs
Logged In: YES
user_id=32170
One side-effect of the new VFS code is that this bug is
now rather easy to fix (it would have been much more
complex to fix in Tcl 8.3), since the changes are now
restricted to tclFileName.c and tclIOUtil.c, if it is indeed
considered a bug. I think it should probably be viewed
as a bug, since 'file split' actually handles '~' specially,
so should 'glob'.
Any thoughts?
Logged In: YES
user_id=32170
Attached patch to fix.
diff -bu with windows eols against current cvs head
Logged In: YES
user_id=32170
On balance I think I agree with Jeff that the current
behaviour is most useful. Therefore I'm closing this
bug. A patch is attached if anyone wants a different
behaviour.