Ticket UUID: | 219258 | |||
Title: | Glob doesn't deal properly with * and [ | |||
Type: | Bug | Version: | obsolete: 8.4a1 | |
Submitter: | nobody | Created on: | 2000-10-26 05:04:16 | |
Subsystem: | 36. Pathname Management | Assigned To: | vincentdarley | |
Priority: | 5 Medium | Severity: | ||
Status: | Closed | Last Modified: | 2001-10-29 22:03:07 | |
Resolution: | Fixed | Closed By: | vincentdarley | |
Closed on: | 2001-10-29 15:03:07 | |||
Description: |
OriginalBugID: 6101 Bug Version: 8.4a1 SubmitDate: '2000-08-09' LastModified: '2000-09-05' Severity: LOW Status: Assigned Submitter: techsupp ChangedBy: hobbs OS: Windows NT FixedDate: '2000-10-25' ClosedDate: '2000-10-25' Name: Michal Prussak Comments: Not really a big deal, but I thouht you should know. ReproducibleScript: Create files with names "*" and "[" (OK, * is perhaps bad, because NT applications can't access a file with a * in the name anyway) % glob {\*} <gives listing of root directory> % glob {\[} no files matched glob pattern "\[" ObservedBehavior: Files * and [ have not been matched DesiredBehavior: Files * and [ should have been matched, just like on Unix: % glob {\[} {[} % glob {\*} * Verified this on 8.3.2 for Windows. -- 09/05/2000 hobbs | |||
User Comments: |
vincentdarley added on 2001-09-20 21:15:59:
File Added - 11013: winStat.patch Logged In: YES user_id=32170 I don't know how to create a file called '*' on Win2000 (using Tcl or not) so I can't test the first part of the bug, but I can make '[' work with the patch attached. This is basically the 'patch to speedup stat 100x' (although the speed up seems smaller). It seems to pass all tests on Win2000, but should be tested on Win9x to make sure I've got the 'A' as well as 'W' APIs correct. nobody added on 2001-09-18 21:25:34: Logged In: NO Note: this is related to the 'speed up stat 100x on Windows' patch # 403001, in that if we apply a version of that patch, then we no longer need to eliminate file names contain wildcards, and this bug will go away. vincentdarley added on 2001-08-24 22:16:52: Logged In: YES user_id=32170 This is, I believe, nothing to do with TclpMatchFilesTypes. Since we are matching a literal string here, 'glob' falls through to the end of TclDoGlob which simply checks for existence of the file, using Tcl_FSAccess (or since the patch was checked in yesterday) Tcl_FSLStat. However, looking at the implementation of stat on WinTcl, I see this: /* * Eliminate file names containing wildcard characters, or subsequent * call to FindFirstFile() will expand them, matching some other file. */ transPtr = Tcl_FSGetTranslatedPath(NULL, pathPtr); if (transPtr == NULL || (strpbrk(Tcl_GetString (transPtr), "?*") != NULL)) { Tcl_SetErrno(ENOENT); return -1; } i.e. we purposefully disallow ourselves from statting any file with '*' or '?' in the name. Since this bug is reported against older versions of Tcl, it seems as if 'access' has the same limitation (although it doesn't seem to be explicitly coded in Tcl's core). I assume this is therefore a limitation of the Win32 api's we use, and therefore cannot be fixed (at least without changing those api's). I'm therefore assigning this to Jeff, since he seems to know something about the 'real Win32' stuff (and I don't) dkf added on 2000-11-24 21:26:33: Probably a fault in the Windows implementation of TclpMatchFilesTypes() |
Attachments:
- winStat.patch [download] added by vincentdarley on 2001-09-20 21:15:59. [details]