if (r < 0)
{
perror("read");
return;
} else if (!r)
return;
int o, i;
for (o = offset ? 0 : len; o < r; ++o)
{
for (i = 0; i <= len; ++i)
if ((buf[o + i] & mask[i]) != value[i])
break;
if (i > len)
{
unsigned long long pos = (unsigned long long)(offset + o - len);
printf("%s: %08llx\n", filename, pos);
if (bytes_before || bytes_after)
dump_context(fd, pos);
}
}