Hi
This is fine with me.
On Mon, Apr 04, 2011 at 09:04:26PM +0200, Stefan Sperling wrote:
> On Mon, Apr 04, 2011 at 06:44:10PM +0000, Miod Vallat wrote:
> > > > Would it be better maybe to do the check in the Width() macro itself?
> > >
> > > Yes indeed. New diff below.
> >
> > > -#define Width(c) wcwidth(c)
> > > +#define Width(c) (wcwidth(c) == -1 ? 0 : wcwidth(c))
> >
> > But this calls wcwidth() to be invoked twice, which is ugly. As a
> > minimum, make this an inline function.
>
> Oops, already committed. What about this as a follow-up?
>
> Index: chartype.c
> ===================================================================
> RCS file: /cvs/src/lib/libedit/chartype.c,v
> retrieving revision 1.2
> diff -u -p -r1.2 chartype.c
> --- chartype.c 4 Apr 2011 18:48:17 -0000 1.2
> +++ chartype.c 4 Apr 2011 19:01:49 -0000
> @@ -358,3 +358,14 @@ ct_chr_class(Char c)
> else
> return CHTYPE_NONPRINT;
> }
> +
> +inline int
> +Width(Int c)
> +{
> +#ifdef WIDECHAR
> + int w = wcwidth(c);
> + return (w == -1 ? 0 : w);
> +#else
> + return 1;
> +#endif
> +}
> Index: chartype.h
> ===================================================================
> RCS file: /cvs/src/lib/libedit/chartype.h,v
> retrieving revision 1.2
> diff -u -p -r1.2 chartype.h
> --- chartype.h 4 Apr 2011 18:48:17 -0000 1.2
> +++ chartype.h 4 Apr 2011 19:01:25 -0000
> @@ -106,8 +106,6 @@
>
> #define Strtol(p,e,b) wcstol(p,e,b)
>
> -#define Width(c) (wcwidth(c) == -1 ? 0 : wcwidth(c))
> -
> #else /* NARROW */
>
> #define ct_mbtowc error
> @@ -156,10 +154,9 @@
>
> #define Strtol(p,e,b) strtol(p,e,b)
>
> -#define Width(c) 1
> -
> #endif
>
> +int Width(Int c);
>
> #ifdef WIDECHAR
> /*