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
>