Example #1
0
    bool File::MoveDirectory(const MistString& src, const MistString& dst) {
#if defined(MIST_OS_WINDOWS)
        return ::MoveFileW(src.c_str(),
                           dst.c_str()) == TRUE;
        
#elif defined(MIST_OS_FAMILY_APPLE)
        return mist_apple_moveitem(src, dst);
        
#elif defined(MIST_OS_FAMILY_UNIX)
        return ::rename(string::WStringToString(src).c_str(),
                        string::WStringToString(dst).c_str()) == 0;
        
#endif
    }
Example #2
0
    MistString Path::GetEnv(const MistString& env) {
#if defined(MIST_OS_WINDOWS)
        DWORD len = GetEnvironmentVariableW(env.c_str(), 0, 0);
        if (len != 0) {
            wchar_t* buffer = new wchar_t[len];
            GetEnvironmentVariableW(env.c_str(), buffer, len);
            MistString result(buffer);
            delete [] buffer;
            return result;
        }
        
#elif defined(MIST_OS_FAMILY_UNIX)
        return string::StringToWStringFast(getenv(string::WStringToString(env).c_str()));
#endif
        
        return MistString();
    }
Example #3
0
    bool File::CopyFile(const MistString& src, const MistString& dst) {
     
#if defined(MIST_OS_WINDOWS)
        
        return ::CopyFileW(src.c_str(),
                           dst.c_str(),
                           FALSE) == TRUE;
        
#elif defined(MIST_OS_FAMILY_APPLE)
        return mist_apple_copyitem(src, dst);
        
#elif defined(MIST_OS_FAMILY_UNIX)
        return mist_generic_cp_mv("/bin/cp",
                                  string::WStringToString(src).c_str(),
                                  string::WStringToString(dst).c_str());
        
#endif
        
    }
Example #4
0
    bool File::DeleteDirectory(const MistString& src) {
#if defined(MIST_OS_WINDOWS)
        return ::RemoveDirectoryW(src.c_str()) == TRUE;
        
#elif defined(MIST_OS_FAMILY_APPLE)
        return mist_apple_deleteitem(src);
        
#elif defined(MIST_OS_FAMILY_UNIX)
        return mist_generic_rm(string::WStringToString(src).c_str(),
                               true);
        
#endif
    }
Example #5
0
    bool File::DeleteFile(const MistString& src) {
#if defined(MIST_OS_WINDOWS)
        return ::DeleteFileW(src.c_str()) == TRUE;
        
#elif defined(MIST_OS_FAMILY_APPLE)
        return mist_apple_deleteitem(src);
        
        
#elif defined(MIST_OS_FAMILY_UNIX)
        return ::remove(string::WStringToString(src).cstr()) == 0;
        
#endif
    }
Example #6
0
    bool File::CopyDirectory(const MistString& src, const MistString& dst) {
#if defined(MIST_OS_WINDOWS)
        SHFILEOPSTRUCT s = { 0 };
        s.hwnd = 0;
        s.wFunc = FO_COPY;
        s.fFlags = FOF_SILENT;
        s.pTo = dst.c_str();
        s.pFrom = src.c_str();
        return SHFileOperation(&s) == 0;
        
#elif defined(MIST_OS_FAMILY_APPLE)
        return mist_apple_copyitem(src, dst);      
        
#elif defined(MIST_OS_FAMILY_UNIX)
        return mist_generic_cp_mv("/bin/cp",
                                  string::WStringToString(src).c_str(),
                                  string::WStringToString(dst).c_str(),
                                  true);
        
#endif
        
    }
Example #7
0
    bool File::PathExists(const MistString& path) {
#ifdef MIST_OS_WINDOWS
        return PathFileExistsW(path.c_str())?true:false;

#else
        struct stat sb;
        
        if (stat(string::WStringToString(path).c_str(), &sb) == 0 && S_ISDIR(sb.st_mode)) {
            return true;
        }
#endif
        
        return false;
    }
Example #8
0
        DirectoryIteratorImpl(const MistString& path) {
            MistString findPath = path + L"/*";
            
            mFH = FindFirstFileW(findPath.c_str(), &mFD);
            if(mFH == INVALID_HANDLE_VALUE) {
				DWORD error = GetLastError();
                if(error != ERROR_NO_MORE_FILES) {
                    
                }
            } else {
                mCurrent = mFD.cFileName;
                if(mCurrent == L"." || mCurrent == L"..")
                    next();
            }
        }
Example #9
0
    bool File::CreateDirectory(const MistString& dir){
#if defined(MIST_OS_WINDOWS)
        return ::CreateDirectoryW(dir.c_str(),
                                  NULL) == TRUE;
        
#elif defined(MIST_OS_FAMILY_APPLE)

        return mist_apple_createdirectory(dir);
        
#elif defined(MIST_OS_FAMILY_UNIX)
        return mkdir(string::WStringToString(dir).c_str(),
                     S_IRWXU) == 0;
        
#endif
    }
Example #10
0
    bool File::FileExists(const MistString& filepath) {
#ifdef MIST_OS_WINDOWS
        return PathFileExistsW(filepath.c_str())?true:false;
        
#elif defined(MIST_OS_FAMILY_APPLE)
        return mist_apple_file_exists(filepath);
#else
        
        struct stat sb;
        
        if (stat(Miststring::WStringToString(filepath).c_str(), &sb) == 0 && S_ISREG(sb.st_mode)) {
            return true;
        }
#endif
        return false;
    }
Example #11
0
    MistString Path::ExpandPath(const MistString& path) {
#if defined(MIST_OS_WINDOWS)
        wchar_t buffer[_MAX_PATH];
        DWORD n = ExpandEnvironmentStringsW(path.c_str(), buffer, sizeof(buffer));
        if(n > 0 && n < sizeof(buffer)) {
            return MistString(buffer, n-1);
        } else
            return path;
        
#elif defined(MIST_OS_FAMILY_UNIX)
        MistString result;
        MistString::const_iterator it  = path.begin();
        MistString::const_iterator end = path.end();
        if (it != end && *it == L'~') {
            ++it;
            if (it != end && *it == L'/') {
                result += Path::GetHome(); ++it;
            }
            else result += '~';
        }
        while (it != end) {
            if (*it == L'$') {
                std::wstring var;
                ++it;
                if (it != end && *it == L'{') {
                    ++it;
                    while (it != end && *it != L'}') var += *it++;
                    if (it != end) ++it;
                }
                else {
                    while (it != end && (((*it >= L'a' && *it <= L'z') || (*it >= L'A' && *it <= L'Z') || (*it >= L'0' && *it <= L'9')) || *it == L'_')) var += *it++;
                }
                result += Path::GetEnv(var);
            }
            else result += *it++;
        }
        return result;
#endif    
    }