コード例 #1
0
ファイル: VirtualFileSystem.cpp プロジェクト: unoyx/vfs
DirHandler VirtualDiskNode::createDir(MyString path)
{
    if (!isNormalizedPath(path))
    {
        assert(0);
        return DirHandler(nullptr);
    }
    MyString dir_path = dirname(path).toLower();
    DirNode* parent = getDirNode(dir_path);
    if (!parent)
        return DirHandler(nullptr);

    MyString dir_name = basename(path);
    if (dir_name == _T("..") || dir_name == _T("."))
        return DirHandler(nullptr);
    if (parent->findSubDir(dir_name.toLower()) != -1)
        return DirHandler(nullptr);

    DirNode* ndir = parent->addSubDir();
    assert(ndir);
    ndir->set_name(dir_name);
    ndir->set_path(path);
    // 新建文件夹中,包含“.”,“..”两个文件夹。
    DirNode* n_self = ndir->addSubDir();
    n_self->set_name(_T("."));
    n_self->set_path(dir_path + _T("\\."));
    DirNode* n_parent = ndir->addSubDir();
    n_parent->set_name(_T(".."));
    n_parent->set_path(dir_path + _T("\\.."));
    n_parent->set_ctime(parent->get_ctime());
    return DirHandler(ndir);
}