46#ifndef RCBENCH_WA_ZIP_H
47#define RCBENCH_WA_ZIP_H
59#define WA_ZIP_MAX32 0xFFFFFFFFu
60#define WA_ZIP_MAX16 0xFFFFu
63uint32_t
wa_crc32(uint32_t crc,
const void *data,
size_t n);
67void wa_dos_time(int64_t t, uint16_t *time, uint16_t *date);
74bool wa_zip_end64(uint64_t entries, uint64_t cd_bytes, uint64_t cd_offset);
76uint32_t wa_zip_local_bytes(
size_t name_len, uint64_t size);
77uint32_t wa_zip_desc_bytes(uint64_t size);
78uint32_t wa_zip_central_bytes(
size_t name_len, uint64_t size,
80uint32_t wa_zip_end_bytes(uint64_t entries, uint64_t cd_bytes,
85size_t wa_zip_local(uint8_t *out,
const char *name,
size_t name_len,
86 uint64_t size, int64_t mtime,
bool dir);
87size_t wa_zip_desc(uint8_t *out, uint32_t crc, uint64_t size);
88size_t wa_zip_central(uint8_t *out,
const char *name,
size_t name_len,
89 uint64_t size, uint32_t crc, uint64_t offset,
90 int64_t mtime,
bool dir);
91size_t wa_zip_end(uint8_t *out, uint64_t entries, uint64_t cd_bytes,
95#define WA_ZIP_PIECE_MAX (46u + (WA_PATH_MAX + 1u) + 28u + 56u + 20u + 22u)
152#define WA_ZIP_SPARE 16u
A walk under way.
Definition wa_walk.h:84
uint64_t cd
Definition wa_zip.h:103
uint64_t at
Definition wa_zip.h:102
uint64_t cd_offset
Definition wa_zip.h:126
unsigned long left_out
Definition wa_zip.h:127
uint64_t entries
Definition wa_zip.h:122
uint64_t file_bytes
Definition wa_zip.h:124
uint64_t bytes
Definition wa_zip.h:125
One entry as the first walk found it, 24 bytes.
Definition wa_zip.h:141
uint32_t mtime
Definition wa_zip.h:145
uint16_t len
Definition wa_zip.h:146
uint32_t crc
Definition wa_zip.h:143
uint32_t path
Definition wa_zip.h:144
uint64_t size
Definition wa_zip.h:142
uint16_t spare
Definition wa_zip.h:147
One archive being sent. The fields are wa_zip.c's.
Definition wa_zip.h:155
wa_walk_t walk
Definition wa_zip.h:173
uint64_t left
Definition wa_zip.h:166
size_t piece_len
Definition wa_zip.h:170
void * file
Definition wa_zip.h:165
const wa_fs_t * fs
Definition wa_zip.h:156
uint64_t size
Definition wa_zip.h:167
uint8_t piece[WA_ZIP_PIECE_MAX]
Definition wa_zip.h:169
uint64_t cd_bytes
Definition wa_zip.h:162
wa_zip_slot_t * slot
Definition wa_zip.h:158
size_t piece_off
Definition wa_zip.h:171
wa_zip_plan_t plan
Definition wa_zip.h:157
uint64_t cd_at
Definition wa_zip.h:161
uint32_t file_crc
Definition wa_zip.h:168
wa_zip_err_t err
Definition wa_zip.h:172
uint64_t index
Definition wa_zip.h:159
uint64_t at
Definition wa_zip.h:160
bool in_file
Definition wa_zip.h:164
int phase
Definition wa_zip.h:163
Every file and folder on the card, one at a time.
uint64_t wa_zip_len_total(const wa_zip_len_t *l)
Definition wa_zip.c:288
uint32_t wa_crc32(uint32_t crc, const void *data, size_t n)
Definition wa_zip.c:39
wa_zip_err_t wa_zip_begin(wa_zip_t *z, const wa_fs_t *fs, wa_zip_slot_t *slot, uint64_t slots)
Begin the archive: the first walk, which fills z->plan and a slot for each entry. Nothing is sent; th...
Definition wa_zip.c:431
bool wa_zip_end64(uint64_t entries, uint64_t cd_bytes, uint64_t cd_offset)
Definition wa_zip.c:109
wa_zip_err_t wa_zip_plan(const wa_fs_t *fs, wa_zip_plan_t *out)
Walk the card and add up the archive it makes, keeping nothing per entry: the counts the page shows,...
Definition wa_zip.c:425
void wa_zip_len_add(wa_zip_len_t *l, size_t name_len, uint64_t size)
Definition wa_zip.c:280
void wa_zip_end_early(wa_zip_t *z)
Definition wa_zip.c:454
wa_zip_err_t
Definition wa_zip.h:114
@ WA_ZIP_MEMORY
Definition wa_zip.h:118
@ WA_ZIP_READ
Definition wa_zip.h:117
int32_t wa_zip_next(wa_zip_t *z, uint8_t *buf, uint32_t cap)
The next bytes of the archive.
Definition wa_zip.c:635
#define WA_ZIP_PIECE_MAX
Definition wa_zip.h:95
bool wa_zip_entry64(uint64_t size)
Definition wa_zip.c:104
void wa_dos_time(int64_t t, uint16_t *time, uint16_t *date)
Definition wa_zip.c:61