https://gitlab.com/nbdkit/nbdkit/-/blob/b31859402d1404ba0433...
static inline bool __attribute__((__nonnull__ (1)))
is_zero (const char *buffer, size_t size)
{
size_t i;
const size_t limit = size < 16 ? size : 16;
for (i = 0; i < limit; ++i)
if (buffer[i])
return false;
if (size != limit)
return ! memcmp (buffer, buffer + 16, size - 16);
return true;
}
Example usage for sparsifying while copying disk images: https://gitlab.com/nbdkit/libnbd/-/blob/46fa6ecc7422e830f10d...