futurerestore/.github/workflows/xpwn_include/partial/partial.h
Liam(Cryptic) 029e768ca3
Fix FDR SEP Panic and a13 iPhone 11 family devices (#3)
Rose fix. Also Add working CI Static building.
2021-02-24 17:53:08 -08:00

85 lines
1.8 KiB
C

#include <inttypes.h>
#include <curl/curl.h>
typedef struct EndOfCD {
uint32_t signature;
uint16_t diskNo;
uint16_t CDDiskNo;
uint16_t CDDiskEntries;
uint16_t CDEntries;
uint32_t CDSize;
uint32_t CDOffset;
uint16_t lenComment;
} __attribute__ ((packed)) EndOfCD;
typedef struct CDFile {
uint32_t signature;
uint16_t version;
uint16_t versionExtract;
uint16_t flags;
uint16_t method;
uint16_t modTime;
uint16_t modDate;
uint32_t crc32;
uint32_t compressedSize;
uint32_t size;
uint16_t lenFileName;
uint16_t lenExtra;
uint16_t lenComment;
uint16_t diskStart;
uint16_t internalAttr;
uint32_t externalAttr;
uint32_t offset;
} __attribute__ ((packed)) CDFile;
typedef struct LocalFile {
uint32_t signature;
uint16_t versionExtract;
uint16_t flags;
uint16_t method;
uint16_t modTime;
uint16_t modDate;
uint32_t crc32;
uint32_t compressedSize;
uint32_t size;
uint16_t lenFileName;
uint16_t lenExtra;
} __attribute__ ((packed)) LocalFile;
typedef struct ZipInfo ZipInfo;
typedef void (*PartialZipProgressCallback)(ZipInfo* info, CDFile* file, size_t progress);
struct ZipInfo {
char* url;
uint64_t length;
CURL* hIPSW;
char* centralDirectory;
size_t centralDirectoryRecvd;
EndOfCD* centralDirectoryDesc;
char centralDirectoryEnd[0xffff + sizeof(EndOfCD)];
size_t centralDirectoryEndRecvd;
PartialZipProgressCallback progressCallback;
};
#ifdef __cplusplus
extern "C" {
#endif
ZipInfo* PartialZipInit(const char* url);
CDFile* PartialZipFindFile(ZipInfo* info, const char* fileName);
CDFile* PartialZipListFiles(ZipInfo* info);
unsigned char* PartialZipGetFile(ZipInfo* info, CDFile* file);
void PartialZipRelease(ZipInfo* info);
void PartialZipSetProgressCallback(ZipInfo* info, PartialZipProgressCallback progressCallback);
#ifdef __cplusplus
}
#endif