I can't really follow what it is trying to do. Won't your change always
call infocmp if TERMCAP is not set instead of searching through the
files?

It looks like currently infocmp is only used if there are no termcap
files at all, not if the entry is missing from the files it does
find. So shouldn't the fallback infocmp call happen much later?
Somewhere around the line:

    croak "Can't find $term" if $entry eq '';


On Thu, Oct 06, 2011 at 04:46:45PM +0200, David Coppa wrote:
> On Sun, Oct 2, 2011 at 8:22 AM, Nicholas Marriott
> <nicholas.marri...@gmail.com> wrote:
> > This seems fine to me, but I'm not a perl guru. Have you talked to
> > upstream?
> 
> I'm having big difficulties trying to report the bug on rt.cpan.org.
> It seems they do all the best to make you feel uncomfortable :(
> 
> Can this be fixed locally at least for now if my patch is correct?
> 
> ciao
> David
> 
> > On Thu, Sep 29, 2011 at 10:49:36AM +0200, David Coppa wrote:
> >> Hi,
> >>
> >> The patch to ncurses nicm@ commited some days ago, exposes a bug
> >> in perl's cpan/Term-Cap/Cap.pm. So, when you use rxvt-unicode on
> >> a recent -current, you will hit this bug with pkg_* tools:
> >>
> >> # pkg_delete -v xclip
> >> failed termcap lookup on rxvt-unicode-256color at 
> >> /usr/libdata/perl5/OpenBSD/ProgressMeter/Term.pm line 125
> >>
> >> If you use a terminal emulator that has a terminfo entry but not
> >> a termcap one (just like x11/rxvt-unicode or x11/st), you should
> >> fall back to the case where perl uses infocmp to fake up a
> >> termcap entry from terminfo, but this never happens because the
> >> logic is flawed.
> >>
> >> Here's a diff:
> >>
> >> Index: cpan/Term-Cap/Cap.pm
> >> ===================================================================
> >> RCS file: /cvs/src/gnu/usr.bin/perl/cpan/Term-Cap/Cap.pm,v
> >> retrieving revision 1.1.1.1
> >> diff -u -p -r1.1.1.1 Cap.pm
> >> --- cpan/Term-Cap/Cap.pm ? ? ?24 Sep 2010 14:49:05 -0000 ? ? ?1.1.1.1
> >> +++ cpan/Term-Cap/Cap.pm ? ? ?29 Sep 2011 08:14:46 -0000
> >> @@ -273,7 +273,7 @@ sub Tgetent
> >>
> >> ? ? ?my @termcap_path = termcap_path();
> >>
> >> - ? ?unless ( @termcap_path || $entry )
> >> + ? ?if ( !@termcap_path || !$entry )
> >> ? ? ?{
> >>
> >> ? ? ? ? ?# last resort--fake up a termcap from terminfo
> >>
> >>
> >> ---
> >> cheers,
> >> David

Reply via email to