[adding bug-gnulib] On 06/16/2015 06:28 AM, Johannes Meixner wrote: > >> From one of our (SUSE) kernel developers > I even got a proposal for a workaround in grep: > > --- a/src/grep.c > +++ b/src/grep.c > @@ -575,6 +575,17 @@ file_textbin (char *buf, size_t size, in > off_t hole_start = lseek (fd, cur, SEEK_HOLE); > if (0 <= hole_start) > { > + /* if hole_start is identical with cur, it's more likely a > buggy > + * lseek(SEEK_HOLE) implementation in kernel filesystem; > + * check whether it really reads a null byte. > + */ > + if (hole_start == cur) > + { > + char c; > + if (read (fd, &c, 1) != 1 || c != 0) > + hole_start = st->st_size; /* no hole */ > + } > +
Sounds like we need to update the gnulib lseek module to work around bugs like this in the wild. -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature