the problem with ast tr and [=e=] still remains

On Wed, 5 Jun 2013 02:30:56 +0200 Cedric Blancher wrote:
> On 18 April 2013 13:38, Roland Mainz <[email protected]> wrote:
> > On Wed, Apr 17, 2013 at 2:52 PM, Cedric Blancher
> > <[email protected]> wrote:
> >> Glenn, can you take a look at the posting from freebsd-standards? AST
> >> tr -C doesn't ignore unassigned code points as it should be.
> > [snip]
> >
> > Grumpf... I think you're right...
> > ... the trouble is that not all platforms implement the |iswrune()|
> > function (see 
> > http://developer.apple.com/library/ios/#documentation/system/conceptual/manpages_iphoneos/man3/iswrune.3.html)
> > ...
> >
> > ... AFAIK (based on some testing on a FreeBSD system vs. Solaris) the
> > following |iswrune() emulation code should work (and we need a iffe
> > probe for |iswrune()| and fall-back to the emulation):
> > -- snip --
> > #include <stdlib.h>
> > #include <stdio.h>
> > #include <locale.h>
> > #include <wctype.h>
> >
> > static
> > int iswrune_emu(wint_t c)
> > {
> >         /*
> >          * we test |iswprint()| first because it has
> >          * usually the largest number of members and
> >          * the fastest implementation
> >          */
> >         if (iswprint(c))
> >                 return (1);
> >         if (iswalnum(c) ||
> >                 iswcntrl(c) ||
> >                 iswdigit(c) ||
> >                 iswgraph(c) ||
> >                 iswpunct(c) ||
> >                 iswspace(c) ||
> >                 iswxdigit(c) ||
> >                 iswblank(c) ||
> >                 iswlower(c) ||
> >                 iswupper(c))
> >                 return (1);
> >
> >         return (0);
> > }
> >
> > int main(int ac, char *av[])
> > {
> >         wint_t i;
> >
> >         setlocale(LC_ALL, "");
> >
> >         puts("#start.");
> >
> >         for (i=0x3000 ; i < 0x4000 ; i++)
> >         {
> >                 if (!iswrune_emu(i))
> >                 {
> >                         printf("code point %lx not assigned.\n",
> >                                 (long)i);
> >                 }
> >         }
> >
> >         puts("#done");
> >         return (EXIT_SUCCESS);
> > }
> > -- snip --
> > (note that |iswprint()| is explicitly seperated out to highlight the
> > performace optimisation)
> >
> > Erm... Glenn... what do you think ?
> >
> > ----
> >
> > Bye,
> > Roland
> >
> > P.S.: If we use the emulation then AST regex should (IMO0 still
> > support [:rune:] (through the emulation) ...

> Glenn, are you going to put this fix into AST tr for the next alpha?
> IMO filtering unassigned code points is required for a standard
> conforming tr -C implementation.

> Ced
> -- 
> Cedric Blancher <[email protected]>
> Institute Pasteur

_______________________________________________
ast-developers mailing list
[email protected]
http://lists.research.att.com/mailman/listinfo/ast-developers

Reply via email to