| 764 | } |
| 765 | |
| 766 | stream *openzipfile(const char *name, const char *mode) |
| 767 | { |
| 768 | for(; *mode; mode++) if(*mode=='w' || *mode=='a') return NULL; |
| 769 | // if(!strncmp(name, "zip://", 6)) name += 6; |
| 770 | memfile *mf = memfiles.access(name); |
| 771 | if(mf) return openmemfile(mf->buf, mf->len, &mf->refcnt); |
| 772 | zipfile **zf = zipfiles.access(name); |
| 773 | if(zf && *zf) |
| 774 | { |
| 775 | zipstream *s = new zipstream; |
| 776 | if(s->open((*zf)->location, *zf)) return s; |
| 777 | delete s; |
| 778 | } |
| 779 | return NULL; |
| 780 | } |
| 781 | |
| 782 | void listzipfiles(const char *dir, const char *ext, vector<char *> &files) // (does not list memfiles) |
| 783 | { |
no test coverage detected