On 2/7/2021 3:20 PM, SZEDER Gábor wrote: > On Fri, Feb 05, 2021 at 02:30:47PM +0000, Derrick Stolee via GitGitGadget wrote: >> From: Derrick Stolee <dstolee@xxxxxxxxxxxxx> >> >> Add the capability to read the table of contents, then pair the chunks >> with necessary logic using read_chunk_fn pointers. Callers will be added >> in future changes, but the typical outline will be: >> >> 1. initialize a 'struct chunkfile' with init_chunkfile(NULL). >> 2. call read_table_of_contents(). > > A reader should call read_table_of_contents(), noted. > >> 3. for each chunk to parse, >> a. call pair_chunk() to assign a pointer with the chunk position, or >> b. call read_chunk() to run a callback on the chunk start and size. >> 4. call free_chunkfile() to clear the 'struct chunkfile' data. > > How could a user of this API learn about all chunks present in the > chunkfile, including unrecognized chunks? That could certainly be added (when needed) without modifying the data structures. >> +/* >> + * Initialize a 'struct chunkfile' for writing _or_ reading a file >> + * with the chunk format. >> + * >> + * If writing a file, supply a non-NULL 'struct hashfile *' that will >> + * be used to write. >> + * >> + * If reading a file, then supply the memory-mapped data to the >> + * pair_chunk() or read_chunk() methods, as appropriate. > > And call read_table_of_contents() in between. Yes, you are right. Thanks, -Stolee