[Bug c++/78167] New: experimental/filesystem calls behave differently between Linux gcc 5.3.0 and Windows Visual Studio 2015

david_bjornbak at keysight dot com gcc-bugzilla@gcc.gnu.org
Mon Oct 31 03:06:00 GMT 2016


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78167

            Bug ID: 78167
           Summary: experimental/filesystem calls behave differently
                    between Linux gcc 5.3.0 and Windows Visual Studio 2015
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: david_bjornbak at keysight dot com
  Target Milestone: ---

experimental/filesystem calls behave differently between Linux gcc 5.3.0 and
Windows Visual Studio 2015.  For example the following series of calls under a
googletest configuration. It runs Ok on Window VS 2015 but, on Linux with gcc
5.3.0 , it throws errors and if you capture the error_code the fs::remove_all
call will fail if you have sub directories to the "sandbox" directory.

TEST(KPathTest, experimental_filesystem_itself)
{
    // On Linux this throws, not windows
    std::error_code ec;

    fs::remove("somefile_thatdoesnotexist.txt",ec);
    std::cout << "ec for fs::remove " << ec.value() << "\n";

#ifndef _WIN32
    // On Linux, clean up old failed test
    std::system("rm -rf sandbox");
#endif

    fs::create_directories("sandbox/1/2/a");
#ifdef _WIN32
    // On Linux this throws, not windows
    EXPECT_FALSE(fs::create_directory("sandbox/1/2/a"));
#endif

    fs::create_directory("sandbox/1/2/b");
    fs::permissions("sandbox/1/2/b", fs::perms::remove_perms |
fs::perms::others_all);
    fs::create_directory("sandbox/1/2/c", "sandbox/1/2/b");
#ifndef _WIN32
    std::system("ls -l sandbox/1/2");
#endif

    // On Linux this throws and doesn't remove dir and on windows it's Ok
    fs::remove_all("sandbox",ec);
    std::cout << "ec for fs::remove_all " << ec.value() << "\n";

    EXPECT_FALSE(fs::is_directory("sandbox"));

}


More information about the Gcc-bugs mailing list