The header maps the stdio calls onto zlib's, and fopen there hands back a
gzFile cast to FILE *, so every macro has to cast it back before use. Five did.
ftell, fseek and rewind did not:
#define fclose(a) gzclose((gzFile)(a)) <- casts
#define ftell(a) gztell(a) <- did not
Passing a FILE * where a gzFile is expected was a warning until gcc 14, which
rejects it:
error: passing argument 1 of 'gztell' from incompatible pointer type
Only ftell actually broke the build - fseek and rewind are not reached on this
path - but all three carry the same fault, so all three now cast as the rest of
the file already does.