On Tue, Aug 6, 2024 at 9:22 AM Corinna Vinschen via Cygwin-apps
<cygwin-apps@cygwin.com> wrote:
>
> On Aug  6 00:24, Brian Inglis via Cygwin-apps wrote:
> > On 2024-08-05 16:20, Corinna Vinschen via Cygwin-apps wrote:
> > > Hi Marco,
> > >
> > > Achim made me aware yesterday, that less(1) shows nothing at all when
> > > called on files under /proc.
> > >
> > > Turns out, this only works on Linux, because there's a Linux-specific
> > > kludge in less, checking if a file of size 0 is on the /proc filesystem
> > > and if so, handles it accordingly.
> > >
> > > Unfortunately the Linux kludge won't work for Cygwin without adding new
> > > stuff to Cygwin:
> > >
> > > - A <linux/magic.h> file, which sounds a bit weird, and
> > >
> > > - adding real f_type info to statfs().
> > >
> > > This would make less on /proc files only work starting with Cygwin 3.6,
> > > but there's another, simpler solution working with all recent Cygwin
> > > versions. I created a small patch to less, doing a simple path check
> > > and then handling /proc files just as in the Linux-specific code:
> > >
> > > --- origsrc/less-643/ch.c   2023-07-21 00:43:12.000000000 +0200
> > > +++ src/less-643/ch.c       2024-08-05 22:37:03.103333500 +0200
> > > @@ -719,6 +719,20 @@ public void ch_flush(void)
> > >                     }
> > >             }
> > >     }
> > > +#elif defined (__CYGWIN__)
> > > +   if (ch_fsize == 0)
> > > +   {
> > > +           char proclink[PATH_MAX];
> > > +           char filename[PATH_MAX];
> > > +           snprintf(proclink, sizeof proclink, "/proc/%u/fd/%d",
> > > +                    getpid(), ch_file);
> > > +           if (readlink(proclink, filename, sizeof filename) > 6 &&
> > > +               strncmp (filename, "/proc/", 6) == 0)
> > > +           {
> > > +                           ch_fsize = NULL_POSITION;
> > > +                           ch_flags &= ~CH_CANSEEK;
> > > +           }
> > > +   }
> > >   #endif
> > >     if (lseek(ch_file, (off_t)0, SEEK_SET) == BAD_LSEEK)
> > >
> > > Would it be ok for you to push out a new less release with this or a
> > > similar patch?
> >
> > Current less 661 now handles that unconditionally in cl_flush() from 
> > ch_init():
> >
> >       https://github.com/gwsw/less/blob/master/ch.c#L860
> >
> > I got rid of my ~/.lessfilter to feed 'more /proc/...' to less!
>
> Oh, this is even better, thanks!
>
> Corinna

I will look when I am back.
End on August likely

Reply via email to