mirror of https://github.com/odrling/Aegisub
Implement agi::util::freespace for Windows
Originally committed to SVN as r5497.
This commit is contained in:
parent
6f22088b06
commit
231adad93f
|
@ -65,7 +65,7 @@ namespace agi {
|
|||
/// Check for amount of free space on a Path.
|
||||
// @param path[in] Path to check
|
||||
// @param type PathType (default is TypeDir)
|
||||
uint64_t freespace(std::string &path, PathType type=TypeDir);
|
||||
uint64_t freespace(std::string const& path, PathType type=TypeDir);
|
||||
|
||||
struct delete_ptr {
|
||||
template<class T>
|
||||
|
|
|
@ -66,7 +66,7 @@ void time_log(timeval &tv) {
|
|||
gettimeofday(&tv, (struct timezone *)NULL);
|
||||
}
|
||||
|
||||
uint64_t freespace(std::string &path, PathType type) {
|
||||
uint64_t freespace(std::string const& path, PathType type) {
|
||||
struct statvfs fs;
|
||||
std::string check(path);
|
||||
|
||||
|
|
|
@ -111,5 +111,19 @@ void time_log(agi_timeval &tv) {
|
|||
tv.tv_usec = (long)(tmpres % 1000000UL);
|
||||
}
|
||||
|
||||
uint64_t freespace(std::string const& path, PathType type) {
|
||||
if (type == TypeFile)
|
||||
return freespace(DirName(path));
|
||||
|
||||
ULARGE_INTEGER bytes_available;
|
||||
if (GetDiskFreeSpaceEx(ConvertW(path).c_str(), &bytes_available, 0, 0))
|
||||
return bytes_available.QuadPart;
|
||||
|
||||
acs::CheckDirRead(path);
|
||||
|
||||
/// @todo GetLastError -> Exception mapping
|
||||
throw "Unknown error getting free space";
|
||||
}
|
||||
|
||||
} // namespace io
|
||||
} // namespace agi
|
||||
|
|
Loading…
Reference in New Issue