Hello! Optional parameter for incremental calculation,useful when deal with large files.
(crc32 STRING [LENGTH [CRC]]) Patch and example in attachment.
example.scm
Description: Binary data
@@ -110,13 +110,14 @@
/* Return the CRC of the bytes buf[0..len-1]. */
static
-uint32_t crc(uint8_t *buf, int len)
+uint32_t crc(uint8_t *buf, int len, uint32_t crc)
{
- return update_crc(0xffffffffL, buf, len) ^ 0xffffffffL;
+ crc = crc ^ 0xffffffffL;
+ return update_crc(crc, buf, len) ^ 0xffffffffL;
}
<#
-(define (crc32 str #!optional (len (##sys#size str)))
- ((foreign-lambda unsigned-integer32 "crc" nonnull-scheme-pointer int) str len) )
+(define (crc32 str #!optional (len (##sys#size str)) (crc 0))
+ ((foreign-lambda unsigned-integer32 "crc" nonnull-scheme-pointer int unsigned-integer32) str len crc) )
) ;module crc_______________________________________________ Chicken-users mailing list [email protected] https://lists.nongnu.org/mailman/listinfo/chicken-users
