wrap vendored zstd seekable in own file, #2
Dependencies
- [2]
CYS4NENLmove zstdseek files to vendor/zstdseek - [3]
XTKRT6OQformat the codebase - [4]
XJ2PEH74add meson.build - [5]
RIWSVVASchange: decompress the 'contents' with zstd_seekable - [6]
OBKF6SIIchange: decompress the hashed section too - [7]
KEC3WLFNchange: remove debugging lines - [8]
2C2EF2GKmove blake3 files to vendor/blake3 - [9]
Y26WT3ZFchange: decode message, description and timestamp - [10]
KDJUAAALchange: prefix function names with change_ - [11]
NZNIG2ULFix lots of warnings, adjust build flags - [12]
Q7TKZCJPAdd initial support for reading the offsets from a (fixed) change - [13]
2U7P5SFQChange struct names "struct foo -> typedef struct Foo" - [14]
WMFNGOYTchange: reduce printed noise, rework some code - [15]
U3JWO63Ychange: deduplicate some code repetition - [*]
PEUS54XQ
Change contents
- file addition: zstdseek.h[17.1]
#ifndef ANI_ZSTDSEEK_H#define ANI_ZSTDSEEK_H/* Wrapper layer for working with the seekable variant of zstd. */size_t zstdseek_decompress(uint8_t *, size_t, uint8_t *, size_t);#endif - file addition: zstdseek.c[17.1]
#include <stdint.h>#include <stdio.h>#include <zstd.h>#include "zstdseek.h"#include "vendor/zstdseek/zstd_seekable.h"/*** Returns zero if decompression fails, non-zero otherwise.*/size_tzstdseek_decompress(uint8_t *dest, size_t expected_len, uint8_t *compressed,size_t compressed_len){ZSTD_seekable *zs;size_t result;result = 0;zs = ZSTD_seekable_create();if (zs == NULL) {fprintf(stderr, "ZSTD_seekable_create() failed");goto out;}result = ZSTD_seekable_initBuff(zs, compressed, compressed_len);if (ZSTD_isError(result)) {fprintf(stderr, "ZSTD_seekable_init() error: %s\n",ZSTD_getErrorName(result));result = 0;goto outfreezs;}result = ZSTD_seekable_decompress(zs, dest, expected_len, 0);printf("decompress result: %lu\n", result);if (ZSTD_isError(result)) {fprintf(stderr, "ZSTD_seekable_decompress() error: %s\n",ZSTD_getErrorName(result));result = 0;goto outfreezs;}if (result != expected_len) {fprintf(stderr, "decoded %lu bytes, wanted %lu\n", result,expected_len);result = 0;}outfreezs:ZSTD_seekable_free(zs);out:return result;} - replacement in meson.build at line 29
'hunk.c''hunk.c','zstdseek.c', - edit in change.c at line 8
#include <zstd.h> - replacement in change.c at line 11
#include "vendor/zstdseek/zstd_seekable.h"#include "zstdseek.h" - edit in change.c at line 91
ZSTD_seekable *zs; - replacement in change.c at line 112
zs = ZSTD_seekable_create();if (zs == NULL) {fprintf(stderr, "ZSTD_seekable_create() failed");goto errout;}result = zstdseek_decompress(buf, expected_len, compressed, compressed_len);if (result)goto out; - edit in change.c at line 118[5.1752]→[5.827:893](∅→∅),[5.893]→[5.1822:1905](∅→∅),[5.1822]→[5.1822:1905](∅→∅),[5.1905]→[3.841:872](∅→∅),[3.872]→[5.1937:1959](∅→∅),[5.1937]→[5.1937:1959](∅→∅),[5.1959]→[5.894:956](∅→∅),[5.956]→[5.2026:2160](∅→∅),[5.2026]→[5.2026:2160](∅→∅),[5.2160]→[3.873:904](∅→∅),[3.904]→[5.2192:2213](∅→∅),[5.2192]→[5.2192:2213](∅→∅),[5.2213]→[5.957:988](∅→∅),[5.988]→[3.905:984](∅→∅),[3.984]→[5.2330:2351](∅→∅),[5.1064]→[5.2330:2351](∅→∅),[5.2330]→[5.2330:2351](∅→∅),[5.2447]→[5.2447:2521](∅→∅)
result = ZSTD_seekable_initBuff(zs, compressed, compressed_len);if (ZSTD_isError(result)) {fprintf(stderr, "ZSTD_seekable_init() error: %s\n",ZSTD_getErrorName(result));goto outfreezs;}result = ZSTD_seekable_decompress(zs, buf, expected_len, 0);printf("decompress result: %lu\n", result);if (ZSTD_isError(result)) {fprintf(stderr, "ZSTD_seekable_decompress() error: %s\n",ZSTD_getErrorName(result));goto outfreezs;}if (result != expected_len) {fprintf(stderr, "decoded %lu bytes, wanted %lu\n", result,expected_len);goto outfreezs;}ZSTD_seekable_free(zs);goto out;outfreezs:ZSTD_seekable_free(zs);