diff --git a/frameworks/native/backup_ext/include/tar_file.h b/frameworks/native/backup_ext/include/tar_file.h index 27c798966aeeedee3e97484a69fa0a42be94f796..a728e4d4a10cad406e2c9f442e76bb801f4a646d 100644 --- a/frameworks/native/backup_ext/include/tar_file.h +++ b/frameworks/native/backup_ext/include/tar_file.h @@ -134,7 +134,7 @@ private: * @param ioBuffer 写入的文件信息 * @param read 读取文件 */ - off_t SplitWriteAll(const std::vector &ioBuffer, off_t read); + off_t SplitWriteAll(const std::vector &ioBuffer, off_t read, int &err); /** * @brief creaat split tarfile diff --git a/frameworks/native/backup_ext/src/tar_file.cpp b/frameworks/native/backup_ext/src/tar_file.cpp index 0349d74b4393732208d3dc86cd319cbfcb902eef..3a3f4b5c719eb64d97667c4a979aa97c66e2463d 100644 --- a/frameworks/native/backup_ext/src/tar_file.cpp +++ b/frameworks/native/backup_ext/src/tar_file.cpp @@ -72,7 +72,7 @@ bool TarFile::Packet(const vector &srcFiles, const string &tarFileName, size_t index = 0; for (const auto &filePath : srcFiles) { - int err = 0; + int err = BError::E_PACKET; rootPath_ = filePath; if (!TraversalFile(rootPath_, err)) { HILOGE("ReportErr Failed to traversal file, file path is:%{public}s, err = %{public}d", @@ -351,7 +351,7 @@ bool TarFile::WriteFileContent(const string &fileName, off_t size, int &err) } // write buffer to tar file - if (SplitWriteAll(ioBuffer_, read) != read) { + if (SplitWriteAll(ioBuffer_, read, err) != read) { HILOGE("Failed to split write all"); break; } @@ -365,7 +365,7 @@ bool TarFile::WriteFileContent(const string &fileName, off_t size, int &err) return false; } -off_t TarFile::SplitWriteAll(const vector &ioBuffer, off_t read) +off_t TarFile::SplitWriteAll(const vector &ioBuffer, off_t read, int &err) { off_t len = static_cast(ioBuffer.size()); if (len > read) { @@ -378,6 +378,7 @@ off_t TarFile::SplitWriteAll(const vector &ioBuffer, off_t read) // 再执行一遍 writeBytes = fwrite(&ioBuffer[count], sizeof(uint8_t), len - count, currentTarFile_); if (writeBytes < 1) { + err = errno; HILOGE("Failed to fwrite tar file, err = %{public}d", errno); return count; }