When you pass in a file name pattern to a CfsDirectoryDescriptor under any of the UNIX variants (we run on Solaris), it does not always correctly filter the file names. For instance:
I have a directory /tmp/test/. In that directory is one file named: abc.txt.123.txt
The code:
| entry dir |
dir := CfsDirectoryDescriptor
opendir: '/tmp/test/'
pattern: '*.txt'
mode: CfsConstants::FREG.
entry := dir readdir
will return nil. The code does not consider the abc.txt.123.txt file name to match the pattern *.txt.
The problem is either in CfsDirectoryDescriptor>>basicReaddir:for: in how it uses EsString>>indexOf:matchCase:startingAt:, or in the implementation of EsString>>indexOf:matchCase:startingAt:. Which one is wrong depends on what EsString>>indexOf:matchCase:startingAt: is actually supposed to do.
This problem does not occur on Windows, because, on that platform, the OS does the pattern matching.
This error is present in all versions up through 7.0. We have not upgraded to 7.5
thank you,
Doug Swartz