| 249 | } |
| 250 | |
| 251 | bool ZipArchive::seekFile(s32 offset, s32 origin) |
| 252 | { |
| 253 | if (m_curFile < 0) { return false; } |
| 254 | size_t size = m_entries[m_curFile].length; |
| 255 | |
| 256 | switch (origin) |
| 257 | { |
| 258 | case SEEK_SET: |
| 259 | { |
| 260 | m_fileOffset = offset; |
| 261 | } break; |
| 262 | case SEEK_CUR: |
| 263 | { |
| 264 | m_fileOffset += offset; |
| 265 | } break; |
| 266 | case SEEK_END: |
| 267 | { |
| 268 | m_fileOffset = (s32)size - offset; |
| 269 | } break; |
| 270 | } |
| 271 | assert(m_fileOffset <= size && m_fileOffset >= 0); |
| 272 | if (m_fileOffset > size || m_fileOffset < 0) |
| 273 | { |
| 274 | m_fileOffset = 0; |
| 275 | return false; |
| 276 | } |
| 277 | return true; |
| 278 | } |
| 279 | |
| 280 | size_t ZipArchive::getLocInFile() |
| 281 | { |