Bug Reproduction: $ touch /tmp/test $ less /tmp/test Press r Run !echo a > % Run !echo b > % Output: a b
On Fri, Jul 23, 2021 at 11:15:59AM -0500, user wrote: > Less contains a hack to force files of size 0 to become non-seekable in order > to workaround a linux kernel bug. > > When the file becomes non-seekable any further reads from the file are > appended rather than overwriting the original contents of the file. > > diff --git ch.c ch.c > index 1a679767a42..d7c0aa34e90 100644 > --- ch.c > +++ ch.c > @@ -643,19 +643,6 @@ ch_flush(void) > ch_block = 0; /* ch_fpos / LBUFSIZE; */ > ch_offset = 0; /* ch_fpos % LBUFSIZE; */ > > -#if 1 > - /* > - * This is a kludge to workaround a Linux kernel bug: files in > - * /proc have a size of 0 according to fstat() but have readable > - * data. They are sometimes, but not always, seekable. > - * Force them to be non-seekable here. > - */ > - if (ch_fsize == 0) { > - ch_fsize = -1; > - ch_flags &= ~CH_CANSEEK; > - } > -#endif > - > if (lseek(ch_file, (off_t)0, SEEK_SET) == (off_t)-1) { > /* > * Warning only; even if the seek fails for some reason >