Fix file stat on Windows.
GitOrigin-RevId: 2ca2bb1605af4e25f24d6c06c0aae5ffb8fe09e8
This commit is contained in:
parent
f0e660e2aa
commit
b0be2feebc
@ -1528,6 +1528,8 @@ class CliClient final : public Actor {
|
|||||||
send_request(make_tl_object<td_api::optimizeStorage>(
|
send_request(make_tl_object<td_api::optimizeStorage>(
|
||||||
10000000, -1, -1, 0, std::vector<tl_object_ptr<td_api::FileType>>(), as_chat_ids(chat_ids, ','),
|
10000000, -1, -1, 0, std::vector<tl_object_ptr<td_api::FileType>>(), as_chat_ids(chat_ids, ','),
|
||||||
as_chat_ids(exclude_chat_ids, ','), to_integer<int32>(chat_ids_limit)));
|
as_chat_ids(exclude_chat_ids, ','), to_integer<int32>(chat_ids_limit)));
|
||||||
|
} else if (op == "clean_storage_default") {
|
||||||
|
send_request(make_tl_object<td_api::optimizeStorage>());
|
||||||
} else if (op == "clean_storage") {
|
} else if (op == "clean_storage") {
|
||||||
std::vector<tl_object_ptr<td_api::FileType>> types;
|
std::vector<tl_object_ptr<td_api::FileType>> types;
|
||||||
types.push_back(make_tl_object<td_api::fileTypeThumbnail>());
|
types.push_back(make_tl_object<td_api::fileTypeThumbnail>());
|
||||||
|
@ -8,6 +8,8 @@
|
|||||||
|
|
||||||
#if TD_PORT_WINDOWS
|
#if TD_PORT_WINDOWS
|
||||||
#include "td/utils/misc.h" // for narrow_cast
|
#include "td/utils/misc.h" // for narrow_cast
|
||||||
|
|
||||||
|
#include "td/utils/port/Stat.h"
|
||||||
#include "td/utils/port/wstring_convert.h"
|
#include "td/utils/port/wstring_convert.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -399,6 +401,11 @@ int64 FileFd::get_size() {
|
|||||||
return stat().size_;
|
return stat().size_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static uint64 filetime_to_unix_time_nsec(LONGLONG filetime) {
|
||||||
|
const auto FILETIME_UNIX_TIME_DIFF = 116444736000000000ll;
|
||||||
|
return static_cast<uint64>((filetime - FILETIME_UNIX_TIME_DIFF) * 100);
|
||||||
|
}
|
||||||
|
|
||||||
Stat FileFd::stat() {
|
Stat FileFd::stat() {
|
||||||
CHECK(!empty());
|
CHECK(!empty());
|
||||||
#if TD_PORT_POSIX
|
#if TD_PORT_POSIX
|
||||||
@ -412,8 +419,8 @@ Stat FileFd::stat() {
|
|||||||
auto error = OS_ERROR("Stat failed");
|
auto error = OS_ERROR("Stat failed");
|
||||||
LOG(FATAL) << error;
|
LOG(FATAL) << error;
|
||||||
}
|
}
|
||||||
res.atime_nsec_ = basic_info.LastAccessTime.QuadPart * 100;
|
res.atime_nsec_ = filetime_to_unix_time_nsec(basic_info.LastAccessTime.QuadPart);
|
||||||
res.mtime_nsec_ = basic_info.LastWriteTime.QuadPart * 100;
|
res.mtime_nsec_ = filetime_to_unix_time_nsec(basic_info.LastWriteTime.QuadPart);
|
||||||
res.is_dir_ = (basic_info.FileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0;
|
res.is_dir_ = (basic_info.FileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0;
|
||||||
res.is_reg_ = true;
|
res.is_reg_ = true;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user