// static Platform::EError Platform::GetFileType(string const & path, EFileType & type) { struct stat stats; if (stat(path.c_str(), &stats) != 0) return ErrnoToError(); if (S_ISREG(stats.st_mode)) type = FILE_TYPE_REGULAR; else if (S_ISDIR(stats.st_mode)) type = FILE_TYPE_DIRECTORY; else type = FILE_TYPE_UNKNOWN; return ERR_OK; }
uint64_t Platform::GetWritableStorageSpace() const { struct statfs st; int const ret = statfs(m_writableDir.c_str(), &st); LOG(LDEBUG, ("statfs return =", ret, "; block size =", st.f_bsize, "; blocks available =", st.f_bavail)); if (ret != 0) LOG(LERROR, ("Path:", m_writableDir, "statfs error:", ErrnoToError())); return (ret != 0) ? 0 : st.f_bsize * st.f_bavail; }
Platform::TStorageStatus Platform::GetWritableStorageStatus(uint64_t neededSize) const { struct statfs st; int const ret = statfs(m_writableDir.c_str(), &st); LOG(LDEBUG, ("statfs return =", ret, "; block size =", st.f_bsize, "; blocks available =", st.f_bavail)); if (ret != 0) { LOG(LERROR, ("Path:", m_writableDir, "statfs error:", ErrnoToError())); return STORAGE_DISCONNECTED; } /// @todo May be add additional storage space. if (st.f_bsize * st.f_bavail < neededSize) return NOT_ENOUGH_SPACE; return STORAGE_OK; }
Platform::EError Platform::MkDir(string const & dirName) const { if (0 != mkdir(dirName.c_str(), 0755)) return ErrnoToError(); return Platform::ERR_OK; }
// static Platform::EError Platform::RmDir(string const & dirName) { if (rmdir(dirName.c_str()) != 0) return ErrnoToError(); return ERR_OK; }