tng         2002/12/31 10:42:43

  Modified:    c/src/xercesc/util/Transcoders/IconvFBSD
                        IconvFBSDTransService.cpp
  Log:
  [Bug 15608] IconvLCPTranscoder::transcode() is wrong at wcstombs() usage.
  
  Revision  Changes    Path
  1.7       +577 -569  
xml-xerces/c/src/xercesc/util/Transcoders/IconvFBSD/IconvFBSDTransService.cpp
  
  Index: IconvFBSDTransService.cpp
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/c/src/xercesc/util/Transcoders/IconvFBSD/IconvFBSDTransService.cpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- IconvFBSDTransService.cpp 4 Nov 2002 15:14:34 -0000       1.6
  +++ IconvFBSDTransService.cpp 31 Dec 2002 18:42:43 -0000      1.7
  @@ -56,6 +56,9 @@
   
   /*
    * $Log$
  + * Revision 1.7  2002/12/31 18:42:43  tng
  + * [Bug 15608] IconvLCPTranscoder::transcode() is wrong at wcstombs() usage.
  + *
    * Revision 1.6  2002/11/04 15:14:34  tng
    * C++ Namespace Support.
    *
  @@ -106,22 +109,22 @@
   // Description of encoding schemas, supported by iconv()
   // ---------------------------------------------------------------------------
   typedef struct __IconvFBSDEncoding {
  -    const char*      fSchema;        // schema name
  -    size_t   fUChSize;       // size of the character
  -    unsigned int fUBO;               // byte order, relative to the host
  +    const char*    fSchema;    // schema name
  +    size_t    fUChSize;    // size of the character
  +    unsigned int fUBO;        // byte order, relative to the host
   } IconvFBSDEncoding;
   
  -static const IconvFBSDEncoding       gIconvFBSDEncodings[] = {
  -    { "ucs-2-internal",              2,      LITTLE_ENDIAN },
  -    { "ucs2-internal",               2,      LITTLE_ENDIAN },
  -    { "ucs-4-internal",              4,      LITTLE_ENDIAN },
  -    { "ucs4-internal",               4,      LITTLE_ENDIAN },
  -    { "UNICODELITTLE",               2,      LITTLE_ENDIAN },
  -    { "UNICODEBIG",          2,      BIG_ENDIAN },
  -    { "iso-10646-ucs-2",     4,      BIG_ENDIAN },
  -    { "iso-10646-ucs-4",     4,      BIG_ENDIAN },
  -    /* { "iso-10646-utf-16", 2,      BIG_ENDIAN }, */
  -    { NULL, 0,       0 }
  +static const IconvFBSDEncoding    gIconvFBSDEncodings[] = {
  +    { "ucs-2-internal",        2,    LITTLE_ENDIAN },
  +    { "ucs2-internal",        2,    LITTLE_ENDIAN },
  +    { "ucs-4-internal",        4,    LITTLE_ENDIAN },
  +    { "ucs4-internal",        4,    LITTLE_ENDIAN },
  +    { "UNICODELITTLE",        2,    LITTLE_ENDIAN },
  +    { "UNICODEBIG",        2,    BIG_ENDIAN },
  +    { "iso-10646-ucs-2",    4,    BIG_ENDIAN },
  +    { "iso-10646-ucs-4",    4,    BIG_ENDIAN },
  +    /* { "iso-10646-utf-16",    2,    BIG_ENDIAN }, */
  +    { NULL, 0,     0 }
   };
   
   //--------------------------------------------------
  @@ -130,59 +133,59 @@
   // and encoding schemas.
   
   # if BYTE_ORDER == LITTLE_ENDIAN
  -#  define IXMLCh2WC16(x,w)                   \
  -     *(w) = ((*(x)) >> 8) & 0xFF;            \
  -     *((w)+1) = (*(x)) & 0xFF
  -#  define IWC162XMLCh(w,x)   *(x) = ((*(w)) << 8) | (*((w)+1))
  -#  define XMLCh2WC16(x,w)                    \
  -     *(w) = (*(x)) & 0xFF;                   \
  -     *((w)+1) = ((*(x)) >> 8) & 0xFF
  -#  define WC162XMLCh(w,x)    *(x) = ((*((w)+1)) << 8) | (*(w))
  -
  -#  define IXMLCh2WC32(x,w)                   \
  -     *(w) = ((*(x)) >> 24) & 0xFF;           \
  -     *((w)+1) = ((*(x)) >> 16) & 0xFF;       \
  -     *((w)+2) = ((*(x)) >> 8) & 0xFF;        \
  -     *((w)+3) = (*(x)) & 0xFF
  -#  define IWC322XMLCh(w,x)                           \
  -       *(x) = ((*(w)) << 24) | ((*((w)+1)) << 16) |  \
  -               ((*((w)+2)) << 8) | (*((w)+3))
  -#  define XMLCh2WC32(x,w)                    \
  -     *((w)+3) = ((*(x)) >> 24) & 0xFF;       \
  -     *((w)+2) = ((*(x)) >> 16) & 0xFF;       \
  -     *((w)+1) = ((*(x)) >> 8) & 0xFF;        \
  -     *(w) = (*(x)) & 0xFF
  -#  define WC322XMLCh(w,x)                                    \
  -       *(x) = ((*((w)+3)) << 24) | ((*((w)+2)) << 16) |      \
  -             ((*((w)+1)) << 8) | (*(w))
  +#  define IXMLCh2WC16(x,w)            \
  +    *(w) = ((*(x)) >> 8) & 0xFF;        \
  +    *((w)+1) = (*(x)) & 0xFF
  +#  define IWC162XMLCh(w,x)    *(x) = ((*(w)) << 8) | (*((w)+1))
  +#  define XMLCh2WC16(x,w)            \
  +    *(w) = (*(x)) & 0xFF;            \
  +    *((w)+1) = ((*(x)) >> 8) & 0xFF
  +#  define WC162XMLCh(w,x)    *(x) = ((*((w)+1)) << 8) | (*(w))
  +
  +#  define IXMLCh2WC32(x,w)            \
  +    *(w) = ((*(x)) >> 24) & 0xFF;        \
  +    *((w)+1) = ((*(x)) >> 16) & 0xFF;    \
  +    *((w)+2) = ((*(x)) >> 8) & 0xFF;    \
  +    *((w)+3) = (*(x)) & 0xFF
  +#  define IWC322XMLCh(w,x)                \
  +      *(x) = ((*(w)) << 24) | ((*((w)+1)) << 16) |    \
  +          ((*((w)+2)) << 8) | (*((w)+3))
  +#  define XMLCh2WC32(x,w)            \
  +    *((w)+3) = ((*(x)) >> 24) & 0xFF;    \
  +    *((w)+2) = ((*(x)) >> 16) & 0xFF;    \
  +    *((w)+1) = ((*(x)) >> 8) & 0xFF;    \
  +    *(w) = (*(x)) & 0xFF
  +#  define WC322XMLCh(w,x)                    \
  +      *(x) = ((*((w)+3)) << 24) | ((*((w)+2)) << 16) |    \
  +        ((*((w)+1)) << 8) | (*(w))
   
   # else /* BYTE_ORDER != LITTLE_ENDIAN */
   
  -#  define XMLCh2WC16(x,w)                    \
  -     *(w) = ((*(x)) >> 8) & 0xFF;            \
  -     *((w)+1) = (*(x)) & 0xFF
  -#  define WC162XMLCh(w,x)    *(x) = ((*(w)) << 8) | (*((w)+1))
  -#  define IXMLCh2WC16(x,w)                   \
  -     *(w) = (*(x)) & 0xFF;                   \
  -     *((w)+1) = ((*(x)) >> 8) & 0xFF
  -#  define IWC162XMLCh(w,x)   *(x) = ((*((w)+1)) << 8) | (*(w))
  -
  -#  define XMLCh2WC32(x,w)                    \
  -     *(w) = ((*(x)) >> 24) & 0xFF;           \
  -     *((w)+1) = ((*(x)) >> 16) & 0xFF;       \
  -     *((w)+2) = ((*(x)) >> 8) & 0xFF;        \
  -     *((w)+3) = (*(x)) & 0xFF
  -#  define WC322XMLCh(w,x)                            \
  -       *(x) = ((*(w)) << 24) | ((*((w)+1)) << 16) |  \
  -               ((*((w)+2)) << 8) | (*((w)+3))
  -#  define IXMLCh2WC32(x,w)                   \
  -     *((w)+3) = ((*(x)) >> 24) & 0xFF;       \
  -     *((w)+2) = ((*(x)) >> 16) & 0xFF;       \
  -     *((w)+1) = ((*(x)) >> 8) & 0xFF;        \
  -     *(w) = (*(x)) & 0xFF
  -#  define IWC322XMLCh(w,x)                                   \
  -       *(x) = ((*((w)+3)) << 24) | ((*((w)+2)) << 16) |      \
  -             ((*((w)+1)) << 8) | (*(w))
  +#  define XMLCh2WC16(x,w)            \
  +    *(w) = ((*(x)) >> 8) & 0xFF;        \
  +    *((w)+1) = (*(x)) & 0xFF
  +#  define WC162XMLCh(w,x)    *(x) = ((*(w)) << 8) | (*((w)+1))
  +#  define IXMLCh2WC16(x,w)            \
  +    *(w) = (*(x)) & 0xFF;            \
  +    *((w)+1) = ((*(x)) >> 8) & 0xFF
  +#  define IWC162XMLCh(w,x)    *(x) = ((*((w)+1)) << 8) | (*(w))
  +
  +#  define XMLCh2WC32(x,w)            \
  +    *(w) = ((*(x)) >> 24) & 0xFF;        \
  +    *((w)+1) = ((*(x)) >> 16) & 0xFF;    \
  +    *((w)+2) = ((*(x)) >> 8) & 0xFF;    \
  +    *((w)+3) = (*(x)) & 0xFF
  +#  define WC322XMLCh(w,x)                \
  +      *(x) = ((*(w)) << 24) | ((*((w)+1)) << 16) |    \
  +          ((*((w)+2)) << 8) | (*((w)+3))
  +#  define IXMLCh2WC32(x,w)            \
  +    *((w)+3) = ((*(x)) >> 24) & 0xFF;    \
  +    *((w)+2) = ((*(x)) >> 16) & 0xFF;    \
  +    *((w)+1) = ((*(x)) >> 8) & 0xFF;    \
  +    *(w) = (*(x)) & 0xFF
  +#  define IWC322XMLCh(w,x)                    \
  +      *(x) = ((*((w)+3)) << 24) | ((*((w)+2)) << 16) |    \
  +        ((*((w)+1)) << 8) | (*(w))
   # endif /* BYTE_ORDER == LITTLE_ENDIAN */
   
   #else /* !XML_USE_LIBICONV */
  @@ -209,8 +212,8 @@
   // ---------------------------------------------------------------------------
   //  Local, const data
   // ---------------------------------------------------------------------------
  -static const unsigned int    gTempBuffArraySize = 4096;
  -static const XMLCh           gMyServiceId[] =
  +static const unsigned int    gTempBuffArraySize = 4096;
  +static const XMLCh          gMyServiceId[] =
   {
       chLatin_I, chLatin_C, chLatin_o, chLatin_n, chLatin_v, chNull
   };
  @@ -291,9 +294,9 @@
   static wint_t fbsd_towupper(wint_t ch)
   {
       if (ch <= 0x7F)
  -     return toupper(ch);
  -    unsigned char    buf[16];
  -    wchar_t  wc = wchar_t(ch);
  +    return toupper(ch);
  +    unsigned char    buf[16];
  +    wchar_t    wc = wchar_t(ch);
       wcstombs((char*)buf, &wc, 16);
       return toupper(*buf);
   }
  @@ -301,9 +304,9 @@
   static wint_t fbsd_towlower(wint_t ch)
   {
       if (ch <= 0x7F)
  -     return tolower(ch);
  -    unsigned char    buf[16];
  -    wchar_t  wc = wchar_t(ch);
  +    return tolower(ch);
  +    unsigned char    buf[16];
  +    wchar_t    wc = wchar_t(ch);
       wcstombs((char *)buf, &wc, 16);
       return tolower(*buf);
   }
  @@ -314,8 +317,8 @@
   
   #include <xercesc/util/Mutexes.hpp>
   // Iconv() access syncronization point
  -static XMLMutex      *gIconvMutex = NULL;
  -#  define ICONV_LOCK XMLMutexLock lockConverter(gIconvMutex);
  +static XMLMutex    *gIconvMutex = NULL;
  +#  define ICONV_LOCK    XMLMutexLock lockConverter(gIconvMutex);
   
   #else /* APP_NO_THREADS */
   
  @@ -334,15 +337,15 @@
   {
   }
   
  -IconvFBSDCD::IconvFBSDCD ( iconv_t   cd_from,
  -                        iconv_t      cd_to,
  -                        size_t       uchsize,
  -                        unsigned int ubo )
  +IconvFBSDCD::IconvFBSDCD ( iconv_t    cd_from,
  +               iconv_t    cd_to,
  +               size_t    uchsize,
  +               unsigned int    ubo )
       : fUChSize(uchsize), fUBO(ubo),
         fCDTo(cd_to), fCDFrom(cd_from)
   {
       if (fCDFrom == (iconv_t) -1 || fCDTo == (iconv_t) -1) {
  -     XMLPlatformUtils::panic (XMLPlatformUtils::Panic_NoTransService);
  +    XMLPlatformUtils::panic (XMLPlatformUtils::Panic_NoTransService);
       }
   }
   
  @@ -351,66 +354,66 @@
   }
   
   // Convert "native unicode" character into XMLCh
  -void IconvFBSDCD::mbcToXMLCh (const char *mbc, XMLCh *toRet) const
  +void    IconvFBSDCD::mbcToXMLCh (const char *mbc, XMLCh *toRet) const
   {
       if (fUBO == LITTLE_ENDIAN) {
  -     if (fUChSize == sizeof(XMLCh))
  -         *toRet = *((XMLCh*) mbc);
  -     else if (fUChSize == 2) {
  -         WC162XMLCh( mbc, toRet );
  -     } else {
  -         WC322XMLCh( mbc, toRet );
  -     }
  +        if (fUChSize == sizeof(XMLCh))
  +            *toRet = *((XMLCh*) mbc);
  +        else if (fUChSize == 2) {
  +            WC162XMLCh( mbc, toRet );
  +        } else {
  +            WC322XMLCh( mbc, toRet );
  +        }
       } else {
  -     if (fUChSize == 2) {
  -         IWC162XMLCh( mbc, toRet );
  -     } else {
  -         IWC322XMLCh( mbc, toRet );
  -     }
  +        if (fUChSize == 2) {
  +            IWC162XMLCh( mbc, toRet );
  +        } else {
  +            IWC322XMLCh( mbc, toRet );
  +        }
       }
   }
   
   // Convert XMLCh into "native unicode" character
  -void IconvFBSDCD::xmlChToMbc (XMLCh xch, char *mbc) const
  +void    IconvFBSDCD::xmlChToMbc (XMLCh xch, char *mbc) const
   {
       if (fUBO == LITTLE_ENDIAN) {
  -     if (fUChSize == sizeof(XMLCh)) {
  -         memcpy (mbc, &xch, fUChSize);
  -         return;
  -     }
  -     if (fUChSize == 2) {
  -         XMLCh2WC16( &xch, mbc );
  -     } else {
  -         XMLCh2WC32( &xch, mbc );
  -     }
  +        if (fUChSize == sizeof(XMLCh)) {
  +            memcpy (mbc, &xch, fUChSize);
  +            return;
  +        }
  +        if (fUChSize == 2) {
  +            XMLCh2WC16( &xch, mbc );
  +        } else {
  +            XMLCh2WC32( &xch, mbc );
  +        }
       } else {
  -     if (fUChSize == 2) {
  -         IXMLCh2WC16( &xch, mbc );
  -     } else {
  -         IXMLCh2WC32( &xch, mbc );
  -     }
  +        if (fUChSize == 2) {
  +            IXMLCh2WC16( &xch, mbc );
  +        } else {
  +            IXMLCh2WC32( &xch, mbc );
  +        }
       }
   }
   
   // Return uppercase equivalent for XMLCh
  -XMLCh        IconvFBSDCD::toUpper (const XMLCh ch) const
  +XMLCh    IconvFBSDCD::toUpper (const XMLCh ch) const
   {
       if (ch <= 0x7F)
  -     return toupper(ch);
  +        return toupper(ch);
   
  -    char     wcbuf[fUChSize * 2];
  +    char    wcbuf[fUChSize * 2];
       xmlChToMbc (ch, wcbuf);
   
  -    char     tmpArr[4];
  -    char*    ptr = wcbuf;
  -    size_t   len = fUChSize;
  -    char     *pTmpArr = tmpArr;
  -    size_t   bLen = 2;
  +    char    tmpArr[4];
  +    char*    ptr = wcbuf;
  +    size_t    len = fUChSize;
  +    char    *pTmpArr = tmpArr;
  +    size_t    bLen = 2;
   
       ICONV_LOCK;
       if (::iconv (fCDTo, (const char**) &ptr, &len,
  -              &pTmpArr, &bLen) == (size_t) -1)
  -     return 0;
  +         &pTmpArr, &bLen) == (size_t) -1)
  +    return 0;
       tmpArr[1] = toupper (*((unsigned char *)tmpArr));
       *tmpArr = tmpArr[1];
       len = 1;
  @@ -418,31 +421,31 @@
       bLen = fUChSize;
       ptr = tmpArr;
       if (::iconv (fCDFrom, (const char **)&ptr, &len,
  -              &pTmpArr, &bLen) == (size_t) -1)
  -     return 0;
  +         &pTmpArr, &bLen) == (size_t) -1)
  +    return 0;
       mbcToXMLCh (wcbuf, (XMLCh*) &ch);
       return ch;
   }
   
   // Return lowercase equivalent for XMLCh
  -XMLCh        IconvFBSDCD::toLower (const XMLCh ch) const
  +XMLCh    IconvFBSDCD::toLower (const XMLCh ch) const
   {
       if (ch <= 0x7F)
  -     return tolower(ch);
  +        return tolower(ch);
   
  -    char     wcbuf[fUChSize * 2];
  +    char    wcbuf[fUChSize * 2];
       xmlChToMbc (ch, wcbuf);
   
  -    char     tmpArr[4];
  -    char*    ptr = wcbuf;
  -    size_t   len = fUChSize;
  -    char     *pTmpArr = tmpArr;
  -    size_t   bLen = 2;
  +    char    tmpArr[4];
  +    char*    ptr = wcbuf;
  +    size_t    len = fUChSize;
  +    char    *pTmpArr = tmpArr;
  +    size_t    bLen = 2;
   
       ICONV_LOCK;
       if (::iconv (fCDTo, (const char**) &ptr, &len,
  -              &pTmpArr, &bLen) == (size_t) -1)
  -     return 0;
  +         &pTmpArr, &bLen) == (size_t) -1)
  +    return 0;
       tmpArr[1] = tolower (*((unsigned char*)tmpArr));
       *tmpArr = tmpArr[1];
       len = 1;
  @@ -450,130 +453,130 @@
       bLen = fUChSize;
       ptr = tmpArr;
       if (::iconv (fCDFrom, (const char **)&ptr, &len,
  -              &pTmpArr, &bLen) == (size_t) -1)
  -     return 0;
  +         &pTmpArr, &bLen) == (size_t) -1)
  +    return 0;
       mbcToXMLCh (wcbuf, (XMLCh*) &ch);
       return ch;
   }
   
   // Check if passed characters belongs to the :space: class
  -bool IconvFBSDCD::isSpace(const XMLCh toCheck) const
  +bool    IconvFBSDCD::isSpace(const XMLCh toCheck) const
   {
       if (toCheck <= 0x7F)
  -     return isspace(toCheck);
  +        return isspace(toCheck);
   
  -    char     wcbuf[fUChSize * 2];
  -    char     tmpArr[4];
  +    char    wcbuf[fUChSize * 2];
  +    char    tmpArr[4];
   
       xmlChToMbc (toCheck, wcbuf);
  -    char*    ptr = wcbuf;
  -    size_t   len = fUChSize;
  -    char     *pTmpArr = tmpArr;
  -    size_t   bLen = 2;
  +    char*    ptr = wcbuf;
  +    size_t    len = fUChSize;
  +    char    *pTmpArr = tmpArr;
  +    size_t    bLen = 2;
   
       {
  -     ICONV_LOCK;
  -     if (::iconv (fCDTo, (const char**) &ptr, &len,
  -                  &pTmpArr, &bLen) == (size_t) -1)
  -         return 0;
  +        ICONV_LOCK;
  +        if (::iconv (fCDTo, (const char**) &ptr, &len,
  +                 &pTmpArr, &bLen) == (size_t) -1)
  +            return 0;
       }
       return isspace(*tmpArr);
   }
   
   // Fill array of XMLCh characters with data, supplyed in the array
   // of "native unicode" characters.
  -XMLCh*       IconvFBSDCD::mbsToXML
  +XMLCh*    IconvFBSDCD::mbsToXML
   (
  -    const char*              mbs_str
  -    ,          size_t        mbs_cnt
  -    ,          XMLCh*        xml_str
  -    ,          size_t        xml_cnt
  +    const char*        mbs_str
  +    ,       size_t    mbs_cnt
  +    ,       XMLCh*    xml_str
  +    ,       size_t    xml_cnt
   ) const
   {
       if (mbs_str == NULL || mbs_cnt == 0 || xml_str == NULL || xml_cnt == 0)
  -     return NULL;
  -    size_t   cnt = (mbs_cnt < xml_cnt) ? mbs_cnt : xml_cnt;
  +        return NULL;
  +    size_t    cnt = (mbs_cnt < xml_cnt) ? mbs_cnt : xml_cnt;
       if (fUBO == LITTLE_ENDIAN) {
  -     if (fUChSize == sizeof(XMLCh)) {
  -         // null-transformation
  -         memcpy (xml_str, mbs_str, fUChSize * cnt);
  -         return xml_str;
  -     }
  -     if (fUChSize == 2)
  -         for (size_t i = 0; i < cnt; i++, mbs_str += fUChSize) {
  -             WC162XMLCh( mbs_str, xml_str + i);
  -         }
  -     else
  -         for (size_t i = 0; i < cnt; i++, mbs_str += fUChSize) {
  -             WC322XMLCh( mbs_str, xml_str + i );
  -         }
  +    if (fUChSize == sizeof(XMLCh)) {
  +        // null-transformation
  +        memcpy (xml_str, mbs_str, fUChSize * cnt);
  +        return xml_str;
  +    }
  +    if (fUChSize == 2)
  +        for (size_t i = 0; i < cnt; i++, mbs_str += fUChSize) {
  +            WC162XMLCh( mbs_str, xml_str + i);
  +        }
  +    else
  +        for (size_t i = 0; i < cnt; i++, mbs_str += fUChSize) {
  +            WC322XMLCh( mbs_str, xml_str + i );
  +        }
       } else {
  -     if (fUChSize == 2)
  -         for (size_t i = 0; i < cnt; i++, mbs_str += fUChSize) {
  -             IWC162XMLCh( mbs_str, xml_str + i );
  -         }
  -     else
  -         for (size_t i = 0; i < cnt; i++, mbs_str += fUChSize) {
  -             IWC322XMLCh( mbs_str, xml_str + i );
  -         }
  +        if (fUChSize == 2)
  +            for (size_t i = 0; i < cnt; i++, mbs_str += fUChSize) {
  +                IWC162XMLCh( mbs_str, xml_str + i );
  +            }
  +        else
  +            for (size_t i = 0; i < cnt; i++, mbs_str += fUChSize) {
  +                IWC322XMLCh( mbs_str, xml_str + i );
  +            }
       }
       return xml_str;
   }
   
   // Fill array of "native unicode" characters with data, supplyed
   // in the array of XMLCh characters.
  -char*        IconvFBSDCD::xmlToMbs
  +char*    IconvFBSDCD::xmlToMbs
   (
  -    const XMLCh*     xml_str
  -    ,          size_t        xml_cnt
  -    ,          char*         mbs_str
  -    ,          size_t        mbs_cnt
  +    const XMLCh*    xml_str
  +    ,      size_t    xml_cnt
  +    ,      char*        mbs_str
  +    ,      size_t    mbs_cnt
   ) const
   {
       if (mbs_str == NULL || mbs_cnt == 0 || xml_str == NULL || xml_cnt == 0)
  -     return NULL;
  -    size_t   cnt = (mbs_cnt < xml_cnt) ? mbs_cnt : xml_cnt;
  -    char     *toReturn = mbs_str;
  +        return NULL;
  +    size_t    cnt = (mbs_cnt < xml_cnt) ? mbs_cnt : xml_cnt;
  +    char    *toReturn = mbs_str;
       if (fUBO == LITTLE_ENDIAN) {
  -     if (fUChSize == sizeof(XMLCh)) {
  -         // null-transformation
  -         memcpy (mbs_str, xml_str, fUChSize * cnt);
  -         return toReturn;
  -     }
  -     if (fUChSize == 2)
  -         for (size_t i = 0; i < cnt; i++, mbs_str += fUChSize, xml_str++) {
  -             XMLCh2WC16( xml_str, mbs_str );
  -         }
  -     else
  -         for (size_t i = 0; i < cnt; i++, mbs_str += fUChSize, xml_str++) {
  -             XMLCh2WC32( xml_str, mbs_str );
  -         }
  +        if (fUChSize == sizeof(XMLCh)) {
  +            // null-transformation
  +            memcpy (mbs_str, xml_str, fUChSize * cnt);
  +            return toReturn;
  +        }
  +        if (fUChSize == 2)
  +            for (size_t i = 0; i < cnt; i++, mbs_str += fUChSize, xml_str++) {
  +                XMLCh2WC16( xml_str, mbs_str );
  +            }
  +        else
  +            for (size_t i = 0; i < cnt; i++, mbs_str += fUChSize, xml_str++) {
  +                XMLCh2WC32( xml_str, mbs_str );
  +            }
       } else {
  -     if (fUChSize == 2)
  -         for (size_t i = 0; i < cnt; i++, mbs_str += fUChSize, xml_str++) {
  -             IXMLCh2WC16( xml_str, mbs_str );
  -         }
  -     else
  -         for (size_t i = 0; i < cnt; i++, mbs_str += fUChSize, xml_str++) {
  -             IXMLCh2WC32( xml_str, mbs_str );
  -         }
  +        if (fUChSize == 2)
  +            for (size_t i = 0; i < cnt; i++, mbs_str += fUChSize, xml_str++) {
  +                IXMLCh2WC16( xml_str, mbs_str );
  +            }
  +        else
  +            for (size_t i = 0; i < cnt; i++, mbs_str += fUChSize, xml_str++) {
  +                IXMLCh2WC32( xml_str, mbs_str );
  +            }
       }
       return toReturn;
   }
   
  -size_t       IconvFBSDCD::iconvFrom ( const char     *fromPtr,
  -                              size_t         *fromLen,
  -                              char           **toPtr,
  -                              size_t         toLen ) const
  +size_t    IconvFBSDCD::iconvFrom ( const char    *fromPtr,
  +                 size_t        *fromLen,
  +                 char        **toPtr,
  +                 size_t        toLen ) const
   {
       ICONV_LOCK;
       return ::iconv (fCDFrom, &fromPtr, fromLen, toPtr, &toLen);
   }
   
  -size_t       IconvFBSDCD::iconvTo ( const char       *fromPtr,
  -                            size_t           *fromLen,
  -                            char             **toPtr,
  -                            size_t           toLen ) const
  +size_t    IconvFBSDCD::iconvTo ( const char    *fromPtr,
  +                   size_t        *fromLen,
  +                   char        **toPtr,
  +                   size_t        toLen ) const
   {
       ICONV_LOCK;
       return ::iconv (fCDTo, &fromPtr, fromLen, toPtr, &toLen);
  @@ -595,72 +598,72 @@
   #if !defined(APP_NO_THREADS)
       // Create global lock object
       if (gIconvMutex == NULL) {
  -     gIconvMutex = new XMLMutex;
  -     if (gIconvMutex == NULL)
  -         XMLPlatformUtils::panic (XMLPlatformUtils::Panic_NoTransService);
  +        gIconvMutex = new XMLMutex;
  +        if (gIconvMutex == NULL)
  +            XMLPlatformUtils::panic (XMLPlatformUtils::Panic_NoTransService);
       }
   #endif
   
       // Try to obtain local (host) characterset through the environment
  -    char*    fLocalCP = setlocale (LC_CTYPE, "");
  +    char*    fLocalCP = setlocale (LC_CTYPE, "");
       if (fLocalCP == NULL)
  -     fLocalCP = "iso-8859-1";        // fallback locale
  +        fLocalCP = "iso-8859-1";    // fallback locale
       else {
  -     char    *ptr = strchr (fLocalCP, '.');
  -     if (ptr == NULL)
  -         fLocalCP = "iso-8859-1";    // fallback locale
  -     else
  -         fLocalCP = ptr + 1;
  +        char    *ptr = strchr (fLocalCP, '.');
  +        if (ptr == NULL)
  +            fLocalCP = "iso-8859-1";    // fallback locale
  +        else
  +            fLocalCP = ptr + 1;
       }
   
       // Select the native unicode characters encoding schema
  -    const IconvFBSDEncoding  *eptr;
  +    const IconvFBSDEncoding    *eptr;
       // first - try to use the schema with character size, equil to XMLCh
       for (eptr = gIconvFBSDEncodings; eptr->fSchema; eptr++) {
  -     if (eptr->fUChSize != sizeof(XMLCh))
  -         continue;
  -     ICONV_LOCK;
  -     // try to create conversion descriptor
  -     iconv_t cd_to = iconv_open(fLocalCP, eptr->fSchema);
  -     if (cd_to == (iconv_t)-1)
  -         continue;
  -     iconv_t cd_from = iconv_open(eptr->fSchema, fLocalCP);
  -     if (cd_to == (iconv_t)-1) {
  -         iconv_close (cd_to);
  -         continue;
  -     }
  -     // got it
  -     setUChSize(eptr->fUChSize);
  -     setUBO(eptr->fUBO);
  -     setCDTo(cd_to);
  -     setCDFrom(cd_from);
  -     fUnicodeCP = eptr->fSchema;
  -     break;
  +        if (eptr->fUChSize != sizeof(XMLCh))
  +            continue;
  +        ICONV_LOCK;
  +        // try to create conversion descriptor
  +        iconv_t    cd_to = iconv_open(fLocalCP, eptr->fSchema);
  +        if (cd_to == (iconv_t)-1)
  +            continue;
  +        iconv_t    cd_from = iconv_open(eptr->fSchema, fLocalCP);
  +        if (cd_to == (iconv_t)-1) {
  +            iconv_close (cd_to);
  +            continue;
  +        }
  +        // got it
  +        setUChSize(eptr->fUChSize);
  +        setUBO(eptr->fUBO);
  +        setCDTo(cd_to);
  +        setCDFrom(cd_from);
  +        fUnicodeCP = eptr->fSchema;
  +        break;
       }
       if (fUnicodeCP == NULL)
  -     // try to use any known schema
  -     for (eptr = gIconvFBSDEncodings; eptr->fSchema; eptr++) {
  -         // try to create conversion descriptor
  -         ICONV_LOCK;
  -         iconv_t     cd_to = iconv_open(fLocalCP, eptr->fSchema);
  -         if (cd_to == (iconv_t)-1)
  -             continue;
  -         iconv_t     cd_from = iconv_open(eptr->fSchema, fLocalCP);
  -         if (cd_to == (iconv_t)-1) {
  -             iconv_close (cd_to);
  -             continue;
  -         }
  -         // got it
  -         setUChSize(eptr->fUChSize);
  -         setUBO(eptr->fUBO);
  -         setCDTo(cd_to);
  -         setCDFrom(cd_from);
  -         fUnicodeCP = eptr->fSchema;
  -         break;
  -     }
  +        // try to use any known schema
  +        for (eptr = gIconvFBSDEncodings; eptr->fSchema; eptr++) {
  +            // try to create conversion descriptor
  +            ICONV_LOCK;
  +            iconv_t    cd_to = iconv_open(fLocalCP, eptr->fSchema);
  +            if (cd_to == (iconv_t)-1)
  +            continue;
  +            iconv_t    cd_from = iconv_open(eptr->fSchema, fLocalCP);
  +            if (cd_to == (iconv_t)-1) {
  +            iconv_close (cd_to);
  +            continue;
  +        }
  +        // got it
  +        setUChSize(eptr->fUChSize);
  +        setUBO(eptr->fUBO);
  +        setCDTo(cd_to);
  +        setCDFrom(cd_from);
  +        fUnicodeCP = eptr->fSchema;
  +        break;
  +    }
   
       if (fUnicodeCP == NULL || cdTo() == (iconv_t)-1 || cdFrom() == (iconv_t)-1)
  -     XMLPlatformUtils::panic (XMLPlatformUtils::Panic_NoTransService);
  +    XMLPlatformUtils::panic (XMLPlatformUtils::Panic_NoTransService);
   }
   #endif /* XML_USE_LIBICONV */
   
  @@ -668,12 +671,12 @@
   {
   #ifdef XML_USE_LIBICONV
       if (cdTo() != (iconv_t) -1) {
  -     iconv_close (cdTo());
  -     setCDTo ((iconv_t)-1);
  +        iconv_close (cdTo());
  +        setCDTo ((iconv_t)-1);
       }
       if (cdFrom() != (iconv_t) -1) {
  -     iconv_close (cdFrom());
  -     setCDFrom ((iconv_t)-1);
  +        iconv_close (cdFrom());
  +        setCDFrom ((iconv_t)-1);
       }
   #endif /* XML_USE_LIBICONV */
   }
  @@ -681,8 +684,8 @@
   // ---------------------------------------------------------------------------
   //  IconvFBSDTransService: The virtual transcoding service API
   // ---------------------------------------------------------------------------
  -int IconvFBSDTransService::compareIString(const XMLCh* const comp1
  -                                        , const XMLCh* const comp2)
  +int IconvFBSDTransService::compareIString(const XMLCh* const    comp1
  +                                        , const XMLCh* const    comp2)
   {
       const XMLCh* cptr1 = comp1;
       const XMLCh* cptr2 = comp2;
  @@ -701,13 +704,13 @@
   
   #else /* XML_USE_LIBICONV */
   
  -    XMLCh    c1 = toUpper(*cptr1);
  -    XMLCh    c2 = toUpper(*cptr2);
  +    XMLCh    c1 = toUpper(*cptr1);
  +    XMLCh    c2 = toUpper(*cptr2);
       while ( (*cptr1 != 0) && (*cptr2 != 0) ) {
           if (c1 != c2)
               break;
  -     c1 = toUpper(*(++cptr1));
  -     c2 = toUpper(*(++cptr2));
  +        c1 = toUpper(*(++cptr1));
  +        c2 = toUpper(*(++cptr2));
   
       }
       return (int) ( c1 - c2 );
  @@ -716,9 +719,9 @@
   }
   
   
  -int IconvFBSDTransService::compareNIString(const XMLCh* const        comp1
  -                                         , const XMLCh* const        comp2
  -                                         , const unsigned int        maxChars)
  +int IconvFBSDTransService::compareNIString(const XMLCh* const    comp1
  +                                         , const XMLCh* const    comp2
  +                                         , const unsigned int    maxChars)
   {
       unsigned int  n = 0;
       const XMLCh* cptr1 = comp1;
  @@ -753,10 +756,10 @@
   
       while (true && maxChars)
       {
  -     XMLCh   c1 = toUpper(*cptr1);
  -     XMLCh   c2 = toUpper(*cptr2);
  +        XMLCh    c1 = toUpper(*cptr1);
  +        XMLCh    c2 = toUpper(*cptr2);
   
  -     if (c1 != c2)
  +        if (c1 != c2)
               return (int) (c1 - c2);
   
           // If either ended, then both ended, so equal
  @@ -790,9 +793,9 @@
   {
   #ifndef XML_USE_LIBICONV
       if (toCheck <= 0x7F)
  -     return isspace(toCheck);
  +        return isspace(toCheck);
       char buf[16];
  -    wchar_t  wc = wchar_t(toCheck);
  +    wchar_t    wc = wchar_t(toCheck);
       wcstombs( buf, &wc, 16 );
       return (isspace(*buf) != 0);
   #else /* XML_USE_LIBICONV */
  @@ -822,9 +825,9 @@
   XMLTranscoder*
   IconvFBSDTransService::makeNewXMLTranscoder
   (
  -    const    XMLCh* const    encodingName
  -    ,        XMLTransService::Codes& resValue
  -    , const  unsigned int    blockSize
  +    const    XMLCh* const    encodingName
  +    ,    XMLTransService::Codes&    resValue
  +    , const     unsigned int    blockSize
   )
   {
   #ifndef XML_USE_LIBICONV
  @@ -841,37 +844,37 @@
   #else /* XML_USE_LIBICONV */
   
       resValue = XMLTransService::UnsupportedEncoding;
  -    IconvFBSDTranscoder      *newTranscoder = NULL;
  +    IconvFBSDTranscoder    *newTranscoder = NULL;
   
  -    char     *encLocal = XMLString::transcode(encodingName);
  -    iconv_t  cd_from, cd_to;
  +    char    *encLocal = XMLString::transcode(encodingName);
  +    iconv_t    cd_from, cd_to;
   
       {
  -     ICONV_LOCK;
  -     cd_from = iconv_open (fUnicodeCP, encLocal);
  -     if (cd_from == (iconv_t)-1) {
  -         resValue = XMLTransService::SupportFilesNotFound;
  -         if (encLocal)
  -             delete [] encLocal;
  -         return NULL;
  -     }
  -     cd_to = iconv_open (encLocal, fUnicodeCP);
  -     if (cd_to == (iconv_t)-1) {
  -         resValue = XMLTransService::SupportFilesNotFound;
  -         iconv_close (cd_from);
  -         if (encLocal)
  -             delete [] encLocal;
  -         return NULL;
  -     }
  -     newTranscoder = new IconvFBSDTranscoder (encodingName,
  -                                              blockSize,
  -                                              cd_from, cd_to,
  -                                              uChSize(), UBO());
  +        ICONV_LOCK;
  +        cd_from = iconv_open (fUnicodeCP, encLocal);
  +        if (cd_from == (iconv_t)-1) {
  +            resValue = XMLTransService::SupportFilesNotFound;
  +            if (encLocal)
  +            delete [] encLocal;
  +            return NULL;
  +        }
  +        cd_to = iconv_open (encLocal, fUnicodeCP);
  +        if (cd_to == (iconv_t)-1) {
  +            resValue = XMLTransService::SupportFilesNotFound;
  +            iconv_close (cd_from);
  +            if (encLocal)
  +            delete [] encLocal;
  +            return NULL;
  +        }
  +        newTranscoder = new IconvFBSDTranscoder (encodingName,
  +                             blockSize,
  +                             cd_from, cd_to,
  +                             uChSize(), UBO());
       }
       if (newTranscoder)
  -     resValue = XMLTransService::Ok;
  +        resValue = XMLTransService::Ok;
       if (encLocal)
  -     delete [] encLocal;
  +        delete [] encLocal;
       return newTranscoder;
   
   #endif /* !XML_USE_LIBICONV */
  @@ -885,7 +888,7 @@
   #ifndef XML_USE_LIBICONV
           *outPtr = fbsd_towupper(*outPtr);
   #else /* XML_USE_LIBICONV */
  -     *outPtr = toUpper(*outPtr);
  +        *outPtr = toUpper(*outPtr);
   #endif /* !XML_USE_LIBICONV */
           outPtr++;
       }
  @@ -899,7 +902,7 @@
   #ifndef XML_USE_LIBICONV
           *outPtr = fbsd_towlower(*outPtr);
   #else /* XML_USE_LIBICONV */
  -     *outPtr = toLower(*outPtr);
  +        *outPtr = toLower(*outPtr);
   #endif /* !XML_USE_LIBICONV */
           outPtr++;
       }
  @@ -928,21 +931,21 @@
       if (len == 0)
           return 0;
   
  -    char     tmpWideArr[gTempBuffArraySize];
  -    size_t   totalLen = 0;
  +    char    tmpWideArr[gTempBuffArraySize];
  +    size_t    totalLen = 0;
   
       for (;;) {
  -     char            *pTmpArr = tmpWideArr;
  -     const char      *ptr = srcText + srcLen - len;
  -     size_t  rc = iconvFrom(ptr, &len, &pTmpArr, gTempBuffArraySize);
  -     if (rc == (size_t) -1 && errno != E2BIG) {
  -         ThrowXML(TranscodingException, XMLExcepts::Trans_BadSrcSeq);
  -         /* return 0; */
  -     }
  -     rc = pTmpArr - (char *) tmpWideArr;
  -     totalLen += rc;
  -     if (rc == 0 || len == 0)
  -         break;
  +        char        *pTmpArr = tmpWideArr;
  +        const char    *ptr = srcText + srcLen - len;
  +        size_t    rc = iconvFrom(ptr, &len, &pTmpArr, gTempBuffArraySize);
  +        if (rc == (size_t) -1 && errno != E2BIG) {
  +            ThrowXML(TranscodingException, XMLExcepts::Trans_BadSrcSeq);
  +            /* return 0; */
  +        }
  +        rc = pTmpArr - (char *) tmpWideArr;
  +        totalLen += rc;
  +        if (rc == 0 || len == 0)
  +            break;
       }
       return totalLen / uChSize();
   
  @@ -977,50 +980,50 @@
       const unsigned int retVal = fbsd_wcstombs(NULL, wideCharBuf, 0);
   
       if (allocatedArray)
  -     delete [] allocatedArray;
  +    delete [] allocatedArray;
       if (retVal == ~0)
           return 0;
       return retVal;
   
   #else /* XML_USE_LIBICONV */
   
  -    char     tmpWBuff[gTempBuffArraySize];
  -    char     *wBuf = 0;
  -    char     *wBufPtr = 0;
  +    char    tmpWBuff[gTempBuffArraySize];
  +    char    *wBuf = 0;
  +    char    *wBufPtr = 0;
       size_t      len = wLent * uChSize();
       if (uChSize() != sizeof(XMLCh) || UBO() != BYTE_ORDER) {
  -     if (len > gTempBuffArraySize) {
  -         wBufPtr = new char[len];
  -         if (wBufPtr == NULL)
  -             return 0;
  -         wBuf = wBufPtr;
  -     } else
  -         wBuf = tmpWBuff;
  -     xmlToMbs (srcText, wLent, wBuf, wLent);
  +        if (len > gTempBuffArraySize) {
  +            wBufPtr = new char[len];
  +            if (wBufPtr == NULL)
  +            return 0;
  +            wBuf = wBufPtr;
  +        } else
  +            wBuf = tmpWBuff;
  +        xmlToMbs (srcText, wLent, wBuf, wLent);
       } else
  -     wBuf = (char *) srcText;
  +    wBuf = (char *) srcText;
   
  -    char     tmpBuff[gTempBuffArraySize];
  -    size_t   totalLen = 0;
  -    char     *srcEnd = wBuf + wLent * uChSize();
  +    char    tmpBuff[gTempBuffArraySize];
  +    size_t    totalLen = 0;
  +    char    *srcEnd = wBuf + wLent * uChSize();
   
       for (;;) {
  -     char            *pTmpArr = tmpBuff;
  -     const char      *ptr = srcEnd - len;
  -     size_t  rc = iconvTo(ptr, &len, &pTmpArr, gTempBuffArraySize);
  -     if (rc == (size_t) -1 && errno != E2BIG) {
  -         if (wBufPtr)
  -             delete [] wBufPtr;
  -         ThrowXML(TranscodingException, XMLExcepts::Trans_BadSrcSeq);
  -         /* return 0; */
  -     }
  -     rc = pTmpArr - tmpBuff;
  -     totalLen += rc;
  -     if (rc == 0 || len == 0)
  -         break;
  +        char        *pTmpArr = tmpBuff;
  +        const char    *ptr = srcEnd - len;
  +        size_t    rc = iconvTo(ptr, &len, &pTmpArr, gTempBuffArraySize);
  +        if (rc == (size_t) -1 && errno != E2BIG) {
  +            if (wBufPtr)
  +            delete [] wBufPtr;
  +            ThrowXML(TranscodingException, XMLExcepts::Trans_BadSrcSeq);
  +            /* return 0; */
  +        }
  +        rc = pTmpArr - tmpBuff;
  +        totalLen += rc;
  +        if (rc == 0 || len == 0)
  +            break;
       }
       if (wBufPtr)
  -     delete [] wBufPtr;
  +    delete [] wBufPtr;
       return totalLen;
   
   #endif /* !XML_USE_LIBICONV */
  @@ -1054,73 +1057,73 @@
           // Calc the needed size.
           const size_t neededLen = fbsd_wcstombs(NULL, wideCharBuf, 0);
           if (neededLen == -1) {
  -         if (allocatedArray)
  -             delete [] allocatedArray;
  +            if (allocatedArray)
  +                delete [] allocatedArray;
               return 0;
  -     }
  -     
  +        }
  +
           retVal = new char[neededLen + 1];
           fbsd_wcstombs(retVal, wideCharBuf, neededLen);
  -     if (allocatedArray)
  -         delete [] allocatedArray;
  +        if (allocatedArray)
  +            delete [] allocatedArray;
           retVal[neededLen] = 0;
   
   #else /* XML_USE_LIBICONV */
   
           // Calc needed size.
  -     const size_t neededLen = calcRequiredSize (toTranscode);
  +        const size_t neededLen = calcRequiredSize (toTranscode);
           if (neededLen == 0)
               return 0;
  -     // allocate output buffer
  +        // allocate output buffer
           retVal = new char[neededLen + 1];
  -     if (retVal == NULL)
  +        if (retVal == NULL)
               return 0;
  -     // prepare the original
  -     char    tmpWBuff[gTempBuffArraySize];
  -     char    *wideCharBuf = 0;
  -     char    *wBufPtr = 0;
  -     size_t  len = wLent * uChSize();
  -     
  -     if (uChSize() != sizeof(XMLCh) || UBO() != BYTE_ORDER) {
  -         if (len > gTempBuffArraySize) {
  -             wBufPtr = new char[len];
  -             if (wBufPtr == NULL)
  -                 return 0;
  -             wideCharBuf = wBufPtr;
  -         } else
  -             wideCharBuf = tmpWBuff;
  -         xmlToMbs (toTranscode, wLent, wideCharBuf, wLent);
  -     } else
  -         wideCharBuf = (char *) toTranscode;
  -
  -     // perform conversion
  -     wLent *= uChSize();
  -     char    *ptr = retVal;
  -     size_t  rc = iconvTo(wideCharBuf, &wLent, &ptr, neededLen);
  -     if (rc == (size_t)-1) {
  -         if (wBufPtr)
  -             delete [] wBufPtr;
  -         return 0;
  -     }
  -     if (wBufPtr)
  -         delete [] wBufPtr;
  +        // prepare the original
  +        char    tmpWBuff[gTempBuffArraySize];
  +        char    *wideCharBuf = 0;
  +        char    *wBufPtr = 0;
  +        size_t  len = wLent * uChSize();
  +
  +        if (uChSize() != sizeof(XMLCh) || UBO() != BYTE_ORDER) {
  +            if (len > gTempBuffArraySize) {
  +            wBufPtr = new char[len];
  +            if (wBufPtr == NULL)
  +                return 0;
  +            wideCharBuf = wBufPtr;
  +            } else
  +            wideCharBuf = tmpWBuff;
  +            xmlToMbs (toTranscode, wLent, wideCharBuf, wLent);
  +        } else
  +            wideCharBuf = (char *) toTranscode;
  +
  +        // perform conversion
  +        wLent *= uChSize();
  +        char    *ptr = retVal;
  +        size_t    rc = iconvTo(wideCharBuf, &wLent, &ptr, neededLen);
  +        if (rc == (size_t)-1) {
  +            if (wBufPtr)
  +            delete [] wBufPtr;
  +            return 0;
  +        }
  +        if (wBufPtr)
  +            delete [] wBufPtr;
           retVal[neededLen] = 0;
   
   #endif /* !XML_USE_LIBICONV */
   
       } else {
           retVal = new char[1];
  -     if (retVal == NULL)
  -         return 0;
  +        if (retVal == NULL)
  +            return 0;
           retVal[0] = 0;
       }
       return retVal;
   }
   
   
  -bool IconvFBSDLCPTranscoder::transcode( const   XMLCh* const toTranscode
  -                                     , char* const           toFill
  -                                     , const unsigned int    maxBytes)
  +bool IconvFBSDLCPTranscoder::transcode( const   XMLCh* const    toTranscode
  +                    , char* const        toFill
  +                    , const unsigned int    maxBytes)
   {
       // Watch for a couple of pyscho corner cases
       if (!toTranscode || !maxBytes) {
  @@ -1136,6 +1139,8 @@
       if (wLent > maxBytes)
           wLent = maxBytes;
   
  +    size_t mblen;
  +
   #ifndef XML_USE_LIBICONV
   
       wchar_t       tmpWideCharArr[gTempBuffArraySize];
  @@ -1152,49 +1157,52 @@
       wideCharBuf[wLent] = 0x00;
   
       // Ok, go ahead and try the transcoding. If it fails, then ...
  -    if (fbsd_wcstombs(toFill, wideCharBuf, maxBytes) == -1) {
  -     if (allocatedArray)
  -         delete [] allocatedArray;
  +    mblen = fbsd_wcstombs(toFill, wideCharBuf, maxBytes);
  +    if (mblen == -1) {
  +        if (allocatedArray)
  +            delete [] allocatedArray;
           return false;
       }
       if (allocatedArray)
  -     delete [] allocatedArray;
  +        delete [] allocatedArray;
   
   #else /* XML_USE_LIBICONV */
   
       // Fill the "unicode" string
  -    char     tmpWBuff[gTempBuffArraySize];
  -    char     *wideCharBuf = 0;
  -    char     *wBufPtr = 0;
  +    char    tmpWBuff[gTempBuffArraySize];
  +    char    *wideCharBuf = 0;
  +    char    *wBufPtr = 0;
       size_t  len = wLent * uChSize();
   
       if (uChSize() != sizeof(XMLCh) || UBO() != BYTE_ORDER) {
  -     if (len > gTempBuffArraySize) {
  -         wBufPtr = new char[len];
  -         if (wBufPtr == NULL)
  -             return 0;
  -         wideCharBuf = wBufPtr;
  -     } else
  -         wideCharBuf = tmpWBuff;
  -     xmlToMbs (toTranscode, wLent, wideCharBuf, wLent);
  -    } else
  -     wideCharBuf = (char *) toTranscode;
  +        if (len > gTempBuffArraySize) {
  +             wBufPtr = new char[len];
  +             if (wBufPtr == NULL)
  +                 return 0;
  +             wideCharBuf = wBufPtr;
  +         }
  +         else
  +             wideCharBuf = tmpWBuff;
  +             xmlToMbs (toTranscode, wLent, wideCharBuf, wLent);
  +     }
  +     else
  +         wideCharBuf = (char *) toTranscode;
   
       // Ok, go ahead and try the transcoding. If it fails, then ...
  -    char     *ptr = toFill;
  -    size_t   rc = iconvTo(wideCharBuf, &len, &ptr, maxBytes);
  -    if (rc == (size_t)-1) {
  -     if (wBufPtr)
  -         delete [] wBufPtr;
  -     return false;
  +    char    *ptr = toFill;
  +    mblen = iconvTo(wideCharBuf, &len, &ptr, maxBytes);
  +    if (mblen == (size_t)-1) {
  +        if (wBufPtr)
  +            delete [] wBufPtr;
  +        return false;
       }
       if (wBufPtr)
  -     delete [] wBufPtr;
  +        delete [] wBufPtr;
   
   #endif /* !XML_USE_LIBICONV */
   
       // Cap it off just in case
  -    toFill[wLent] = 0;
  +    toFill[mblen] = 0;
       return true;
   }
   
  @@ -1227,68 +1235,68 @@
   
           fbsd_mbstowcs(wideCharBuf, toTranscode, wLent);
           retVal = new XMLCh[wLent + 1];
  -     if (retVal == NULL) {
  -         if (allocatedArray)
  -             delete [] allocatedArray;
  -         return NULL;
  -     }
  +        if (retVal == NULL) {
  +            if (allocatedArray)
  +                delete [] allocatedArray;
  +            return NULL;
  +        }
           for (unsigned int i = 0; i < wLent; i++)
               retVal[i] = (XMLCh) wideCharBuf[i];
           retVal[wLent] = 0x00;
  -     if (allocatedArray)
  -         delete [] allocatedArray;
  +        if (allocatedArray)
  +            delete [] allocatedArray;
   
   #else /* XML_USE_LIBICONV */
   
  -     char    tmpWBuff[gTempBuffArraySize];
  -     char    *wideCharBuf = 0;
  -     char    *wBufPtr = 0;
  -     size_t  len = wLent * uChSize();
  -
  -     retVal = new XMLCh[wLent + 1];
  -     if (retVal == NULL)
  -         return NULL;
  -     if (uChSize() != sizeof(XMLCh) || UBO() != BYTE_ORDER) {
  -         if (len > gTempBuffArraySize) {
  -             wBufPtr = new char[len];
  -             if (wBufPtr == NULL)
  -                 return 0;
  -             wideCharBuf = wBufPtr;
  -         } else
  -             wideCharBuf = tmpWBuff;
  -     } else
  -         wideCharBuf = (char *) retVal;
  -
  -     size_t  flen = strlen(toTranscode);
  -     char    *ptr = wideCharBuf;
  -     size_t  rc = iconvFrom(toTranscode, &flen, &ptr, len);
  -     if (rc == (size_t) -1) {
  -         if (wBufPtr)
  -             delete [] wBufPtr;
  -         return NULL;
  -     }
  -     if (uChSize() != sizeof(XMLCh) || UBO() != BYTE_ORDER)
  -         mbsToXML (wideCharBuf, wLent, retVal, wLent);
  -     if (wBufPtr)
  -         delete [] wBufPtr;
  +        char    tmpWBuff[gTempBuffArraySize];
  +        char    *wideCharBuf = 0;
  +        char    *wBufPtr = 0;
  +        size_t  len = wLent * uChSize();
  +
  +        retVal = new XMLCh[wLent + 1];
  +        if (retVal == NULL)
  +            return NULL;
  +        if (uChSize() != sizeof(XMLCh) || UBO() != BYTE_ORDER) {
  +            if (len > gTempBuffArraySize) {
  +                wBufPtr = new char[len];
  +                if (wBufPtr == NULL)
  +                    return 0;
  +                wideCharBuf = wBufPtr;
  +            } else
  +                wideCharBuf = tmpWBuff;
  +        } else
  +            wideCharBuf = (char *) retVal;
  +
  +        size_t    flen = strlen(toTranscode);
  +        char    *ptr = wideCharBuf;
  +        size_t    rc = iconvFrom(toTranscode, &flen, &ptr, len);
  +        if (rc == (size_t) -1) {
  +            if (wBufPtr)
  +            delete [] wBufPtr;
  +            return NULL;
  +        }
  +        if (uChSize() != sizeof(XMLCh) || UBO() != BYTE_ORDER)
  +            mbsToXML (wideCharBuf, wLent, retVal, wLent);
  +        if (wBufPtr)
  +            delete [] wBufPtr;
           retVal[wLent] = 0x00;
  -     
  +
   #endif /* !XML_USE_LIBICONV */
   
       }
       else {
           retVal = new XMLCh[1];
  -     if (retVal == NULL )
  -         return 0;
  +        if (retVal == NULL )
  +            return 0;
           retVal[0] = 0;
       }
       return retVal;
   }
   
   
  -bool IconvFBSDLCPTranscoder::transcode(const   char* const   toTranscode
  -                                    ,       XMLCh* const     toFill
  -                                    , const unsigned int     maxChars)
  +bool IconvFBSDLCPTranscoder::transcode(const   char* const    toTranscode
  +                       ,       XMLCh* const    toFill
  +                       , const unsigned int    maxChars)
   {
       // Check for a couple of psycho corner cases
       if (!toTranscode || !maxChars)
  @@ -1319,46 +1327,46 @@
           wideCharBuf = tmpWideCharArr;
   
       if (fbsd_mbstowcs(wideCharBuf, toTranscode, wLent) == -1) {
  -     if (allocatedArray)
  -         delete [] allocatedArray;
  +        if (allocatedArray)
  +            delete [] allocatedArray;
           return false;
       }
       for (unsigned int i = 0; i < wLent; i++)
           toFill[i] = (XMLCh) wideCharBuf[i];
       if (allocatedArray)
  -     delete [] allocatedArray;
  +    delete [] allocatedArray;
   
   #else /* XML_USE_LIBICONV */
   
  -    char     tmpWBuff[gTempBuffArraySize];
  -    char     *wideCharBuf = 0;
  -    char     *wBufPtr = 0;
  -    size_t   len = wLent * uChSize();
  +    char    tmpWBuff[gTempBuffArraySize];
  +    char    *wideCharBuf = 0;
  +    char    *wBufPtr = 0;
  +    size_t    len = wLent * uChSize();
   
       if (uChSize() != sizeof(XMLCh) || UBO() != BYTE_ORDER) {
  -     if (len > gTempBuffArraySize) {
  -         wBufPtr = new char[len];
  -         if (wBufPtr == NULL)
  -             return 0;
  -         wideCharBuf = wBufPtr;
  -     } else
  -         wideCharBuf = tmpWBuff;
  +    if (len > gTempBuffArraySize) {
  +        wBufPtr = new char[len];
  +        if (wBufPtr == NULL)
  +        return 0;
  +        wideCharBuf = wBufPtr;
  +    } else
  +        wideCharBuf = tmpWBuff;
       } else
  -     wideCharBuf = (char *) toFill;
  +    wideCharBuf = (char *) toFill;
   
  -    size_t   flen = strlen(toTranscode); // wLent;
  -    char     *ptr = wideCharBuf;
  -    size_t   rc = iconvFrom(toTranscode, &flen, &ptr, len);
  +    size_t    flen = strlen(toTranscode); // wLent;
  +    char    *ptr = wideCharBuf;
  +    size_t    rc = iconvFrom(toTranscode, &flen, &ptr, len);
       if (rc == (size_t)-1) {
  -     if (wBufPtr)
  -         delete [] wBufPtr;
  -     return false;
  +        if (wBufPtr)
  +            delete [] wBufPtr;
  +        return false;
       }
   
       if (uChSize() != sizeof(XMLCh) || UBO() != BYTE_ORDER)
  -     mbsToXML (wideCharBuf, wLent, toFill, wLent);
  +    mbsToXML (wideCharBuf, wLent, toFill, wLent);
       if (wBufPtr)
  -     delete [] wBufPtr;
  +        delete [] wBufPtr;
   
   #endif /* !XML_USE_LIBICONV */
   
  @@ -1373,10 +1381,10 @@
   
   #ifdef XML_USE_LIBICONV
   
  -IconvFBSDLCPTranscoder::IconvFBSDLCPTranscoder (iconv_t              cd_from,
  -                                             iconv_t         cd_to,
  -                                             size_t          uchsize,
  -                                             unsigned int    ubo)
  +IconvFBSDLCPTranscoder::IconvFBSDLCPTranscoder (iconv_t        cd_from,
  +                        iconv_t        cd_to,
  +                        size_t        uchsize,
  +                        unsigned int    ubo)
       : IconvFBSDCD (cd_from, cd_to, uchsize, ubo)
   {
   }
  @@ -1402,12 +1410,12 @@
   // ---------------------------------------------------------------------------
   //  IconvFBSDTranscoder: Constructors and Destructor
   // ---------------------------------------------------------------------------
  -IconvFBSDTranscoder::IconvFBSDTranscoder (const      XMLCh* const    encodingName
  -                                       , const unsigned int  blockSize
  -                                       ,     iconv_t         cd_from
  -                                       ,     iconv_t         cd_to
  -                                       ,     size_t          uchsize
  -                                       ,     unsigned int    ubo
  +IconvFBSDTranscoder::IconvFBSDTranscoder (const    XMLCh* const    encodingName
  +                      , const unsigned int    blockSize
  +                      ,    iconv_t        cd_from
  +                      ,    iconv_t        cd_to
  +                      ,    size_t        uchsize
  +                      ,    unsigned int    ubo
       )
       : XMLTranscoder(encodingName, blockSize)
       , IconvFBSDCD (cd_from, cd_to, uchsize, ubo)
  @@ -1418,19 +1426,19 @@
   {
       ICONV_LOCK;
       if (cdTo() != (iconv_t)-1) {
  -     iconv_close (cdTo());
  -     setCDTo ((iconv_t)-1);
  +        iconv_close (cdTo());
  +        setCDTo ((iconv_t)-1);
       }
       if (cdFrom() != (iconv_t)-1) {
  -     iconv_close (cdFrom());
  -     setCDFrom ((iconv_t)-1);
  +        iconv_close (cdFrom());
  +        setCDFrom ((iconv_t)-1);
       }
   }
   
   // ---------------------------------------------------------------------------
   //  IconvFBSDTranscoder: Implementation of the virtual transcoder API
   // ---------------------------------------------------------------------------
  -unsigned int IconvFBSDTranscoder::transcodeFrom
  +unsigned int    IconvFBSDTranscoder::transcodeFrom
   (
       const   XMLByte* const          srcData
       , const unsigned int            srcCount
  @@ -1443,92 +1451,92 @@
       const char*  startSrc = (const char*) srcData;
       const char*  endSrc = (const char*) srcData + srcCount;
   
  -    char     tmpWBuff[gTempBuffArraySize];
  -    char     *startTarget = 0;
  -    char     *wBufPtr = 0;
  -    size_t   len = maxChars * uChSize();
  +    char    tmpWBuff[gTempBuffArraySize];
  +    char    *startTarget = 0;
  +    char    *wBufPtr = 0;
  +    size_t    len = maxChars * uChSize();
   
       if (uChSize() != sizeof(XMLCh) || UBO() != BYTE_ORDER) {
  -     if (len > gTempBuffArraySize) {
  -         wBufPtr = new char[len];
  -         if (wBufPtr == NULL)
  -             return 0;
  -         startTarget = wBufPtr;
  -     } else
  -         startTarget = tmpWBuff;
  +        if (len > gTempBuffArraySize) {
  +            wBufPtr = new char[len];
  +            if (wBufPtr == NULL)
  +            return 0;
  +            startTarget = wBufPtr;
  +        } else
  +            startTarget = tmpWBuff;
       } else
  -     startTarget = (char *) toFill;
  +    startTarget = (char *) toFill;
   
       // Do character-by-character transcoding
  -    char     *orgTarget = startTarget;
  -    size_t   srcLen = srcCount;
  -    size_t   prevSrcLen = srcLen;
  +    char    *orgTarget = startTarget;
  +    size_t    srcLen = srcCount;
  +    size_t    prevSrcLen = srcLen;
       unsigned int toReturn = 0;
       bytesEaten = 0;
       for (size_t cnt = 0; cnt < maxChars && srcLen; cnt++) {
  -     size_t  rc = iconvFrom(startSrc, &srcLen, &orgTarget, uChSize());
  -     if (rc == (size_t)-1) {
  -         if (errno != E2BIG || prevSrcLen == srcLen) {
  -             if (wBufPtr)
  -                 delete [] wBufPtr;
  -             ThrowXML(TranscodingException, XMLExcepts::Trans_BadSrcSeq);
  -         }
  -     }
  -     charSizes[cnt] = prevSrcLen - srcLen;
  -     prevSrcLen = srcLen;
  -     bytesEaten += charSizes[cnt];
  -     startSrc = endSrc - srcLen;
  -     toReturn++;
  +        size_t    rc = iconvFrom(startSrc, &srcLen, &orgTarget, uChSize());
  +        if (rc == (size_t)-1) {
  +            if (errno != E2BIG || prevSrcLen == srcLen) {
  +                if (wBufPtr)
  +                    delete [] wBufPtr;
  +                ThrowXML(TranscodingException, XMLExcepts::Trans_BadSrcSeq);
  +            }
  +        }
  +        charSizes[cnt] = prevSrcLen - srcLen;
  +        prevSrcLen = srcLen;
  +        bytesEaten += charSizes[cnt];
  +        startSrc = endSrc - srcLen;
  +        toReturn++;
       }
       if (uChSize() != sizeof(XMLCh) || UBO() != BYTE_ORDER)
  -     mbsToXML (startTarget, toReturn, toFill, toReturn);
  +        mbsToXML (startTarget, toReturn, toFill, toReturn);
       if (wBufPtr)
  -     delete [] wBufPtr;
  +        delete [] wBufPtr;
       return toReturn;
   }
   
  -unsigned int IconvFBSDTranscoder::transcodeTo
  +unsigned int    IconvFBSDTranscoder::transcodeTo
   (
  -    const   XMLCh* const     srcData
  -    , const unsigned int     srcCount
  -    ,       XMLByte* const   toFill
  -    , const unsigned int     maxBytes
  -    ,       unsigned int&    charsEaten
  -    , const UnRepOpts                options )
  +    const   XMLCh* const    srcData
  +    , const unsigned int    srcCount
  +    ,       XMLByte* const    toFill
  +    , const unsigned int    maxBytes
  +    ,       unsigned int&    charsEaten
  +    , const UnRepOpts        options )
   {
       // Transcode FROM XMLCh
  -    char     tmpWBuff[gTempBuffArraySize];
  -    char     *startSrc = tmpWBuff;
  -    char     *wBufPtr = 0;
  -    size_t   len = srcCount * uChSize();
  +    char    tmpWBuff[gTempBuffArraySize];
  +    char    *startSrc = tmpWBuff;
  +    char    *wBufPtr = 0;
  +    size_t    len = srcCount * uChSize();
   
       if (uChSize() != sizeof(XMLCh) || UBO() != BYTE_ORDER) {
  -     if (len > gTempBuffArraySize) {
  -         wBufPtr = new char[len];
  -         if (wBufPtr == NULL)
  -             return 0;
  -         startSrc = wBufPtr;
  -     } else
  -         startSrc = tmpWBuff;
  -     xmlToMbs (srcData, srcCount, startSrc, srcCount);
  +        if (len > gTempBuffArraySize) {
  +            wBufPtr = new char[len];
  +            if (wBufPtr == NULL)
  +                return 0;
  +            startSrc = wBufPtr;
  +        } else
  +            startSrc = tmpWBuff;
  +        xmlToMbs (srcData, srcCount, startSrc, srcCount);
       } else
  -     startSrc = (char *) srcData;
  +        startSrc = (char *) srcData;
   
  -    char*    startTarget = (char *) toFill;
  -    size_t   srcLen = len;
  -    size_t   rc = iconvTo (startSrc, &srcLen, &startTarget, maxBytes);
  +    char*    startTarget = (char *) toFill;
  +    size_t    srcLen = len;
  +    size_t    rc = iconvTo (startSrc, &srcLen, &startTarget, maxBytes);
       if (rc == (size_t)-1 && errno != E2BIG) {
  -     if (wBufPtr)
  -         delete [] wBufPtr;
  -     ThrowXML(TranscodingException, XMLExcepts::Trans_BadSrcSeq);
  +        if (wBufPtr)
  +            delete [] wBufPtr;
  +        ThrowXML(TranscodingException, XMLExcepts::Trans_BadSrcSeq);
       }
       charsEaten = srcCount - srcLen / uChSize();
       if (wBufPtr)
  -     delete [] wBufPtr;
  +        delete [] wBufPtr;
       return startTarget - (char *)toFill;
   }
   
  -bool         IconvFBSDTranscoder::canTranscodeTo
  +bool        IconvFBSDTranscoder::canTranscodeTo
   (
       const unsigned int toCheck
   )   const
  @@ -1537,21 +1545,21 @@
       //  If the passed value is really a surrogate embedded together, then
       //  we need to break it out into its two chars. Else just one.
       //
  -    char             srcBuf[2 * uChSize()];
  -    unsigned int     srcCount = 1;
  +    char        srcBuf[2 * uChSize()];
  +    unsigned int    srcCount = 1;
       if (toCheck & 0xFFFF0000) {
  -     XMLCh   ch1 = (toCheck >> 10) + 0xD800;
  -     XMLCh   ch2 = toCheck & 0x3FF + 0xDC00;
  -     xmlToMbs(&ch1, 1, srcBuf, 1);
  -     xmlToMbs(&ch2, 1, srcBuf + uChSize(), 1);
  +        XMLCh    ch1 = (toCheck >> 10) + 0xD800;
  +        XMLCh    ch2 = toCheck & 0x3FF + 0xDC00;
  +        xmlToMbs(&ch1, 1, srcBuf, 1);
  +        xmlToMbs(&ch2, 1, srcBuf + uChSize(), 1);
           srcCount++;
       } else
  -     xmlToMbs((const XMLCh*) &toCheck, 1, srcBuf, 1);
  -    size_t   len = srcCount * uChSize();
  -    char     tmpBuf[64];
  -    char*    pTmpBuf = tmpBuf;
  +        xmlToMbs((const XMLCh*) &toCheck, 1, srcBuf, 1);
  +    size_t    len = srcCount * uChSize();
  +    char    tmpBuf[64];
  +    char*    pTmpBuf = tmpBuf;
   
  -    size_t   rc = iconvTo( srcBuf, &len, &pTmpBuf, 64);
  +    size_t    rc = iconvTo( srcBuf, &len, &pTmpBuf, 64);
       return (rc != (size_t)-1) && (len == 0);
   }
   
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to