bool FolderScanner::scan(const string &path, vector<string> &children, bool findFiles)
{
    if (!isDir(path))
    {
        L_ERROR_P("<%s> does not exist or not a directory", path.c_str());
        return false;
    }

    fs::path p(path);
    for (fs::directory_iterator it = fs::directory_iterator(p); it != fs::directory_iterator(); ++it)
    {
        fs::path pathChild(*it);            // pathChild has linux style slashes inside

        bool isDir = fs::is_directory(pathChild);

        //L_DDEBUG_P("%s contains\t%s\tas a %s", p.string().c_str(), pathChild.string().c_str(), (isDir ? "dir" : "file"));

        if (!(findFiles ^ isDir))
            continue;

        // win32: bugfix state:
        //  pathChild.string() - has linux   style slashes everywhere
        //  (string)pathChild  - has windows style slashes on vc12, but it's obsolete in vc14
#ifdef _MSC_VER
        childs.push_back(corecvs::HelperUtils::toNativeSlashes(pathChild.string()));
#else
        children.push_back(pathChild);
#endif
    }

    return true;
}
bool FolderScanner::scan(const string &path, vector<string> &childs, bool findFiles)
{
    fs::path p(path);
    if (!fs::exists(p))
    {
        L_ERROR_P("<%s> does not exist", p.string().c_str());
        return false;
    }
    if (!fs::is_directory(p))
    {
        L_ERROR_P("<%s> is not a directory", p.string().c_str());
        return false;
    }

    for (fs::directory_iterator it = fs::directory_iterator(p); it != fs::directory_iterator(); ++it)
    {
        fs::path pathChild(*it);            // pathChild has linux style slashes inside
        bool isDir = fs::is_directory(pathChild);

        L_DDEBUG_P("%s contains\t%s\tas a %s", p.string().c_str(), pathChild.string().c_str(), (isDir ? "dir" : "file"));

        if (!(findFiles ^ isDir))
            continue;

        childs.push_back(pathChild);        // string(pathChild) has native platform style slashes inside
    }

    return true;
}