Boost logo

Boost :

From: (noreply_at_[hidden])
Date: 2003-07-23 04:42:43

Bugs item #776146, was opened at 2003-07-23 02:42
Message generated for change (Tracker Item Submitted) made by Item Submitter
You can respond by visiting:

Category: None
Group: None
Status: Open
Resolution: None
Priority: 5
Submitted By: Nobody/Anonymous (nobody)
Assigned to: Nobody/Anonymous (nobody)
Summary: boost::filesystem fails in posix with files containing ':'

Initial Comment:
(Too bad one can't mail to the mailing lists without
registering first. My email is

I have Boost 1.30.0-4 from Debian GNU/Linux.

The exception I'm getting for merely handling such a path:

  boost::filesystem::path: invalid name "foo:_Kuu" in
path: "foo:_Kuu"

The problem seems to stem from
libs/filesystem/path_posix_windows.cpp, where a
function called generic_name checks against a ton of
letters that pose a problem in Windows - however, the
only characters not legal in a Unix-filename are / and

Is it really a job of this class to check for
path-validity anyway? Well I suppose that has been
discussed already ;).

The function checks also for spaces at the beginning
and at the end of a segment, surely one would imagine
they are legal in Windows too?-o

I didn't fully investigate the matter, but ///tmp///foo
is also a legal unix-path, albeit redundant, I hope
that doesn't pose a problem?

My hackish fix:
    bool generic_name( const std::string & name )
      return name.size() != 0
        && name.find_first_of( invalid_generic ) ==
        && name != "."
        && name != ".."
        && *name.begin() != ' '
        && *(name.end()-1) != ' ';
      return name.size() != 0
        && name != "."
        && name != "..";


You can respond by visiting:

This email is sponsored by: VM Ware
With VMware you can run multiple operating systems on a single machine.
WITHOUT REBOOTING! Mix Linux / Windows / Novell virtual machines at the
same time. Free trial click here:
Boost-bugs mailing list

Boost list run by bdawes at, gregod at, cpdaniel at, john at