diff --git a/td/telegram/files/FileUploader.cpp b/td/telegram/files/FileUploader.cpp index d4611019..ccc27cb8 100644 --- a/td/telegram/files/FileUploader.cpp +++ b/td/telegram/files/FileUploader.cpp @@ -164,7 +164,8 @@ Result FileUploader::on_update_local_location(const Loca if (local_is_ready) { CHECK(!fd_.empty()); - TRY_RESULT(local_size, fd_.get_size()); + TRY_RESULT(local_file_size, fd_.get_size()); + local_size = local_file_size; LOG(INFO) << "Set file local_size to " << local_size; if (local_size == 0) { return Status::Error("Can't upload empty file"); diff --git a/tdutils/td/utils/port/FileFd.cpp b/tdutils/td/utils/port/FileFd.cpp index f978d111..3b5f59cb 100644 --- a/tdutils/td/utils/port/FileFd.cpp +++ b/tdutils/td/utils/port/FileFd.cpp @@ -446,19 +446,17 @@ Result FileFd::stat() { FILE_BASIC_INFO basic_info; auto status = GetFileInformationByHandleEx(get_native_fd().fd(), FileBasicInfo, &basic_info, sizeof(basic_info)); if (!status) { - auto error = OS_ERROR("Stat failed"); - LOG(FATAL) << error; + return OS_ERROR("Get FileBasicInfo failed"); } res.atime_nsec_ = filetime_to_unix_time_nsec(basic_info.LastAccessTime.QuadPart); res.mtime_nsec_ = filetime_to_unix_time_nsec(basic_info.LastWriteTime.QuadPart); res.is_dir_ = (basic_info.FileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0; - res.is_reg_ = true; + res.is_reg_ = !res.is_dir_; // TODO this is still wrong FILE_STANDARD_INFO standard_info; status = GetFileInformationByHandleEx(get_native_fd().fd(), FileStandardInfo, &standard_info, sizeof(standard_info)); if (!status) { - auto error = OS_ERROR("Stat failed"); - LOG(FATAL) << error; + return OS_ERROR("Get FileStandardInfo failed"); } res.size_ = standard_info.EndOfFile.QuadPart; diff --git a/tdutils/td/utils/port/Stat.cpp b/tdutils/td/utils/port/Stat.cpp index 56d4228c..1511a3b8 100644 --- a/tdutils/td/utils/port/Stat.cpp +++ b/tdutils/td/utils/port/Stat.cpp @@ -113,10 +113,8 @@ Stat from_native_stat(const struct ::stat &buf) { Result fstat(int native_fd) { struct ::stat buf; - int err = detail::skip_eintr([&] { return ::fstat(native_fd, &buf); }); - auto fstat_errno = errno; - if (err < 0) { - return Status::PosixError(fstat_errno, PSLICE() << "Stat for fd " << native_fd << " failed"); + if (detail::skip_eintr([&] { return ::fstat(native_fd, &buf); }) < 0) { + return OS_ERROR(PSLICE() << "Stat for fd " << native_fd << " failed"); } return detail::from_native_stat(buf); }