| 183 | } |
| 184 | |
| 185 | QuaExtraFieldHash QuaZipFileInfo64::parseExtraField(const QByteArray &extraField) |
| 186 | { |
| 187 | QDataStream input(extraField); |
| 188 | input.setByteOrder(QDataStream::LittleEndian); |
| 189 | QHash<quint16, QList<QByteArray> > result; |
| 190 | while (!input.atEnd()) { |
| 191 | quint16 id, size; |
| 192 | input >> id; |
| 193 | if (input.status() == QDataStream::ReadPastEnd) |
| 194 | return result; |
| 195 | input >> size; |
| 196 | if (input.status() == QDataStream::ReadPastEnd) |
| 197 | return result; |
| 198 | QByteArray data; |
| 199 | data.resize(size); |
| 200 | int read = input.readRawData(data.data(), data.size()); |
| 201 | if (read < data.size()) |
| 202 | return result; |
| 203 | result[id] << data; |
| 204 | } |
| 205 | return result; |
| 206 | } |