Zipper: fixed bug that corrupted filenames

This commit is contained in:
emeric
2020-08-30 15:29:03 +02:00
parent c9aed37fc2
commit 093c36f257
2 changed files with 8 additions and 7 deletions
+2 -2
View File
@@ -292,7 +292,7 @@ namespace Zip
const std::size_t nbBytesToCopy {std::min<std::size_t>(fileName.size() - _currentOffset, bufferSize)};
std::copy(std::next(std::begin(fileName), _currentOffset), std::next(std::begin(fileName), nbBytesToCopy), reinterpret_cast<unsigned char*>(buffer));
std::copy(std::next(std::begin(fileName), _currentOffset), std::next(std::begin(fileName), _currentOffset + nbBytesToCopy), reinterpret_cast<unsigned char*>(buffer));
_currentOffset += nbBytesToCopy;
return nbBytesToCopy;
@@ -412,7 +412,7 @@ namespace Zip
const std::size_t nbBytesToCopy {std::min<std::size_t>(fileName.size() - _currentOffset, bufferSize)};
std::copy(std::next(std::begin(fileName), _currentOffset), std::next(std::begin(fileName), nbBytesToCopy), reinterpret_cast<unsigned char*>(buffer));
std::copy(std::next(std::begin(fileName), _currentOffset), std::next(std::begin(fileName), _currentOffset + nbBytesToCopy), reinterpret_cast<unsigned char*>(buffer));
_currentOffset += nbBytesToCopy;
_centralDirectorySize += nbBytesToCopy;
+6 -5
View File
@@ -40,7 +40,10 @@ int main(int argc, char* argv[])
std::map<std::string, std::filesystem::path> files;
for (int i {2}; i < argc; ++i)
files.emplace(argv[i], argv[i]);
{
std::filesystem::path path {argv[i]};
files.emplace(path.relative_path(), path);
}
std::cout << "Compressing " << files.size() << " files..." << std::endl;
@@ -58,12 +61,10 @@ int main(int argc, char* argv[])
while (!zipper.isComplete())
{
std::array<std::byte, 1000000> buffer;
//std::array<std::byte, Zipper::minOutputBufferSize> buffer;
std::array<std::byte, 65536> buffer;
std::cout << "Call" << std::endl;
std::size_t nbWrittenBytes {zipper.writeSome(buffer.data(), buffer.size())};
std::cout << "nbWrittenBytes = " << nbWrittenBytes << std::endl;
ofs.write(reinterpret_cast<const char*>(buffer.data()), nbWrittenBytes);
}