Christian Heckendorf wrote:
> * Michael McConville <mm...@mykolab.com> [24.12.2015. @16:19:03 -0500]:
> 
> > Christian Heckendorf wrote:
> > > A couple of somewhat recent changes in NetBSD's libedit permit
> > > el_gets(3) to accept multibyte characters if the locale supports
> > > it.
> > > 
> > > A notable user of this function is sftp(1) which will allow users to
> > > input multibyte characters, in filenames for example, once the diff
> > > is applied.
> > 
> > I remember someone recently mentioning that libedit is due for an
> > update. Maybe we should try to include this in a full sync.
> > 
> 
> Assuming someone isn't already working on it, I volunteer.

Awesome!

We should wait for people who have been around longer to weigh in. Based
on the commit log, it looks like the past updates were done as single
commits, rather than by replaying upstream changes one or a few at a
time. Hopefully the diff's small enough that we can do that.

> > > Index: eln.c
> > > ===================================================================
> > > RCS file: /cvs/src/lib/libedit/eln.c,v
> > > retrieving revision 1.4
> > > diff -u -p -r1.4 eln.c
> > > --- eln.c 20 May 2014 11:59:03 -0000      1.4
> > > +++ eln.c 24 Dec 2015 19:34:09 -0000
> > > @@ -74,9 +74,18 @@ el_gets(EditLine *el, int *nread)
> > >  {
> > >   const wchar_t *tmp;
> > >  
> > > - el->el_flags |= IGNORE_EXTCHARS;
> > > + if (!(el->el_flags & CHARSET_IS_UTF8))
> > > +         el->el_flags |= IGNORE_EXTCHARS;
> > >   tmp = el_wgets(el, nread);
> > > - el->el_flags &= ~IGNORE_EXTCHARS;
> > > + if (tmp != NULL) {
> > > +         size_t nwread = 0;
> > > +         int i;
> > > +         for (i = 0; i < *nread; i++)
> > > +                 nwread += ct_enc_width(tmp[i]);
> > > +         *nread = (int)nwread;
> > > + }
> > > + if (!(el->el_flags & CHARSET_IS_UTF8))
> > > +         el->el_flags &= ~IGNORE_EXTCHARS;
> > >   return ct_encode_string(tmp, &el->el_lgcyconv);
> > >  }
> > >  
> > > 
> > 

Reply via email to