Oops, forgot that OpenBSD doesn't have ! capability in less. Instead of !echo a
> % and !echo b > %, run
$ echo a > /tmp/test
Press h and q in less to reload the file
$ echo b > /tmp/test
Press h and q in less to reload the file
On Thu, Aug 05, 2021 at 12:37:00AM -0500, user wrote:
> 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
> >
>