void pfPatcherWorker::WhitelistFile(const plFileName& file, bool justDownloaded, hsStream* stream) { // if this is a newly downloaded file, fire off a completion callback if (justDownloaded && fFileDownloaded) fFileDownloaded(file); // we want to whitelist our game code, so here we go... if (fGameCodeDiscovered) { plString ext = file.GetFileExt(); if (ext.CompareI("pak") == 0 || ext.CompareI("sdl") == 0) { if (!stream) { stream = new hsUNIXStream; stream->Open(file, "rb"); } // if something terrible goes wrong (eg bad encryption), we can exit sanely // callback eats stream if (!fGameCodeDiscovered(file, stream)) EndPatch(kNetErrInternalError, "SecurePreloader failed."); } } else if (stream) { // no dad gum memory leaks, m'kay? stream->Close(); delete stream; } }
pfPatcherStream(pfPatcherWorker* parent, const plFileName& filename, const NetCliFileManifestEntry& entry) : fParent(parent), fFlags(entry.flags), fBytesWritten(0) { // ugh. eap removed the compressed flag in his fail manifests if (filename.GetFileExt().CompareI("gz") == 0) { fFlags |= pfPatcherWorker::kFlagZipped; parent->fTotalBytes += entry.zipSize; } else parent->fTotalBytes += entry.fileSize; }
plResDownloadStream(plOperationProgress* prog, const plFileName& reqFile) : fProgress(prog) { fIsZipped = reqFile.GetFileExt().CompareI("gz") == 0; }