result_t fs_base::rename(const char *from, const char *to, AsyncEvent *ac) { if (!ac) return CHECK_ERROR(CALL_E_NOSYNC); if (::_wrename(UTF8_W(from), UTF8_W(to))) return CHECK_ERROR(LastError()); return 0; }
result_t fs_base::rename(exlib::string from, exlib::string to, AsyncEvent *ac) { if (!ac) return CHECK_ERROR(CALL_E_NOSYNC); if (::_wrename(UTF8_W(from), UTF8_W(to))) return CHECK_ERROR(LastError()); return 0; }
result_t fs_base::exists(const char *path, bool &retVal, AsyncEvent *ac) { if (!ac) return CHECK_ERROR(CALL_E_NOSYNC); retVal = _waccess(UTF8_W(path), 0) == 0; return 0; }
result_t fs_base::rmdir(const char *path, AsyncEvent *ac) { if (!ac) return CHECK_ERROR(CALL_E_NOSYNC); if (::_wrmdir(UTF8_W(path))) return CHECK_ERROR(LastError()); return 0; }
result_t fs_base::mkdir(exlib::string path, int32_t mode, AsyncEvent *ac) { if (!ac) return CHECK_ERROR(CALL_E_NOSYNC); if (::_wmkdir(UTF8_W(path))) return CHECK_ERROR(LastError()); return 0; }
result_t fs_base::unlink(exlib::string path, AsyncEvent *ac) { if (!ac) return CHECK_ERROR(CALL_E_NOSYNC); if (::_wunlink(UTF8_W(path))) return CHECK_ERROR(LastError()); return 0; }
result_t Stat::getStat(exlib::string path) { WIN32_FIND_DATAW fd; HANDLE hFind; hFind = FindFirstFileW(UTF8_W(path), &fd); if (hFind == INVALID_HANDLE_VALUE) return CHECK_ERROR(LastError()); fill(fd); FindClose(hFind); return 0; }
result_t File::open(const char *fname, const char *flags, exlib::AsyncEvent *ac) { if (switchToAsync(ac)) return CHECK_ERROR(CALL_E_NOSYNC); #ifdef _WIN32 int _flags = _O_BINARY; #else int _flags = 0; #endif if (!qstrcmp(flags, "r" )) _flags |= O_RDONLY; else if (!qstrcmp(flags, "r+" )) _flags |= O_RDWR; else if (!qstrcmp(flags, "w" )) _flags |= O_TRUNC | O_CREAT | O_WRONLY; else if (!qstrcmp(flags, "w+" )) _flags |= O_TRUNC | O_CREAT | O_RDWR; else if (!qstrcmp(flags, "a" )) _flags |= O_APPEND | O_CREAT | O_WRONLY; else if (!qstrcmp(flags, "a+" )) _flags |= O_APPEND | O_CREAT | O_RDWR; close(ac); #ifdef _WIN32 m_fd = _wopen(UTF8_W(fname), _flags, _S_IREAD | _S_IWRITE); #else m_fd = ::open(fname, _flags, 0666); #endif if (m_fd < 0) return CHECK_ERROR(LastError()); #ifndef _WIN32 if (::fcntl(m_fd, F_SETFD, FD_CLOEXEC)) return CHECK_ERROR(LastError()); #endif name = fname; return 0; }