perl-unicode

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

2005-07-26 08:34:39


--- Nicholas Clark <nick(_at_)ccl4(_dot_)org> 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