jzfile * ZIP_Get_From_Cache(const char *name, char **pmsg, jlong lastModified) { static char errbuf[256]; char buf[PATH_MAX]; jzfile *zip; if (InitializeZip()) { return NULL; } /* Clear zip error message */ if (pmsg != 0) { *pmsg = NULL; } if (strlen(name) >= PATH_MAX) { if (pmsg) { *pmsg = "zip file name too long"; } return NULL; } strcpy(buf, name); JVM_NativePath(buf); name = buf; MLOCK(zfiles_lock); for (zip = zfiles; zip != NULL; zip = zip->next) { if (strcmp(name, zip->name) == 0 && (zip->lastModified == lastModified || zip->lastModified == 0) && zip->refs < MAXREFS) { zip->refs++; break; } } MUNLOCK(zfiles_lock); return zip; }
BOOL CInfoZip::Initialize() { return InitializeZip() && InitializeUnzip(); }