Thanks for looking it over.

Fair enough, my initial patch was deliberately intended to be minimal, but
if you would prefer my updating the uses of the libraries I can do that,
although the changes will touch several more files.

I think I have it working on my local git repo, it will take me a bit for
me to convert it into the patch format.

--Joe

On Sun, Jan 4, 2026 at 1:48 PM Eric Sharkey <[email protected]> wrote:

> Finally getting around to looking at this.  The patch includes this bit:
>
> +-    (void)fprintf(fd, "unsigned long %s_crcinit = %d;\n", name, init);
> ++    (void)fprintf(fd, "#include <stdint.h>\n\n");
> ++    if (bits == 16) {
> ++      (void)fprintf(fd, "uint16_t %s_crcinit = %d;\n", name, init);
> ++    } else {
> ++      (void)fprintf(fd, "uint32_t %s_crcinit = %d;\n", name, init);
> ++    }
>
> Which changes the number of bits in the initial value, but this initial
> value is used to initialize the global element defined in crc.c as:
>
> unsigned long crcinit;
>
> e.g., in macunpack/cpt.c:
>
>     crcinit = zip_crcinit;
>
> and macunpack/crc.h still declares these as:
>
> extern unsigned long arc_crcinit;
> extern unsigned long binhex_crcinit;
> extern unsigned long zip_crcinit;
>
> which isn't modified by your patch, so the headers get out of sync with
> the actual code generated by makecrc.  It probably works in practice, but
> this should be cleaned up before being uploaded.
>
> Eric
>
>>

Reply via email to