| 711 | // simple interface to read zip contents without mounting them first |
| 712 | |
| 713 | void *zipmanualopen(stream *f, vector<const char *> &files) |
| 714 | { |
| 715 | if(!f) return NULL; |
| 716 | zipdirectoryheader h; |
| 717 | ziparchive *arch = new ziparchive; |
| 718 | if(!findzipdirectory(f, h) || !readzipdirectory(f, h.entries, h.offset, h.size, arch->files)) |
| 719 | { |
| 720 | delete arch; |
| 721 | delete f; |
| 722 | return NULL; |
| 723 | } |
| 724 | arch->data = f; |
| 725 | loopv(arch->files) files.add(arch->files[i].name); |
| 726 | return (void *)arch; |
| 727 | } |
| 728 | |
| 729 | stream *zipmanualstream(void *a, int n) |
| 730 | { |
no test coverage detected