Zipper: fixed bug that corrupted filenames
This commit is contained in:
@@ -292,7 +292,7 @@ namespace Zip
|
|||||||
|
|
||||||
const std::size_t nbBytesToCopy {std::min<std::size_t>(fileName.size() - _currentOffset, bufferSize)};
|
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;
|
_currentOffset += nbBytesToCopy;
|
||||||
return nbBytesToCopy;
|
return nbBytesToCopy;
|
||||||
@@ -412,7 +412,7 @@ namespace Zip
|
|||||||
|
|
||||||
const std::size_t nbBytesToCopy {std::min<std::size_t>(fileName.size() - _currentOffset, bufferSize)};
|
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;
|
_currentOffset += nbBytesToCopy;
|
||||||
_centralDirectorySize += nbBytesToCopy;
|
_centralDirectorySize += nbBytesToCopy;
|
||||||
|
|||||||
@@ -40,7 +40,10 @@ int main(int argc, char* argv[])
|
|||||||
|
|
||||||
std::map<std::string, std::filesystem::path> files;
|
std::map<std::string, std::filesystem::path> files;
|
||||||
for (int i {2}; i < argc; ++i)
|
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;
|
std::cout << "Compressing " << files.size() << " files..." << std::endl;
|
||||||
@@ -58,12 +61,10 @@ int main(int argc, char* argv[])
|
|||||||
|
|
||||||
while (!zipper.isComplete())
|
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::size_t nbWrittenBytes {zipper.writeSome(buffer.data(), buffer.size())};
|
||||||
std::cout << "nbWrittenBytes = " << nbWrittenBytes << std::endl;
|
|
||||||
|
|
||||||
ofs.write(reinterpret_cast<const char*>(buffer.data()), nbWrittenBytes);
|
ofs.write(reinterpret_cast<const char*>(buffer.data()), nbWrittenBytes);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user