MCPcopy Create free account
hub / github.com/Serial-Studio/Serial-Studio / largeFile

Method largeFile

lib/QuaZip/qztest/testquazipfile.cpp:500–605  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

498}
499
500void TestQuaZipFile::largeFile()
501{
502 QDir curDir;
503 QVERIFY(curDir.mkpath("tmp"));
504 QFile fakeLargeFile("tmp/large.zip");
505 QVERIFY(fakeLargeFile.open(QIODevice::WriteOnly));
506 QDataStream ds(&fakeLargeFile);
507 ds.setByteOrder(QDataStream::LittleEndian);
508 QList<qint64> localOffsets;
509 const int numFiles = 2; // name fixed to 5 bytes, so MAX 10 FILES!!!
510 for (int i = 0; i < numFiles; ++i) {
511 localOffsets.append(fakeLargeFile.pos());
512 QBuffer extra;
513 extra.open(QIODevice::WriteOnly);
514 QDataStream es(&extra);
515 es.setByteOrder(QDataStream::LittleEndian);
516 // prepare extra
517 es << static_cast<quint16>(0x0001u); // zip64
518 es << static_cast<quint16>(16); // extra data size
519 es << static_cast<quint64>(0); // uncompressed size
520 es << static_cast<quint64>(0); // compressed size
521 // now the local header
522 ds << static_cast<quint32>(0x04034b50u); // local magic
523 ds << static_cast<quint16>(45); // version needed
524 ds << static_cast<quint16>(0); // flags
525 ds << static_cast<quint16>(0); // method
526 ds << static_cast<quint16>(0); // time 00:00:00
527 ds << static_cast<quint16>(0x21); // date 1980-01-01
528 ds << static_cast<quint32>(0); // CRC-32
529 ds << static_cast<quint32>(0xFFFFFFFFu); // compressed size
530 ds << static_cast<quint32>(0xFFFFFFFFu); // uncompressed size
531 ds << static_cast<quint16>(5); // name length
532 ds << static_cast<quint16>(extra.size()); // extra length
533 ds.writeRawData("file", 4); // name
534 ds << static_cast<qint8>('0' + i); // name (contd.)
535 ds.writeRawData(extra.buffer(), extra.size());
536 }
537 // central dir:
538 qint64 centralStart = fakeLargeFile.pos();
539 for (int i = 0; i < numFiles; ++i) {
540 QBuffer extra;
541 extra.open(QIODevice::WriteOnly);
542 QDataStream es(&extra);
543 es.setByteOrder(QDataStream::LittleEndian);
544 // prepare extra
545 es << static_cast<quint16>(0x0001u); // zip64
546 es << static_cast<quint16>(24); // extra data size
547 es << static_cast<quint64>(0); // uncompressed size
548 es << static_cast<quint64>(0); // compressed size
549 es << static_cast<quint64>(localOffsets[i]);
550 // now the central dir header
551 ds << static_cast<quint32>(0x02014b50u); // central magic
552 ds << static_cast<quint16>(45); // version made by
553 ds << static_cast<quint16>(45); // version needed
554 ds << static_cast<quint16>(0); // flags
555 ds << static_cast<quint16>(0); // method
556 ds << static_cast<quint16>(0); // time 00:00:00
557 ds << static_cast<quint16>(0x21); // date 1980-01-01

Callers

nothing calls this directly

Calls 8

posMethod · 0.80
writeRawDataMethod · 0.80
getFileInfoListMethod · 0.80
openMethod · 0.45
appendMethod · 0.45
sizeMethod · 0.45
closeMethod · 0.45
removeMethod · 0.45

Tested by

no test coverage detected