Boost logo

Boost :

From: Angus Leeming (angus.leeming_at_[hidden])
Date: 2004-09-28 07:13:05


Martin wrote:

> If I write *.txt in a windows file selection dialog box, I will see
> all files in the directory ending with ".txt" (in lowercase) but
> also all files ending in ".TXT", ".tXt" etc that doesn't have the
> FILE_FLAG_POSIX_SEMANTICS attribute set.
>
> I get the same result by using "*.txt" with the win32 native
> functions FindFirstFile/FindNextFile.

Ok, understood. Thanks.

> It is normally not a problem but when trying to write portable code
> it is not clear if I should write "*.txt" or "*.[tT][xX][tT]". Both
> might give non- expected results.
>
> The best thing would be if the glob function treated case
> sensitivity in the same way as the underlying filsystem but then it
> would have to be part of the filesystem library.

I think so too. However, the problem becomes "Design an interface to
glob so that I can pass flags to the underlying
filesystem::directory_iterator". Assuming that this is the solution
that Beman adopts. Perhaps you should direct your problem towards him
in the first instance.

> Another thing:
> The boost.filesystem function is_directory might throw for security
> reasons on files in a directory. I recommend that you create your
> own non-throwing overload
>
> bool is_directory(const path& aPath, bool aErrorRet) {
> try { return is_directory(aPath); } catch (...) { return
> aErrorRet; }
> }

Good. Thanks. Actually I think I'll just use:

    bool nothrow_is_directory(filesystem::path const & path)
    {
        try {
            return is_directory(path);
        } catch (filesystem::filesystem_error const &) {
            return false;
        }
    }

Since the function description talks explicitly about the permissions
needed to find a match.

I guess that I'll need to wrap "exists(path)" too. Will have a look.

Regards,
Angus


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk