int ArchiveReader::ExtractFileToStream(const char *name, FILE *fp) { const MarItem *item = mar_find_item(mArchive, name); if (!item) return READ_ERROR; return ExtractItemToStream(item, fp); }
int ArchiveReader::ExtractFile(const char *name, const char *dest) { const MarItem *item = mar_find_item(mArchive, name); if (!item) return READ_ERROR; #ifdef XP_WIN int fd = _open(dest, _O_BINARY|_O_CREAT|_O_TRUNC|_O_WRONLY, item->flags); #else int fd = creat(dest, item->flags); #endif if (fd == -1) return WRITE_ERROR; FILE *fp = fdopen(fd, "wb"); if (!fp) return WRITE_ERROR; int rv = ExtractItemToStream(item, fp); fclose(fp); return rv; }