Re: gmake (perl-5.8.6) fails on z/OS

[email protected] (rajarshi das)
Newsgroups perl.unicode,perl.perl5.porters
Message-ID <[email protected]>

--- Nicholas Clark <[email protected]> wrote:

> On Tue, Jul 26, 2005 at 07:55:21AM -0700, rajarshi
> das wrote:
> 
> > The change is in the fn Perl_utf8n_to_uvuni :
> > -------------------
> > .....
> > ....
> > 
> > #define UTF8_WARN_LONG                           8
> > #define UTF8_WARN_FFFF                           9
> /*
> > Also FFFE. */
> > 
> >     if (curlen == 0 &&
> >         !(flags & UTF8_ALLOW_EMPTY)) {
> >         warning = UTF8_WARN_EMPTY;
> >         goto malformed;
> >     }
> > #ifdef EBCDIC   /* the change */
> >       uv = NATIVE_TO_UTF(uv);
> > #endif          /* the change ends here */
> > 
> >     if (UTF8_IS_INVARIANT(uv)) {
> >         if (retlen)
> >             *retlen = 1;
> >         return (UV) (NATIVE_TO_UTF(*s));
> >     }
> > ....
> > ...
> 
> 
> A context or unified diff with the original source
> would have been clearer,
> at least in part because most people on the list are
> used to it.
Here's the diff :
--- utf8.c      2004-11-17 18:22:09.000000000 +0530
+++ utf8.c.1    2005-07-26 20:50:11.000000000 +0530
@@ -363,7 +363,9 @@ Perl_utf8n_to_uvuni(pTHX_ U8 *s,
STRLEN
        warning = UTF8_WARN_EMPTY;
        goto malformed;
     }
-
+#ifdef EBCDIC
+    uv = NATIVE_TO_UTF(uv);
+#endif
     if (UTF8_IS_INVARIANT(uv)) {
        if (retlen)
            *retlen = 1;


> 
> I don't understand this code, so I don't know why. I
> think that part of the
> reason that you're getting few to no responses to
> your questions is because
> few people understand this code in the first place,
> and none of them
> understand how it interacts with EBCDIC.
> 
> 
> The only thing I can think of is that I notice that
> further down that function
> there is:
> 
> #ifdef EBCDIC
>     uv = NATIVE_TO_UTF(uv);
> #else
>     if ((uv == 0xfe || uv == 0xff) &&
> 	!(flags & UTF8_ALLOW_FE_FF)) {
> 	warning = UTF8_WARN_FE_FF;
> 	goto malformed;
>     }
> #endif
> 
> Is that second call to NATIVE_TO_UTF still present
> in your modified code?
Yes, the second call to NATIVE_TO_UTF is still present
in the modified code. Typically, one wouldnt want to
do a NATIVE_TO_UTF(NATIVE_TO_UTF(uv)) which is what I
am doing due to the second call. But does that make a
difference to miniperl ? 

> 
> Nicholas Clark
> 
Thanks,
Rajarshi.


		
____________________________________________________
Start your day with Yahoo! - make it your home page 
http://www.yahoo.com/r/hs
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.