diff options
| author | grunfink <grunfink@noreply.codeberg.org> | 2025-01-15 05:54:48 +0000 |
|---|---|---|
| committer | grunfink <grunfink@noreply.codeberg.org> | 2025-01-15 05:54:48 +0000 |
| commit | a3995f7efffe559c7c2a7106d7ffe9cb8b1e414a (patch) | |
| tree | 9aa977880eb79a8506244d9d7fbaa7f5b6a6f780 /data.c | |
| parent | 0078f9db6892f984434cc34dbbae1ec5c31d1a90 (diff) | |
| parent | b5c5c5cb9e1c728a83596dcc7c4191d012fe1332 (diff) | |
Merge pull request 'Implement faster min_id handling' (#277) from nowster/snac2:fast_min_id into master
Reviewed-on: https://codeberg.org/grunfink/snac2/pulls/277
Diffstat (limited to 'data.c')
| -rw-r--r-- | data.c | 31 |
1 files changed, 31 insertions, 0 deletions
@@ -679,6 +679,37 @@ int index_desc_first(FILE *f, char md5[MD5_HEX_SIZE], int skip) return 1; } +int index_asc_first(FILE *f,char md5[MD5_HEX_SIZE], const char *seek_md5) +/* reads the first entry of an ascending index, starting from a given md5 */ +{ + fseek(f, SEEK_SET, 0); + while (fread(md5, MD5_HEX_SIZE, 1, f)) { + md5[MD5_HEX_SIZE - 1] = '\0'; + if (strcmp(md5,seek_md5) == 0) { + return index_asc_next(f, md5); + } + } + return 0; +} + +int index_asc_next(FILE *f, char md5[MD5_HEX_SIZE]) +/* reads the next entry of an ascending index */ +{ + for (;;) { + /* read an md5 */ + if (!fread(md5, MD5_HEX_SIZE, 1, f)) + return 0; + + /* deleted, skip */ + if (md5[0] != '-') + break; + } + + md5[MD5_HEX_SIZE - 1] = '\0'; + + return 1; +} + xs_list *index_list_desc(const char *fn, int skip, int show) /* returns an index as a list, in reverse order */ |