[proaudio] [1676] xerces-c: bzipped large files

[ Thread Index | Date Index | More lists.tuxfamily.org/proaudio Archives ]


Revision: 1676
Author:   gentoid
Date:     2010-05-16 16:27:04 +0200 (Sun, 16 May 2010)
Log Message:
-----------
xerces-c: bzipped large files

Modified Paths:
--------------
    trunk/overlays/proaudio/dev-libs/xerces-c/Manifest
    trunk/overlays/proaudio/dev-libs/xerces-c/xerces-c-2.8.0-r1.ebuild

Added Paths:
-----------
    trunk/overlays/proaudio/dev-libs/xerces-c/files/xqilla-xercesc_content_type.patch.tar.bz2
    trunk/overlays/proaudio/dev-libs/xerces-c/files/xqilla-xercesc_regex.patch.tar.bz2

Removed Paths:
-------------
    trunk/overlays/proaudio/dev-libs/xerces-c/files/xqilla-xercesc_content_type.patch
    trunk/overlays/proaudio/dev-libs/xerces-c/files/xqilla-xercesc_regex.patch

Modified: trunk/overlays/proaudio/dev-libs/xerces-c/Manifest
===================================================================
--- trunk/overlays/proaudio/dev-libs/xerces-c/Manifest	2010-05-16 08:52:44 UTC (rev 1675)
+++ trunk/overlays/proaudio/dev-libs/xerces-c/Manifest	2010-05-16 14:27:04 UTC (rev 1676)
@@ -2,9 +2,9 @@
 AUX xerces-c-2.8.0-64bit_cast.patch 727 RMD160 b0cc302d30c95f324e474a802ad4f14eba57e1c9 SHA1 218b982f7b9c6cf086bd17a392b2c036769677a4 SHA256 74cc58e469980c32a1161941b69a9e18362e983687a5979ee4ab1fd1d83699d8
 AUX xerces-c-2.8.0-IconvGNUTransService.cpp.patch 324 RMD160 055a3e565da152b8183284af44a4da8861c851a1 SHA1 47efb106fc25b7a56511aab06462ccd26c9ad246 SHA256 8e37758f88ef3ab2bce31fc9573822b40591250755dcaddf85e53ce9e52b1759
 AUX xerces-c-2.8.0-icu_ressource_fix.patch 1924 RMD160 f994c6003136494672aceaa072ceb7ccc74f7a42 SHA1 fac51469c89c279fed291067ed1d2c1cab660616 SHA256 88b8ee0ec3fd5974c4ccf8d599d91932a1e15ef84927331f42fbce46f7f51046
-AUX xqilla-xercesc_content_type.patch 65394 RMD160 1c64bab616a808b6469d261f091cfe669dd39e82 SHA1 668a4824465e00643505df0aa80b0432b4859b65 SHA256 5ac5dc96ce9570bbc77d0c1ed8f48c8c79a6eed0d9ed1d59bc0814cb6cb3a55c
-AUX xqilla-xercesc_regex.patch 46362 RMD160 682a7c241c0ede3d664ca5f7b86ac9d17e11bf05 SHA1 bec0abfcab9cbda88498c30640f421611925c619 SHA256 26962a20b85171b4e0bcaa36e4193a5a07bd164a0f3af5c68f6e41ec46964f5e
+AUX xqilla-xercesc_content_type.patch.tar.bz2 9933 RMD160 c0b745ccef7aeb20171d057a7afc7a056fae61f6 SHA1 99801d656f9e9da133b1a02f2fb36386b447cc3e SHA256 f6e935a384d9f21406735e9d5884cbdc1cdd693f9d1a961984041df7f566567c
+AUX xqilla-xercesc_regex.patch.tar.bz2 7168 RMD160 b3176be18c3343e21e60867d8f76f46a75be5bc6 SHA1 f844d338c3c8d0aff0ddf3300abd2826ee6f9f72 SHA256 08ba2be820124fa43e175b36c827e319e79daa05198b0f483a0d297ec8c91776
 DIST xerces-c-src_2_8_0.tar.gz 7893039 RMD160 d576df7870b043a338358834a0e1180dca39e838 SHA1 f0803b1330daec3f44b17dee64c3c99de6b3cd3e SHA256 416eaf74bbe6ff3b3c64a282e886810cad6cbb48478d3c83344661504c09c8d6
-EBUILD xerces-c-2.8.0-r1.ebuild 4672 RMD160 9fa6aa2288b2f020916ac994363fd31a961eef33 SHA1 d0f038054f555eb9c1579d2b249eb88c4b74b5ea SHA256 5b480ca5b307a1f15dba6712f5d74ae6b24e96218eab9f15e927f1daa9ed385c
+EBUILD xerces-c-2.8.0-r1.ebuild 4553 RMD160 09feb5ddaa645f39625a6305684b0dfeb264e524 SHA1 d808eb2a8a1ac463535707b1592685b335d74a86 SHA256 823afc48db0ca2819e3455dabe42eaf23af076d90766cdf2baa6fad3171471c0
 MISC ChangeLog 563 RMD160 4f9f5751348ba6f45695d646adc7bc31c1c86c0e SHA1 fdca16d666975c6bd0ead0f3256f364c42098e64 SHA256 8e059e968653864358d1b7d993b8578fd4f23b85bec137ae461d77e444684920
 MISC metadata.xml 268 RMD160 facc07bd885f20615a1f2555069329c642e1a566 SHA1 2456bdb8a218c9d477d2d6ee4bf158de070c7be4 SHA256 96629b266b743f566c29158d4498edeeb1cd6b1f0cd9629e42d4f10b4da82f89

Deleted: trunk/overlays/proaudio/dev-libs/xerces-c/files/xqilla-xercesc_content_type.patch
===================================================================
--- trunk/overlays/proaudio/dev-libs/xerces-c/files/xqilla-xercesc_content_type.patch	2010-05-16 08:52:44 UTC (rev 1675)
+++ trunk/overlays/proaudio/dev-libs/xerces-c/files/xqilla-xercesc_content_type.patch	2010-05-16 14:27:04 UTC (rev 1676)
@@ -1,1885 +0,0 @@
-diff -ru xerces-c-src_2_8_0-release/src/xercesc/util/BinInputStream.cpp xerces-c-src_2_8_0/src/xercesc/util/BinInputStream.cpp
---- xerces-c-src_2_8_0-release/src/xercesc/util/BinInputStream.cpp	2008-02-08 15:30:17.000000000 +0000
-+++ xerces-c-src_2_8_0/src/xercesc/util/BinInputStream.cpp	2008-01-28 02:24:47.000000000 +0000
-@@ -42,4 +42,10 @@
- {
- }
- 
-+const XMLCh *BinInputStream::getContentType() const
-+{
-+    // The default implementation never returns a content type
-+    return 0;
-+}
-+
- XERCES_CPP_NAMESPACE_END
-diff -ru xerces-c-src_2_8_0-release/src/xercesc/util/BinInputStream.hpp xerces-c-src_2_8_0/src/xercesc/util/BinInputStream.hpp
---- xerces-c-src_2_8_0-release/src/xercesc/util/BinInputStream.hpp	2008-02-08 15:30:17.000000000 +0000
-+++ xerces-c-src_2_8_0/src/xercesc/util/BinInputStream.hpp	2008-01-28 02:23:51.000000000 +0000
-@@ -46,6 +46,7 @@
-         , const unsigned int        maxToRead
-     ) = 0;
- 
-+    virtual const XMLCh *getContentType() const;
- 
- protected :
-     // -----------------------------------------------------------------------
-diff -ru xerces-c-src_2_8_0-release/src/xercesc/util/NetAccessors/Socket/UnixHTTPURLInputStream.cpp xerces-c-src_2_8_0/src/xercesc/util/NetAccessors/Socket/UnixHTTPURLInputStream.cpp
---- xerces-c-src_2_8_0-release/src/xercesc/util/NetAccessors/Socket/UnixHTTPURLInputStream.cpp	2008-02-08 15:30:17.000000000 +0000
-+++ xerces-c-src_2_8_0/src/xercesc/util/NetAccessors/Socket/UnixHTTPURLInputStream.cpp	2008-01-29 00:08:59.000000000 +0000
-@@ -58,7 +58,14 @@
-     int* get() const { return fData; }
-     int* release() { int* p = fData; fData = 0; return p; }
- 
--    void reset(int* p = 0) { if(fData) close(*fData); fData=p; }
-+    void reset(int* p = 0)
-+    {
-+        if(fData) {
-+            shutdown(*fData, 2);
-+            close(*fData);
-+        }
-+        fData = p;
-+    }
-     bool isDataNull() { return (fData == 0); }
- 
- private :
-@@ -79,370 +86,372 @@
-     int*  fData;
- };
- 
--UnixHTTPURLInputStream::UnixHTTPURLInputStream(const XMLURL& urlSource, const XMLNetHTTPInfo* httpInfo/*=0*/)
--      : fSocket(0)
--      , fBytesProcessed(0)
--      , fMemoryManager(urlSource.getMemoryManager())
-+class TranscodeStr
- {
-+public:
-+    TranscodeStr(const XMLCh *in, XMLTranscoder* trans,
-+                 MemoryManager *manager = XMLPlatformUtils::fgMemoryManager)
-+        : fString(0),
-+          fBytesWritten(0),
-+          fMemoryManager(manager)
-+    {
-+        if(in) {
-+            unsigned int len = XMLString::stringLen(in) + 1;
-+
-+            unsigned int allocSize = len * sizeof(XMLCh);
-+            fString = (unsigned char*)fMemoryManager->allocate(allocSize);
-+
-+            unsigned int charsRead;
-+
-+            unsigned int charsDone = 0;
-+
-+            while(true) {
-+                fBytesWritten += trans->transcodeTo(in + charsDone, len - charsDone,
-+                                                    fString + fBytesWritten, allocSize - fBytesWritten,
-+                                                    charsRead, XMLTranscoder::UnRep_Throw);
-+                charsDone += charsRead;
-+
-+                if(charsDone == len) break;
-+
-+                allocSize *= 2;
-+                unsigned char *newBuf = (unsigned char*)fMemoryManager->allocate(allocSize);
-+                memcpy(newBuf, fString, fBytesWritten);
-+                fMemoryManager->deallocate(fString);
-+                fString = newBuf;
-+            }
-+        }
-+    }
- 
--    //
--    //  Constants in ASCII to send/check in the HTTP request/response
--    //
--
--    const char GET[] =
--    {
--        chLatin_G, chLatin_E, chLatin_T, chSpace, chNull
--    };
--
--    const char PUT[] =
--    {
--        chLatin_P, chLatin_U, chLatin_T, chSpace, chNull
--    };
--
--    const char POST[] =
--    {
--        chLatin_P, chLatin_O, chLatin_S, chLatin_T, chSpace, chNull
--    };
--
--    const char HTTP[] =
--    {
--        chLatin_H, chLatin_T, chLatin_T, chLatin_P, chNull
--    };
--
--    const char HTTP10[] =
--    {
--        chSpace, chLatin_H, chLatin_T, chLatin_T, chLatin_P, chForwardSlash, chDigit_1, chPeriod, chDigit_0, chCR, chLF, chNull
--    };
--
--    const char CRLF[] =
--    {
--        chCR, chLF, chNull
--    };
--
--    const char CRLF2X[] =
-+    ~TranscodeStr()
-     {
--        chCR, chLF, chCR, chLF, chNull
--    };
-+        if(fString)
-+            fMemoryManager->deallocate(fString);
-+    }
- 
--    const char LF2X[] =
-+    const unsigned char *str() const
-     {
--        chLF, chLF, chNull
--    };
-+        return fString;
-+    }
- 
--    const char HOST[] =
-+    unsigned int len() const
-     {
--        chLatin_H, chLatin_o, chLatin_s, chLatin_t, chColon, chSpace, chNull
--    };
-+        return fBytesWritten;
-+    }
- 
--    const char COLON[] =
--    {
--        chColon, chNull
--    };
-+private:
-+    unsigned char *fString;
-+    unsigned int fBytesWritten;
-+    MemoryManager *fMemoryManager;
-+};
- 
--    const char AUTHORIZATION[] =
--    {
--        chLatin_A, chLatin_u, chLatin_t, chLatin_h, chLatin_o, chLatin_r, chLatin_i, chLatin_z, chLatin_a, chLatin_t, 
--        chLatin_i, chLatin_o, chLatin_n, chColon, chSpace, chLatin_B, chLatin_a, chLatin_s, chLatin_i, chLatin_c, chSpace, chNull
--    };
-+static const char *CRLF = "\r\n";
- 
--    const char resp200 [] =
--    {
--        chSpace, chDigit_2, chDigit_0, chDigit_0, chSpace, chNull
--    };
-+void UnixHTTPURLInputStream::createHTTPRequest(const XMLURL &urlSource, const XMLNetHTTPInfo *httpInfo, CharBuffer &buffer)
-+{
-+    static const char *GET = "GET ";
-+    static const char *PUT = "PUT ";
-+    static const char *POST = "POST ";
-+    static const char *HTTP10 = " HTTP/1.0\r\n";
-+    static const char *HOST = "Host: ";
-+    static const char *AUTHORIZATION = "Authorization: Basic ";
-+    static const char *COLON = ":";
- 
--    unsigned int charsEaten;
--    unsigned int transSize;
-     XMLTransService::Codes failReason;
-     const unsigned int blockSize = 2048;
--    const unsigned int bufSize = 5;
--    static XMLCh portBuffer[bufSize+1];
--
--    //
--    // Pull all of the parts of the URL out of the urlSource object
--    //
--
--    const XMLCh*        hostName = urlSource.getHost();
--    const XMLCh*        path = urlSource.getPath();
--    const XMLCh*        fragment = urlSource.getFragment();
--    const XMLCh*        query = urlSource.getQuery();                        
- 
--    //
--    //  Convert the hostName to the platform's code page for gethostbyname and
--    //  inet_addr functions.
--    //
-+    XMLTranscoder* trans = XMLPlatformUtils::fgTransService->makeNewTranscoderFor("ISO8859-1", failReason, blockSize, fMemoryManager);
-+    Janitor<XMLTranscoder> janTrans(trans);
- 
--    char*               hostNameAsCharStar = XMLString::transcode(hostName, fMemoryManager);
--    ArrayJanitor<char>  janBuf1(hostNameAsCharStar, fMemoryManager);
-+    TranscodeStr hostName(urlSource.getHost(), trans, fMemoryManager);
-+    TranscodeStr path(urlSource.getPath(), trans, fMemoryManager);
-+    TranscodeStr fragment(urlSource.getFragment(), trans, fMemoryManager);
-+    TranscodeStr query(urlSource.getQuery(), trans, fMemoryManager);
- 
--    //
--    //  Convert all the parts of the urlSource object to ASCII so they can be
--    //  sent to the remote host in that format
--    //
-+    // Build up the http GET command to send to the server.
-+    // To do:  We should really support http 1.1.  This implementation
-+    //         is weak.
-+    if(httpInfo) {
-+        switch(httpInfo->fHTTPMethod) {
-+        case XMLNetHTTPInfo::GET:   buffer.append(GET); break;
-+        case XMLNetHTTPInfo::PUT:   buffer.append(PUT); break;
-+        case XMLNetHTTPInfo::POST:  buffer.append(POST); break;
-+        }
-+    }
-+    else {
-+        buffer.append(GET);
-+    }
- 
--    transSize = XMLString::stringLen(hostName)+1;
--    char*               hostNameAsASCII = (char*) fMemoryManager->allocate
--    (
--        (transSize+1) * sizeof(char)
--    );//new char[transSize+1];
--    ArrayJanitor<char>  janBuf2(hostNameAsASCII, fMemoryManager);
-+    if(path.str() != 0) {
-+        buffer.append((char*)path.str());
-+    }
-+    else {
-+        buffer.append("/");
-+    }
- 
--    XMLTranscoder* trans = XMLPlatformUtils::fgTransService->makeNewTranscoderFor("ISO8859-1", failReason, blockSize, fMemoryManager);
--    trans->transcodeTo(hostName, transSize, (unsigned char *) hostNameAsASCII, transSize, charsEaten, XMLTranscoder::UnRep_Throw);
-+    if(query.str() != 0) {
-+        buffer.append("?");
-+        buffer.append((char*)query.str());
-+    }
- 
--    char*               pathAsASCII = 0;
--    ArrayJanitor<char>  janBuf3(pathAsASCII, fMemoryManager);
--    if (path)
--    {
--        transSize = XMLString::stringLen(path)+1;
--        pathAsASCII = (char*) fMemoryManager->allocate
--        (
--            (transSize+1) * sizeof(char)
--        );//new char[transSize+1];
--        janBuf3.reset(pathAsASCII, fMemoryManager);
--        trans->transcodeTo(path, transSize, (unsigned char *) pathAsASCII, transSize, charsEaten, XMLTranscoder::UnRep_Throw);
-+    if(fragment.str() != 0) {
-+        buffer.append((char*)fragment.str());
-     }
-+    buffer.append(HTTP10);
- 
--    char*               fragmentAsASCII = 0;
--    ArrayJanitor<char>  janBuf4(fragmentAsASCII, fMemoryManager);
--    if (fragment)
-+    buffer.append(HOST);
-+    buffer.append((char*)hostName.str());
-+    if(urlSource.getPortNum() != 80)
-     {
--        transSize = XMLString::stringLen(fragment)+1;
--        fragmentAsASCII = (char*) fMemoryManager->allocate
--        (
--            (transSize+1) * sizeof(char)
--        );//new char[transSize+1];
--        janBuf4.reset(fragmentAsASCII, fMemoryManager);
--        trans->transcodeTo(fragment, transSize, (unsigned char *) fragmentAsASCII, transSize, charsEaten, XMLTranscoder::UnRep_Throw);
-+        buffer.append(COLON);
-+        buffer.appendDecimalNumber(urlSource.getPortNum());
-     }
-+    buffer.append(CRLF);
- 
--    char*               queryAsASCII = 0;
--    ArrayJanitor<char>  janBuf5(queryAsASCII, fMemoryManager);
--    if (query)
--    {
--        transSize = XMLString::stringLen(query)+1;
--        queryAsASCII = (char*) fMemoryManager->allocate
--        (
--            (transSize+1) * sizeof(char)
--        );//new char[transSize+1];
--        janBuf5.reset(queryAsASCII, fMemoryManager);
--        trans->transcodeTo(query, transSize, (unsigned char *) queryAsASCII, transSize, charsEaten, XMLTranscoder::UnRep_Throw);
-+    const XMLCh *username = urlSource.getUser();
-+    const XMLCh *password = urlSource.getPassword();
-+    if(username && password) {
-+        XMLBuffer userPassBuf(256, fMemoryManager);
-+        userPassBuf.append(username);
-+        userPassBuf.append(chColon);
-+        userPassBuf.append(password);
-+
-+        TranscodeStr userPass(userPassBuf.getRawBuffer(), trans, fMemoryManager);
-+
-+        unsigned int len;
-+        XMLByte* encodedData = Base64::encode((XMLByte*)userPass.str(), userPass.len() - 1, &len, fMemoryManager);
-+        ArrayJanitor<XMLByte> janBuf2(encodedData, fMemoryManager);
-+
-+        if(encodedData) {
-+            // HTTP doesn't want the 0x0A separating the data in chunks of 76 chars per line
-+            XMLByte* authData = (XMLByte*)fMemoryManager->allocate((len+1)*sizeof(XMLByte));
-+            ArrayJanitor<XMLByte> janBuf(authData, fMemoryManager);
-+            XMLByte *cursor = authData;
-+            for(unsigned int i = 0; i < len; ++i)
-+                if(encodedData[i] != chLF)
-+                    *cursor++ = encodedData[i];
-+            *cursor++ = 0;
-+            buffer.append(AUTHORIZATION);
-+            buffer.append((char*)authData);
-+            buffer.append(CRLF);
-+        }
-     }
- 
--    unsigned short      portNumber = (unsigned short) urlSource.getPortNum();
-+    if(httpInfo && httpInfo->fHeaders)
-+        buffer.append(httpInfo->fHeaders, httpInfo->fHeadersLen);
- 
--    //
--    //  Convert port number integer to unicode so we can transcode it to ASCII
--    //
-+    buffer.append(CRLF);
-+}
- 
--    XMLString::binToText((unsigned int) portNumber, portBuffer, bufSize, 10, fMemoryManager);
--    transSize = XMLString::stringLen(portBuffer)+1;
--    char*               portAsASCII = (char*) fMemoryManager->allocate
--    (
--        (transSize+1) * sizeof(char)
--    );//new char[transSize+1];
--    ArrayJanitor<char>  janBuf6(portAsASCII, fMemoryManager);
--    trans->transcodeTo(portBuffer, transSize, (unsigned char *) portAsASCII, transSize, charsEaten, XMLTranscoder::UnRep_Throw);
-+int UnixHTTPURLInputStream::parseResponseStatus() const
-+{
-+    char *p = const_cast<char*>(strstr(fBuffer.getRawBuffer(), "HTTP"));
-+    if(p == 0) return -1;
- 
--    delete trans;
-+    p = strchr(p, chSpace);
-+    if(p == 0) return -1;
-+  
-+    return atoi(p);
-+}
- 
--    //
--    // Set up a socket.
--    //
--    struct hostent*     hostEntPtr = 0;
--    struct sockaddr_in  sa;
-+XMLCh *UnixHTTPURLInputStream::findHeader(const char *name) const
-+{
-+    int len = strlen(name);
- 
--    // Use the hostName in the local code page ....
--    if ((hostEntPtr = gethostbyname(hostNameAsCharStar)) == NULL)
--    {
--        unsigned long  numAddress = inet_addr(hostNameAsCharStar);
--        if (numAddress < 0)
--        {
--            ThrowXMLwithMemMgr1(NetAccessorException,
--                     XMLExcepts::NetAcc_TargetResolution, hostName, fMemoryManager);
-+    char *p = const_cast<char*>(strstr(fBuffer.getRawBuffer(), name));
-+    while(p != 0) {
-+        if(*(p - 1) == '\n' &&
-+            *(p + len) == ':' &&
-+            *(p + len + 1) == ' ') {
-+
-+            p += len + 2;
-+            
-+            char *endP = strstr(p, CRLF);
-+            if(endP == 0) {
-+                for(endP = p; *endP != 0; ++endP);
-+            }
-+
-+            char tmp = *endP;
-+            *endP = 0;
-+
-+            XMLCh *value = XMLString::transcode(p, fMemoryManager);
-+            *endP = tmp;
-+            return value;
-         }
--        if ((hostEntPtr =
--                gethostbyaddr((char *) &numAddress,
--                              sizeof(unsigned long), AF_INET)) == NULL)
--        {
--            ThrowXMLwithMemMgr1(NetAccessorException,
--                     XMLExcepts::NetAcc_TargetResolution, hostName, fMemoryManager);
--        }
--    }
--
--    memset(&sa, '\0', sizeof(sockaddr_in));  // iSeries fix ??
--    memcpy((void *) &sa.sin_addr,
--           (const void *) hostEntPtr->h_addr, hostEntPtr->h_length);
--    sa.sin_family = hostEntPtr->h_addrtype;
--    sa.sin_port = htons(portNumber);
- 
--    int s = socket(hostEntPtr->h_addrtype, SOCK_STREAM, 0);
--    if (s < 0)
--    {
--        ThrowXMLwithMemMgr1(NetAccessorException,
--                 XMLExcepts::NetAcc_CreateSocket, urlSource.getURLText(), fMemoryManager);
-+        p = strstr(p + 1, name);
-     }
--    SocketJanitor janSock(&s);
- 
--    if (connect(s, (struct sockaddr *) &sa, sizeof(sa)) < 0)
--    {
--        ThrowXMLwithMemMgr1(NetAccessorException,
--                 XMLExcepts::NetAcc_ConnSocket, urlSource.getURLText(), fMemoryManager);
--    }
-+    return 0;
-+}
- 
--    // The port is open and ready to go.
--    // Build up the http GET command to send to the server.
--    // To do:  We should really support http 1.1.  This implementation
--    //         is weak.
--    if(httpInfo==0)
--      strcpy(fBuffer, GET);
--    else
--      switch(httpInfo->fHTTPMethod)
--      {
--        case XMLNetHTTPInfo::GET:   strcpy(fBuffer, GET); break;
--        case XMLNetHTTPInfo::PUT:   strcpy(fBuffer, PUT); break;
--        case XMLNetHTTPInfo::POST:  strcpy(fBuffer, POST); break;
--      }
--    if (pathAsASCII != 0)
--    {
--         strcat(fBuffer, pathAsASCII);
--    }
-+bool UnixHTTPURLInputStream::send(const char *buf, unsigned int len)
-+{
-+    unsigned int done = 0;
-+    int ret;
- 
--    if (queryAsASCII != 0)
--    {
--        size_t n = strlen(fBuffer);
--        fBuffer[n] = chQuestion;
--        fBuffer[n+1] = chNull;
--        strcat(fBuffer, queryAsASCII);
-+    while(done < len) {
-+        ret = ::send(fSocket, buf + done, len - done, 0);
-+        if(ret == -1) return false;
-+        done += ret;
-     }
- 
--    if (fragmentAsASCII != 0)
--    {
--        strcat(fBuffer, fragmentAsASCII);
--    }
--    strcat(fBuffer, HTTP10);
-+    return true;
-+}
- 
--    strcat(fBuffer, HOST);
--    strcat(fBuffer, hostNameAsASCII);
--    if (portNumber != 80)
--    {
--        strcat(fBuffer,COLON);
--        strcat(fBuffer,portAsASCII);
--    }
--    strcat(fBuffer, CRLF);
-+UnixHTTPURLInputStream::UnixHTTPURLInputStream(const XMLURL& urlSource, const XMLNetHTTPInfo* httpInfo/*=0*/)
-+      : fSocket(0)
-+      , fBytesProcessed(0)
-+      , fBuffer(1023, urlSource.getMemoryManager())
-+      , fContentType(0)
-+      , fMemoryManager(urlSource.getMemoryManager())
-+{
-+    //
-+    //  Constants in ASCII to send/check in the HTTP request/response
-+    //
- 
--    const XMLCh* username = urlSource.getUser();
--    const XMLCh* password = urlSource.getPassword();
--    if (username && password)
--    {
--        XMLBuffer userPass(256, fMemoryManager);
--        userPass.append(username);
--        userPass.append(chColon);
--        userPass.append(password);
--        char* userPassAsCharStar = XMLString::transcode(userPass.getRawBuffer(), fMemoryManager);
--        ArrayJanitor<char>  janBuf(userPassAsCharStar, fMemoryManager);
-+    static const char *CRLF2X = "\r\n\r\n";
-+    static const char *LF2X = "\n\n";
- 
--        unsigned int len;
--        XMLByte* encodedData = Base64::encode((XMLByte *)userPassAsCharStar, strlen(userPassAsCharStar), &len, fMemoryManager);
--        ArrayJanitor<XMLByte>  janBuf2(encodedData, fMemoryManager);
-+    //
-+    //  Convert the hostName to the platform's code page for gethostbyname and
-+    //  inet_addr functions.
-+    //
- 
--        if (encodedData)
--        {
--            // HTTP doesn't want the 0x0A separating the data in chunks of 76 chars per line
--            XMLByte* authData = (XMLByte*)fMemoryManager->allocate((len+1)*sizeof(XMLByte));
--            ArrayJanitor<XMLByte>  janBuf(authData, fMemoryManager);
--            XMLByte* cursor=authData;
--            for(unsigned int i=0;i<len;i++)
--                if(encodedData[i]!=chLF)
--                    *cursor++=encodedData[i];
--            *cursor++=0;
--            strcat(fBuffer, AUTHORIZATION);
--            strcat(fBuffer, (char*)authData);
--            strcat(fBuffer, CRLF);
--        }
--    }
-+    const XMLCh*        hostName = urlSource.getHost();
-+    char*               hostNameAsCharStar = XMLString::transcode(hostName, fMemoryManager);
-+    ArrayJanitor<char>  janHostNameAsCharStar(hostNameAsCharStar, fMemoryManager);
- 
--    if(httpInfo!=0 && httpInfo->fHeaders!=0)
--        strncat(fBuffer,httpInfo->fHeaders,httpInfo->fHeadersLen);
-+    XMLURL url(urlSource);
-+    int redirectCount = 0;
-+    SocketJanitor janSock(0);
-+    
-+    do {
-+        //
-+        // Set up a socket.
-+        //
- 
--    strcat(fBuffer, CRLF);
-+        struct hostent *hostEntPtr = 0;
-+        struct sockaddr_in sa;
- 
--    // Send the http request
--    int lent = strlen(fBuffer);
--    int  aLent = 0;
-+        // Use the hostName in the local code page ....
-+        if((hostEntPtr = gethostbyname(hostNameAsCharStar)) == NULL)
-+        {
-+            unsigned long  numAddress = inet_addr(hostNameAsCharStar);
-+            if ((hostEntPtr =
-+                    gethostbyaddr((char *) &numAddress,
-+                        sizeof(unsigned long), AF_INET)) == NULL)
-+            {
-+                ThrowXMLwithMemMgr1(NetAccessorException,
-+                    XMLExcepts::NetAcc_TargetResolution, hostName, fMemoryManager);
-+            }
-+        }
- 
--    if ((aLent = write(s, (void *) fBuffer, lent)) != lent)
--    {
--        ThrowXMLwithMemMgr1(NetAccessorException,
--                 XMLExcepts::NetAcc_WriteSocket, urlSource.getURLText(), fMemoryManager);
--    }
-+        memset(&sa, '\0', sizeof(sockaddr_in));  // iSeries fix ??
-+        memcpy((void *) &sa.sin_addr,
-+            (const void *) hostEntPtr->h_addr, hostEntPtr->h_length);
-+        sa.sin_family = hostEntPtr->h_addrtype;
-+        sa.sin_port = htons((unsigned short)url.getPortNum());
-+
-+        janSock.reset();
-+        fSocket = socket(hostEntPtr->h_addrtype, SOCK_STREAM, 0);
-+        if(fSocket < 0)
-+        {
-+            ThrowXMLwithMemMgr1(NetAccessorException,
-+                XMLExcepts::NetAcc_CreateSocket, url.getURLText(), fMemoryManager);
-+        }
-+        janSock.reset(&fSocket);
- 
--    if(httpInfo!=0 && httpInfo->fPayload!=0) {
--        int  aLent = 0;
--        if ((aLent = write(s, (void *) httpInfo->fPayload, httpInfo->fPayloadLen)) != httpInfo->fPayloadLen)
-+        if(connect(fSocket, (struct sockaddr *) &sa, sizeof(sa)) < 0)
-         {
-             ThrowXMLwithMemMgr1(NetAccessorException,
--                     XMLExcepts::NetAcc_WriteSocket, urlSource.getURLText(), fMemoryManager);
-+                XMLExcepts::NetAcc_ConnSocket, url.getURLText(), fMemoryManager);
-         }
--    }
- 
--    //
--    // get the response, check the http header for errors from the server.
--    //
--    aLent = read(s, (void *)fBuffer, sizeof(fBuffer)-1);
--    if (aLent <= 0)
--    {
--        ThrowXMLwithMemMgr1(NetAccessorException, XMLExcepts::NetAcc_ReadSocket, urlSource.getURLText(), fMemoryManager);
--    }
- 
--    fBufferEnd = fBuffer+aLent;
--    *fBufferEnd = 0;
-+        // The port is open and ready to go.
-+        // Build up the http GET command to send to the server.
-+        CharBuffer requestBuffer(1023, fMemoryManager);
-+        createHTTPRequest(url, httpInfo, requestBuffer);
- 
--    // Find the break between the returned http header and any data.
--    //  (Delimited by a blank line)
--    // Hang on to any data for use by the first read from this BinHTTPURLInputStream.
--    //
--    fBufferPos = strstr(fBuffer, CRLF2X);
--    if (fBufferPos != 0)
--    {
--        fBufferPos += 4;
--        *(fBufferPos-2) = 0;
--    }
--    else
--    {
--        fBufferPos = strstr(fBuffer, LF2X);
--        if (fBufferPos != 0)
--        {
--            fBufferPos += 2;
--            *(fBufferPos-1) = 0;
-+        // Send the http request
-+        if(!send(requestBuffer.getRawBuffer(), requestBuffer.getLen())) {
-+            ThrowXMLwithMemMgr1(NetAccessorException,
-+                XMLExcepts::NetAcc_WriteSocket, url.getURLText(), fMemoryManager);
-         }
--        else
--            fBufferPos = fBufferEnd;
--    }
- 
--    // Make sure the header includes an HTTP 200 OK response.
--    //
--    char *p = strstr(fBuffer, HTTP);
--    if (p == 0)
--    {
--        ThrowXMLwithMemMgr1(NetAccessorException, XMLExcepts::NetAcc_ReadSocket, urlSource.getURLText(), fMemoryManager);
--    }
-+        if(httpInfo && httpInfo->fPayload) {
-+            if(!send(httpInfo->fPayload, httpInfo->fPayloadLen)) {
-+                ThrowXMLwithMemMgr1(NetAccessorException,
-+                    XMLExcepts::NetAcc_WriteSocket, url.getURLText(), fMemoryManager);
-+            }
-+        }
- 
--    p = strchr(p, chSpace);
--    if (p == 0)
--    {
--        ThrowXMLwithMemMgr1(NetAccessorException, XMLExcepts::NetAcc_ReadSocket, urlSource.getURLText(), fMemoryManager);
--    }
--  
--    if (memcmp(p, resp200, strlen(resp200)))
--    {
--        // Most likely a 404 Not Found error.
--        //   Should recognize and handle the forwarding responses.
-         //
--        ThrowXMLwithMemMgr1(NetAccessorException, XMLExcepts::File_CouldNotOpenFile, urlSource.getURLText(), fMemoryManager);
--    }
-+        // get the response, check the http header for errors from the server.
-+        //
-+        char tmpBuf[1024];
-+        int ret;
-+
-+        fBuffer.reset();
-+        while(true) {
-+            ret = ::recv(fSocket, tmpBuf, sizeof(tmpBuf), 0);
-+            if(ret == -1) {
-+                ThrowXMLwithMemMgr1(NetAccessorException, XMLExcepts::NetAcc_ReadSocket, url.getURLText(), fMemoryManager);
-+            }
-+
-+            fBuffer.append(tmpBuf, ret);
-+
-+            fBufferPos = strstr(fBuffer.getRawBuffer(), CRLF2X);
-+            if(fBufferPos != 0) {
-+                fBufferPos += 4;
-+                *(fBufferPos - 2) = 0;
-+                break;
-+            }
-+
-+            fBufferPos = strstr(fBuffer.getRawBuffer(), LF2X);
-+            if(fBufferPos != 0) {
-+                fBufferPos += 2;
-+                *(fBufferPos - 1) = 0;
-+                break;
-+            }
-+        }
-+
-+        int status = parseResponseStatus();
-+        if(status < 0) {
-+            ThrowXMLwithMemMgr1(NetAccessorException, XMLExcepts::NetAcc_ReadSocket, url.getURLText(), fMemoryManager);
-+        }
- 
--    fSocket = *janSock.release();
-+        if(status == 200) {
-+            // HTTP 200 OK response means we're done.
-+            // We're done
-+            break;
-+        }
-+        // a 3xx response means there was an HTTP redirect
-+        else if(status >= 300 && status <= 307) {
-+            redirectCount++;
-+
-+            XMLCh *newURLString = findHeader("Location");
-+            ArrayJanitor<XMLCh> janNewURLString(newURLString, fMemoryManager);
-+
-+            XMLURL newURL(fMemoryManager);
-+            newURL.setURL(url, newURLString);
-+            if(newURL.getProtocol() != XMLURL::HTTP) {
-+                ThrowXMLwithMemMgr1(NetAccessorException, XMLExcepts::File_CouldNotOpenFile, newURL.getURLText(), fMemoryManager);
-+            }
-+
-+            url = newURL;
-+
-+            janHostNameAsCharStar.release();
-+            hostNameAsCharStar = XMLString::transcode(newURL.getHost(), fMemoryManager);
-+            janHostNameAsCharStar.reset(hostNameAsCharStar, fMemoryManager);
-+        }
-+        else {    		
-+            // Most likely a 404 Not Found error.
-+            ThrowXMLwithMemMgr1(NetAccessorException, XMLExcepts::File_CouldNotOpenFile, url.getURLText(), fMemoryManager);
-+        }
-+    } while(redirectCount < 6);
- 
-+    janSock.release();
- }
- 
- 
-@@ -450,14 +459,24 @@
- {
-     shutdown(fSocket, 2);
-     close(fSocket);
-+
-+    if(fContentType) fMemoryManager->deallocate(fContentType);
- }
- 
-+const XMLCh *UnixHTTPURLInputStream::getContentType() const
-+{
-+    if(fContentType == 0) {
-+        // mutable
-+        const_cast<XMLCh*&>(fContentType) = findHeader("Content-Type");
-+    }
-+    return fContentType;
-+}
- 
- unsigned int UnixHTTPURLInputStream::readBytes(XMLByte* const    toFill
-                                       , const unsigned int    maxToRead)
- {
--    unsigned int len = fBufferEnd - fBufferPos;
--    if (len > 0)
-+    unsigned int len = fBuffer.getRawBuffer() + fBuffer.getLen() - fBufferPos;
-+    if(len > 0)
-     {
-         // If there's any data left over in the buffer into which we first
-         //   read from the server (to get the http header), return that.
-@@ -472,7 +491,7 @@
-         // Read some from the socket, straight into our caller's buffer.
-         //
-         len = read(fSocket, (void *) toFill, maxToRead);
--        if (len == -1)
-+        if (len == (unsigned int)-1)
-         {
-             ThrowXMLwithMemMgr(NetAccessorException, XMLExcepts::NetAcc_ReadSocket, fMemoryManager);
-         }
-diff -ru xerces-c-src_2_8_0-release/src/xercesc/util/NetAccessors/Socket/UnixHTTPURLInputStream.hpp xerces-c-src_2_8_0/src/xercesc/util/NetAccessors/Socket/UnixHTTPURLInputStream.hpp
---- xerces-c-src_2_8_0-release/src/xercesc/util/NetAccessors/Socket/UnixHTTPURLInputStream.hpp	2008-02-08 15:30:17.000000000 +0000
-+++ xerces-c-src_2_8_0/src/xercesc/util/NetAccessors/Socket/UnixHTTPURLInputStream.hpp	2008-01-28 23:49:33.000000000 +0000
-@@ -27,10 +27,132 @@
- #include <xercesc/util/XMLExceptMsgs.hpp>
- #include <xercesc/util/BinInputStream.hpp>
- #include <xercesc/util/XMLNetAccessor.hpp>
-+#include <xercesc/framework/MemoryManager.hpp>
- 
- XERCES_CPP_NAMESPACE_BEGIN
- 
- //
-+// This class implements a simple expanding character buffer
-+//
-+class XMLUTIL_EXPORT CharBuffer
-+{
-+public:
-+    CharBuffer(unsigned int capacity = 1023,
-+               MemoryManager *manager = XMLPlatformUtils::fgMemoryManager)
-+        : fCapacity(capacity),
-+          fIndex(0),
-+          fMemoryManager(manager)
-+    {
-+        fBuffer = (char*)fMemoryManager->allocate((fCapacity + 1) * sizeof(char));
-+    }
-+
-+    ~CharBuffer()
-+    {
-+        fMemoryManager->deallocate(fBuffer);
-+    }
-+
-+    const char* getRawBuffer() const
-+    {
-+        fBuffer[fIndex] = 0;
-+        return fBuffer;
-+    }
-+
-+    char* getRawBuffer()
-+    {
-+        fBuffer[fIndex] = 0;
-+        return fBuffer;
-+    }
-+
-+    unsigned int getLen() const
-+    {
-+        return fIndex;
-+    }
-+
-+    void reset()
-+    {
-+        fIndex = 0;
-+    }
-+
-+    void append(const char *chars)
-+    {
-+        if(chars != 0 && *chars != 0) {
-+            // get length of chars
-+            unsigned int count = 0;
-+            for(; *(chars+count); ++count);
-+
-+            if(fIndex + count >= fCapacity) {
-+                insureCapacity(count);
-+            }  
-+            memcpy(&fBuffer[fIndex], chars, count * sizeof(char));
-+            fIndex += count;
-+        }
-+    }
-+
-+    void append(const char *chars, unsigned int len)
-+    {
-+        if(chars != 0 && len != 0) {
-+            if(fIndex + len >= fCapacity) {
-+                insureCapacity(len);
-+            }  
-+            memcpy(&fBuffer[fIndex], chars, len * sizeof(char));
-+            fIndex += len;
-+        }
-+    }
-+
-+    void appendDecimalNumber(unsigned int n)
-+    {
-+        if(n >= 10) appendDecimalNumber(n / 10);
-+
-+        if(fIndex + 1 >= fCapacity)
-+            insureCapacity(1);
-+
-+        fBuffer[fIndex] = '0' + n;
-+        ++fIndex;
-+    }
-+
-+    void set(const char *chars)
-+    {
-+        reset();
-+        append(chars);
-+    }
-+
-+private:
-+    // -----------------------------------------------------------------------
-+    //  Unimplemented constructors and operators
-+    // -----------------------------------------------------------------------
-+    CharBuffer(const CharBuffer &);
-+    CharBuffer &operator=(const CharBuffer &);
-+
-+    void insureCapacity(unsigned int extraNeeded)
-+    {
-+        // If we can't handle it, try doubling the buffer size.
-+        unsigned int newCap = (fIndex + extraNeeded) * 2;
-+
-+        if(newCap > fCapacity)
-+        {
-+            // Allocate new buffer
-+            char* newBuf = (char*)fMemoryManager->allocate((newCap + 1) * sizeof(char));
-+ 
-+            // Copy over the old stuff
-+            memcpy(newBuf, fBuffer, fIndex * sizeof(char));
-+
-+            // Clean up old buffer and store new stuff
-+            fMemoryManager->deallocate(fBuffer);
-+            fBuffer = newBuf;
-+            fCapacity = newCap;
-+        }
-+    }
-+
-+    // -----------------------------------------------------------------------
-+    //  Private data members
-+    // -----------------------------------------------------------------------
-+    char *fBuffer;
-+    unsigned int fCapacity;
-+    unsigned int fIndex;
-+    MemoryManager *fMemoryManager;
-+};
-+
-+//
- // This class implements the BinInputStream interface specified by the XML
- // parser.
- //
-@@ -48,6 +170,7 @@
-         , const unsigned int    maxToRead
-     );
- 
-+    const XMLCh *getContentType() const;
- 
- private :
-     // -----------------------------------------------------------------------
-@@ -56,6 +179,11 @@
-     UnixHTTPURLInputStream(const UnixHTTPURLInputStream&);
-     UnixHTTPURLInputStream& operator=(const UnixHTTPURLInputStream&);
- 
-+    void createHTTPRequest(const XMLURL &urlSource, const XMLNetHTTPInfo *httpInfo, CharBuffer &buffer);
-+    int parseResponseStatus() const;
-+    XMLCh *findHeader(const char *name) const;
-+    bool send(const char *buf, unsigned int len);
-+
-     // -----------------------------------------------------------------------
-     //  Private data members
-     //
-@@ -68,16 +196,16 @@
-     //      Holds the http header, plus the first part of the actual
-     //      data.  Filled at the time the stream is opened, data goes
-     //      out to user in response to readBytes().
--    //  fBufferPos, fBufferEnd
-+    //  fBufferPos
-     //      Pointers into fBuffer, showing start and end+1 of content
-     //      that readBytes must return.
-     // -----------------------------------------------------------------------
- 
-     int                 fSocket;
-     unsigned int        fBytesProcessed;
--    char                fBuffer[4000];
--    char *              fBufferEnd;
-+    CharBuffer          fBuffer;
-     char *              fBufferPos;
-+    XMLCh *             fContentType;
-     MemoryManager*      fMemoryManager;
- }; // UnixHTTPURLInputStream
-
---- xerces-c-src_2_8_0-release/src/xercesc/util/NetAccessors/WinSock/BinHTTPURLInputStream.cpp	2007-08-28 14:44:16.000000000 -0400
-+++ xerces-c-src_2_8_0/src/xercesc/util/NetAccessors/WinSock/BinHTTPURLInputStream.cpp	2008-02-11 15:03:57.000000000 -0500
-@@ -20,9 +20,6 @@
-  */
- 
- 
--#define INCL_WINSOCK_API_TYPEDEFS 1
--#include <winsock2.h>
--#include <windows.h>
- #include <tchar.h>
- 
- #include <stdio.h>
-@@ -37,6 +34,7 @@
- #include <xercesc/util/Janitor.hpp>
- #include <xercesc/util/XMLUniDefs.hpp>
- #include <xercesc/util/Base64.hpp>
-+#include <xercesc/util/TransService.hpp>
- 
- XERCES_CPP_NAMESPACE_BEGIN
- 
-@@ -52,7 +50,14 @@
-     SOCKET* get() const { return fData; }
-     SOCKET* release() {	SOCKET* p = fData; fData = 0; return p; }
- 
--    void reset(SOCKET* p = 0) { if(fData) BinHTTPURLInputStream::closesocket(*fData); fData=p; }
-+    void reset(SOCKET* p = 0)
-+    {
-+        if(fData) {
-+            BinHTTPURLInputStream::shutdown(*fData, SD_BOTH);
-+            BinHTTPURLInputStream::closesocket(*fData);
-+        }
-+        fData = p;
-+    }
-     bool isDataNull() { return (fData == 0); }
- 
- private :
-@@ -73,6 +78,218 @@
-     SOCKET*  fData;
- };
- 
-+class TranscodeStr
-+{
-+public:
-+    TranscodeStr(const XMLCh *in, XMLTranscoder* trans,
-+                 MemoryManager *manager = XMLPlatformUtils::fgMemoryManager)
-+        : fString(0),
-+          fBytesWritten(0),
-+          fMemoryManager(manager)
-+    {
-+        if(in) {
-+            unsigned int len = XMLString::stringLen(in) + 1;
-+
-+            unsigned int allocSize = len * sizeof(XMLCh);
-+            fString = (unsigned char*)fMemoryManager->allocate(allocSize);
-+
-+            unsigned int charsRead;
-+
-+            unsigned int charsDone = 0;
-+
-+            while(true) {
-+                fBytesWritten += trans->transcodeTo(in + charsDone, len - charsDone,
-+                                                    fString + fBytesWritten, allocSize - fBytesWritten,
-+                                                    charsRead, XMLTranscoder::UnRep_Throw);
-+                charsDone += charsRead;
-+
-+                if(charsDone == len) break;
-+
-+                allocSize *= 2;
-+                unsigned char *newBuf = (unsigned char*)fMemoryManager->allocate(allocSize);
-+                memcpy(newBuf, fString, fBytesWritten);
-+                fMemoryManager->deallocate(fString);
-+                fString = newBuf;
-+            }
-+        }
-+    }
-+
-+    ~TranscodeStr()
-+    {
-+        if(fString)
-+            fMemoryManager->deallocate(fString);
-+    }
-+
-+    const unsigned char *str() const
-+    {
-+        return fString;
-+    }
-+
-+    unsigned int len() const
-+    {
-+        return fBytesWritten;
-+    }
-+
-+private:
-+    unsigned char *fString;
-+    unsigned int fBytesWritten;
-+    MemoryManager *fMemoryManager;
-+};
-+
-+static const char *CRLF = "\r\n";
-+
-+void BinHTTPURLInputStream::createHTTPRequest(const XMLURL &urlSource, const XMLNetHTTPInfo *httpInfo, CharBuffer &buffer)
-+{
-+    static const char *GET = "GET ";
-+    static const char *PUT = "PUT ";
-+    static const char *POST = "POST ";
-+    static const char *HTTP10 = " HTTP/1.0\r\n";
-+    static const char *HOST = "Host: ";
-+    static const char *AUTHORIZATION = "Authorization: Basic ";
-+    static const char *COLON = ":";
-+
-+    XMLTransService::Codes failReason;
-+    const unsigned int blockSize = 2048;
-+
-+    XMLTranscoder* trans = XMLPlatformUtils::fgTransService->makeNewTranscoderFor("ISO8859-1", failReason, blockSize, fMemoryManager);
-+    Janitor<XMLTranscoder> janTrans(trans);
-+
-+    TranscodeStr hostName(urlSource.getHost(), trans, fMemoryManager);
-+    TranscodeStr path(urlSource.getPath(), trans, fMemoryManager);
-+    TranscodeStr fragment(urlSource.getFragment(), trans, fMemoryManager);
-+    TranscodeStr query(urlSource.getQuery(), trans, fMemoryManager);
-+
-+    // Build up the http GET command to send to the server.
-+    // To do:  We should really support http 1.1.  This implementation
-+    //         is weak.
-+    if(httpInfo) {
-+        switch(httpInfo->fHTTPMethod) {
-+        case XMLNetHTTPInfo::GET:   buffer.append(GET); break;
-+        case XMLNetHTTPInfo::PUT:   buffer.append(PUT); break;
-+        case XMLNetHTTPInfo::POST:  buffer.append(POST); break;
-+        }
-+    }
-+    else {
-+        buffer.append(GET);
-+    }
-+
-+    if(path.str() != 0) {
-+        buffer.append((char*)path.str());
-+    }
-+    else {
-+        buffer.append("/");
-+    }
-+
-+    if(query.str() != 0) {
-+        buffer.append("?");
-+        buffer.append((char*)query.str());
-+    }
-+
-+    if(fragment.str() != 0) {
-+        buffer.append((char*)fragment.str());
-+    }
-+    buffer.append(HTTP10);
-+
-+    buffer.append(HOST);
-+    buffer.append((char*)hostName.str());
-+    if(urlSource.getPortNum() != 80)
-+    {
-+        buffer.append(COLON);
-+        buffer.appendDecimalNumber(urlSource.getPortNum());
-+    }
-+    buffer.append(CRLF);
-+
-+    const XMLCh *username = urlSource.getUser();
-+    const XMLCh *password = urlSource.getPassword();
-+    if(username && password) {
-+        XMLBuffer userPassBuf(256, fMemoryManager);
-+        userPassBuf.append(username);
-+        userPassBuf.append(chColon);
-+        userPassBuf.append(password);
-+
-+        TranscodeStr userPass(userPassBuf.getRawBuffer(), trans, fMemoryManager);
-+
-+        unsigned int len;
-+        XMLByte* encodedData = Base64::encode((XMLByte*)userPass.str(), userPass.len() - 1, &len, fMemoryManager);
-+        ArrayJanitor<XMLByte> janBuf2(encodedData, fMemoryManager);
-+
-+        if(encodedData) {
-+            // HTTP doesn't want the 0x0A separating the data in chunks of 76 chars per line
-+            XMLByte* authData = (XMLByte*)fMemoryManager->allocate((len+1)*sizeof(XMLByte));
-+            ArrayJanitor<XMLByte> janBuf(authData, fMemoryManager);
-+            XMLByte *cursor = authData;
-+            for(unsigned int i = 0; i < len; ++i)
-+                if(encodedData[i] != chLF)
-+                    *cursor++ = encodedData[i];
-+            *cursor++ = 0;
-+            buffer.append(AUTHORIZATION);
-+            buffer.append((char*)authData);
-+            buffer.append(CRLF);
-+        }
-+    }
-+
-+    if(httpInfo && httpInfo->fHeaders)
-+        buffer.append(httpInfo->fHeaders, httpInfo->fHeadersLen);
-+
-+    buffer.append(CRLF);
-+}
-+
-+int BinHTTPURLInputStream::parseResponseStatus() const
-+{
-+    char *p = strstr(const_cast<char*>(fBuffer.getRawBuffer()), "HTTP");
-+    if(p == 0) return -1;
-+
-+    p = strchr(p, chSpace);
-+    if(p == 0) return -1;
-+  
-+    return atoi(p);
-+}
-+
-+XMLCh *BinHTTPURLInputStream::findHeader(const char *name) const
-+{
-+    int len = strlen(name);
-+
-+    char *p = strstr(const_cast<char*>(fBuffer.getRawBuffer()), name);
-+    while(p != 0) {
-+        if(*(p - 1) == '\n' &&
-+            *(p + len) == ':' &&
-+            *(p + len + 1) == ' ') {
-+
-+            p += len + 2;
-+            
-+            char *endP = strstr(p, CRLF);
-+            if(endP == 0) {
-+                for(endP = p; *endP != 0; ++endP);
-+            }
-+
-+            char tmp = *endP;
-+            *endP = 0;
-+
-+            XMLCh *value = XMLString::transcode(p, fMemoryManager);
-+            *endP = tmp;
-+            return value;
-+        }
-+
-+        p = strstr(p + 1, name);
-+    }
-+
-+    return 0;
-+}
-+
-+bool BinHTTPURLInputStream::send(const char *buf, unsigned int len)
-+{
-+    unsigned int done = 0;
-+    int ret;
-+
-+    while(done < len) {
-+        ret = send(fSocketHandle, buf + done, len - done, 0);
-+        if(ret == SOCKET_ERROR) return false;
-+        done += ret;
-+    }
-+
-+    return true;
-+}
-+
- static HMODULE gWinsockLib = NULL;
- static LPFN_GETHOSTBYNAME gWSgethostbyname = NULL;
- static LPFN_INET_ADDR gWSinet_addr = NULL;
-@@ -190,40 +407,43 @@
- 	return (*gWShtons)(hostshort);
- }
- 
--unsigned int BinHTTPURLInputStream::socket(int af,int type,int protocol)
-+SOCKET BinHTTPURLInputStream::socket(int af,int type,int protocol)
- {
- 	return (*gWSsocket)(af,type,protocol);
- }
- 
--int BinHTTPURLInputStream::connect(unsigned int s,const sockaddr* name,int namelen)
-+int BinHTTPURLInputStream::connect(SOCKET s,const sockaddr* name,int namelen)
- {
- 	return (*gWSconnect)(s,name,namelen);
- }
- 
--int BinHTTPURLInputStream::send(unsigned int s,const char* buf,int len,int flags)
-+int BinHTTPURLInputStream::send(SOCKET s,const char* buf,int len,int flags)
- {
- 	return (*gWSsend)(s,buf,len,flags);
- }
- 
--int BinHTTPURLInputStream::recv(unsigned int s,char* buf,int len,int flags)
-+int BinHTTPURLInputStream::recv(SOCKET s,char* buf,int len,int flags)
- {
- 	return (*gWSrecv)(s,buf,len,flags);
- }
- 
--int BinHTTPURLInputStream::shutdown(unsigned int s,int how)
-+int BinHTTPURLInputStream::shutdown(SOCKET s,int how)
- {
- 	return (*gWSshutdown)(s,how);
- }
- 
--int BinHTTPURLInputStream::closesocket(unsigned int socket)
-+int BinHTTPURLInputStream::closesocket(SOCKET socket)
- {
- 	return (*gWSclosesocket)(socket);
- }
- 
- 
- BinHTTPURLInputStream::BinHTTPURLInputStream(const XMLURL& urlSource, const XMLNetHTTPInfo* httpInfo /*=0*/)
--      : fSocketHandle(0)
-+      : fMemoryManager(urlSource.getMemoryManager())
-+      , fSocketHandle(0)
-       , fBytesProcessed(0)
-+      , fBuffer(1023, urlSource.getMemoryManager())
-+      , fContentType(0)
- {
-     if(!fInitialized)
-     {
-@@ -243,257 +463,160 @@
-          }
-     }
- 
--    fMemoryManager = urlSource.getMemoryManager();
-+    //
-+    //  Constants in ASCII to send/check in the HTTP request/response
-+    //
-+
-+    static const char *CRLF2X = "\r\n\r\n";
-+    static const char *LF2X = "\n\n";
-+
-     //
-     // Pull all of the parts of the URL out of th urlSource object, and transcode them
-     //   and transcode them back to ASCII.
-     //
-     const XMLCh*        hostName = urlSource.getHost();
--    char*               hostNameAsCharStar = XMLString::transcode(hostName, urlSource.getMemoryManager());
--    ArrayJanitor<char>  janBuf1(hostNameAsCharStar, urlSource.getMemoryManager());
-+    char*               hostNameAsCharStar = XMLString::transcode(hostName, fMemoryManager);
-+    ArrayJanitor<char>  janHostNameAsCharStar(hostNameAsCharStar, fMemoryManager);
- 
--    const XMLCh*        path = urlSource.getPath();
--    char*               pathAsCharStar = XMLString::transcode(path, urlSource.getMemoryManager());
--    ArrayJanitor<char>  janBuf2(pathAsCharStar, urlSource.getMemoryManager());
--
--    const XMLCh*        fragment = urlSource.getFragment();
--    char*               fragmentAsCharStar = 0;
--    if (fragment)
--        fragmentAsCharStar = XMLString::transcode(fragment, urlSource.getMemoryManager());
--    ArrayJanitor<char>  janBuf3(fragmentAsCharStar, urlSource.getMemoryManager());
--
--    const XMLCh*        query = urlSource.getQuery();
--    char*               queryAsCharStar = 0;
--    if (query)
--        queryAsCharStar = XMLString::transcode(query, urlSource.getMemoryManager());
--    ArrayJanitor<char>  janBuf4(queryAsCharStar, urlSource.getMemoryManager());		
-+    XMLURL url(urlSource);
-+    int redirectCount = 0;
-+    SocketJanitor janSock(0);
-+    
-+    do {
-+        //
-+        // Set up a socket.
-+        //
-+        struct hostent*     hostEntPtr = 0;
-+        struct sockaddr_in  sa;
- 
--    unsigned short      portNumber = (unsigned short) urlSource.getPortNum();
--
--    //
--    // Set up a socket.
--    //
--    struct hostent*     hostEntPtr = 0;
--    struct sockaddr_in  sa;
- 
-+        if ((hostEntPtr = gethostbyname(hostNameAsCharStar)) == NULL)
-+        {
-+            unsigned long  numAddress = inet_addr(hostNameAsCharStar);
-+            if (numAddress == INADDR_NONE)
-+            {
-+                // Call WSAGetLastError() to get the error number.
-+                ThrowXMLwithMemMgr1(NetAccessorException,
-+                    XMLExcepts::NetAcc_TargetResolution, hostName, fMemoryManager);
-+            }
-+            if ((hostEntPtr =
-+                    gethostbyaddr((const char *) &numAddress,
-+                        sizeof(unsigned long), AF_INET)) == NULL)
-+            {
-+                // Call WSAGetLastError() to get the error number.
-+                ThrowXMLwithMemMgr1(NetAccessorException,
-+                    XMLExcepts::NetAcc_TargetResolution, hostName, fMemoryManager);
-+            }
-+        }
- 
--    if ((hostEntPtr = gethostbyname(hostNameAsCharStar)) == NULL)
--    {
--        unsigned long  numAddress = inet_addr(hostNameAsCharStar);
--        if (numAddress == INADDR_NONE)
-+        memcpy((void *) &sa.sin_addr,
-+            (const void *) hostEntPtr->h_addr, hostEntPtr->h_length);
-+        sa.sin_family = hostEntPtr->h_addrtype;
-+        sa.sin_port = htons((unsigned short)url.getPortNum());
-+
-+        janSock.reset();
-+        fSocketHandle = socket(hostEntPtr->h_addrtype, SOCK_STREAM, 0);
-+        if (fSocketHandle == INVALID_SOCKET)
-         {
-             // Call WSAGetLastError() to get the error number.
-             ThrowXMLwithMemMgr1(NetAccessorException,
--                     XMLExcepts::NetAcc_TargetResolution, hostName, fMemoryManager);
-+                XMLExcepts::NetAcc_CreateSocket, url.getURLText(), fMemoryManager);
-         }
--        if ((hostEntPtr =
--                gethostbyaddr((const char *) &numAddress,
--                              sizeof(unsigned long), AF_INET)) == NULL)
-+        janSock.reset(&fSocketHandle);
-+
-+        if (connect(fSocketHandle, (struct sockaddr *) &sa, sizeof(sa)) == SOCKET_ERROR)
-         {
-             // Call WSAGetLastError() to get the error number.
-             ThrowXMLwithMemMgr1(NetAccessorException,
--                     XMLExcepts::NetAcc_TargetResolution, hostName, fMemoryManager);
-+                XMLExcepts::NetAcc_ConnSocket, url.getURLText(), fMemoryManager);
-         }
--    }
- 
--    memcpy((void *) &sa.sin_addr,
--           (const void *) hostEntPtr->h_addr, hostEntPtr->h_length);
--    sa.sin_family = hostEntPtr->h_addrtype;
--    sa.sin_port = htons(portNumber);
- 
--    SOCKET s = socket(hostEntPtr->h_addrtype, SOCK_STREAM, 0);
--    if (s == INVALID_SOCKET)
--    {
--        // Call WSAGetLastError() to get the error number.
--        ThrowXMLwithMemMgr1(NetAccessorException,
--                 XMLExcepts::NetAcc_CreateSocket, urlSource.getURLText(), fMemoryManager);
--    }
--    SocketJanitor janSock(&s);
--
--    if (connect(s, (struct sockaddr *) &sa, sizeof(sa)) == SOCKET_ERROR)
--    {
--        // Call WSAGetLastError() to get the error number.
--        ThrowXMLwithMemMgr1(NetAccessorException,
--                 XMLExcepts::NetAcc_ConnSocket, urlSource.getURLText(), fMemoryManager);
--    }
--
--
--    // Set a flag so we know that the headers have not been read yet.
--    bool fHeaderRead = false;
--
--    // The port is open and ready to go.
--    // Build up the http GET command to send to the server.
--    // To do:  We should really support http 1.1.  This implementation
--    //         is weak.
-+        // The port is open and ready to go.
-+        // Build up the http GET command to send to the server.
-+        CharBuffer requestBuffer(1023, fMemoryManager);
-+        createHTTPRequest(url, httpInfo, requestBuffer);
- 
--    memset(fBuffer, 0, sizeof(fBuffer));
-+        // Send the http request
-+        if(!send(requestBuffer.getRawBuffer(), requestBuffer.getLen())) {
-+            // Call WSAGetLastError() to get the error number.
-+            ThrowXMLwithMemMgr1(NetAccessorException,
-+                XMLExcepts::NetAcc_WriteSocket, url.getURLText(), fMemoryManager);
-+        }
- 
--    if(httpInfo==0)
--        strcpy(fBuffer, "GET ");
--    else {
--        switch(httpInfo->fHTTPMethod) {
--        case XMLNetHTTPInfo::GET:   strcpy(fBuffer, "GET "); break;
--        case XMLNetHTTPInfo::PUT:   strcpy(fBuffer, "PUT "); break;
--        case XMLNetHTTPInfo::POST:  strcpy(fBuffer, "POST "); break;
-+        if(httpInfo && httpInfo->fPayload) {
-+            if(!send(httpInfo->fPayload, httpInfo->fPayloadLen)) {
-+                ThrowXMLwithMemMgr1(NetAccessorException,
-+                    XMLExcepts::NetAcc_WriteSocket, url.getURLText(), fMemoryManager);
-+            }
-         }
--    }
--    strcat(fBuffer, pathAsCharStar);
- 
--    if (queryAsCharStar != 0)
--    {
--        // Tack on a ? before the fragment
--        strcat(fBuffer,"?");
--        strcat(fBuffer, queryAsCharStar);
--    }
-+        //
-+        // get the response, check the http header for errors from the server.
-+        //
-+        char tmpBuf[1024];
-+        int ret;
- 
--    if (fragmentAsCharStar != 0)
--    {
--        strcat(fBuffer, fragmentAsCharStar);
--    }
--    strcat(fBuffer, " HTTP/1.0\r\n");
-+        fBuffer.reset();
-+        while(true) {
-+            ret = recv(fSocketHandle, tmpBuf, sizeof(tmpBuf), 0);
-+            if(ret == SOCKET_ERROR) {
-+                ThrowXMLwithMemMgr1(NetAccessorException, XMLExcepts::NetAcc_ReadSocket, url.getURLText(), fMemoryManager);
-+            }
- 
-+            fBuffer.append(tmpBuf, ret);
- 
--    strcat(fBuffer, "Host: ");
--    strcat(fBuffer, hostNameAsCharStar);
--    if (portNumber != 80)
--    {
--        strcat(fBuffer, ":");
--        int i = strlen(fBuffer);
--        _itoa(portNumber, fBuffer+i, 10);
--    }
--    strcat(fBuffer, "\r\n");
--
--    const XMLCh* username = urlSource.getUser();
--    const XMLCh* password = urlSource.getPassword();
--    if (username && password)
--    {
--        XMLBuffer userPass(256, fMemoryManager);
--        userPass.append(username);
--        userPass.append(chColon);
--        userPass.append(password);
--        char* userPassAsCharStar = XMLString::transcode(userPass.getRawBuffer(), fMemoryManager);
--        ArrayJanitor<char>  janBuf(userPassAsCharStar, fMemoryManager);
-+            fBufferPos = strstr(fBuffer.getRawBuffer(), CRLF2X);
-+            if(fBufferPos != 0) {
-+                fBufferPos += 4;
-+                *(fBufferPos - 2) = 0;
-+                break;
-+            }
- 
--        unsigned int len;
--        XMLByte* encodedData = Base64::encode((XMLByte *)userPassAsCharStar, strlen(userPassAsCharStar), &len, fMemoryManager);
--        ArrayJanitor<XMLByte>  janBuf2(encodedData, fMemoryManager);
-- 
--        if (encodedData)
--        {
--            // HTTP doesn't want the 0x0A separating the data in chunks of 76 chars per line
--            XMLByte* authData = (XMLByte*)fMemoryManager->allocate((len+1)*sizeof(XMLByte));
--            ArrayJanitor<XMLByte>  janBuf(authData, fMemoryManager);
--            XMLByte* cursor=authData;
--            for(unsigned int i=0;i<len;i++)
--                if(encodedData[i]!=chLF)
--                    *cursor++=encodedData[i];
--            *cursor++=0;
--            strcat(fBuffer, "Authorization: Basic ");
--            strcat(fBuffer, (char*)authData);
--            strcat(fBuffer, "\r\n");
-+            fBufferPos = strstr(fBuffer.getRawBuffer(), LF2X);
-+            if(fBufferPos != 0) {
-+                fBufferPos += 2;
-+                *(fBufferPos - 1) = 0;
-+                break;
-+            }
-         }
--    }
- 
--    if(httpInfo!=0 && httpInfo->fHeaders!=0)
--        strncat(fBuffer,httpInfo->fHeaders,httpInfo->fHeadersLen);
--
--    strcat(fBuffer, "\r\n");
--
--    // Send the http request
--    int lent = strlen(fBuffer);
--    int  aLent = 0;
--    if ((aLent = send(s, fBuffer, lent, 0)) != lent)
--    {
--        // Call WSAGetLastError() to get the error number.
--        ThrowXMLwithMemMgr1(NetAccessorException,
--                 XMLExcepts::NetAcc_WriteSocket, urlSource.getURLText(), fMemoryManager);
--    }
--
--    if(httpInfo!=0 && httpInfo->fPayload!=0) {
--        int  aLent = 0;
--        if ((aLent = send(s, httpInfo->fPayload, httpInfo->fPayloadLen, 0)) != httpInfo->fPayloadLen)
--        {
--            // Call WSAGetLastError() to get the error number.
--            ThrowXMLwithMemMgr1(NetAccessorException,
--                     XMLExcepts::NetAcc_WriteSocket, urlSource.getURLText(), fMemoryManager);
-+        int status = parseResponseStatus();
-+        if(status < 0) {
-+            ThrowXMLwithMemMgr1(NetAccessorException, XMLExcepts::NetAcc_ReadSocket, url.getURLText(), fMemoryManager);
-         }
--    }
- 
--    //
--    // get the response, check the http header for errors from the server.
--    //
--    memset(fBuffer, 0, sizeof(fBuffer));
--    aLent = recv(s, fBuffer, sizeof(fBuffer)-1, 0);
--    if (aLent == SOCKET_ERROR || aLent == 0)
--    {
--        // Call WSAGetLastError() to get the error number.
--        ThrowXMLwithMemMgr1(NetAccessorException, XMLExcepts::NetAcc_ReadSocket, urlSource.getURLText(), fMemoryManager);
--    }
--
--    fBufferEnd = fBuffer+aLent;
--    *fBufferEnd = 0;
--
--    do {
--        // Find the break between the returned http header and any data.
--        //  (Delimited by a blank line)
--        // Hang on to any data for use by the first read from this BinHTTPURLInputStream.
--        //
--        fBufferPos = strstr(fBuffer, "\r\n\r\n");
--        if (fBufferPos != 0)
--        {
--            fBufferPos += 4;
--            *(fBufferPos-2) = 0;
--            fHeaderRead = true;
-+        if(status == 200) {
-+            // HTTP 200 OK response means we're done.
-+            // We're done
-+            break;
-         }
--        else
--        {
--            fBufferPos = strstr(fBuffer, "\n\n");
--            if (fBufferPos != 0)
--            {
--                fBufferPos += 2;
--                *(fBufferPos-1) = 0;
--                fHeaderRead = true;
--            }
--            else
--            {
--                //
--                // Header is not yet read, do another recv() to get more data...
--                aLent = recv(s, fBufferEnd, (sizeof(fBuffer) - 1) - (fBufferEnd - fBuffer), 0);
--                if (aLent == SOCKET_ERROR || aLent == 0)
--                {
--                    // Call WSAGetLastError() to get the error number.
--                    ThrowXMLwithMemMgr1(NetAccessorException, XMLExcepts::NetAcc_ReadSocket, urlSource.getURLText(), fMemoryManager);
--                }
--                fBufferEnd = fBufferEnd + aLent;
--                *fBufferEnd = 0;
-+        // a 3xx response means there was an HTTP redirect
-+        else if(status >= 300 && status <= 307) {
-+            redirectCount++;
-+
-+            XMLCh *newURLString = findHeader("Location");
-+            ArrayJanitor<XMLCh> janNewURLString(newURLString, fMemoryManager);
-+
-+            XMLURL newURL(fMemoryManager);
-+            newURL.setURL(url, newURLString);
-+            if(newURL.getProtocol() != XMLURL::HTTP) {
-+                ThrowXMLwithMemMgr1(NetAccessorException, XMLExcepts::File_CouldNotOpenFile, newURL.getURLText(), fMemoryManager);
-             }
--        }
--    } while(fHeaderRead == false);
- 
--    // Make sure the header includes an HTTP 200 OK response.
--    //
--    char *p = strstr(fBuffer, "HTTP");
--    if (p == 0)
--    {
--        ThrowXMLwithMemMgr1(NetAccessorException, XMLExcepts::NetAcc_ReadSocket, urlSource.getURLText(), fMemoryManager);
--    }
--
--    p = strchr(p, ' ');
--    if (p == 0)
--    {
--        ThrowXMLwithMemMgr1(NetAccessorException, XMLExcepts::NetAcc_ReadSocket, urlSource.getURLText(), fMemoryManager);
--    }
-+            url = newURL;
- 
--    int httpResponse = atoi(p);
--    if (httpResponse != 200)
--    {
--        // Most likely a 404 Not Found error.
--        //   Should recognize and handle the forwarding responses.
--        //
--        ThrowXMLwithMemMgr1(NetAccessorException, XMLExcepts::File_CouldNotOpenFile, urlSource.getURLText(), fMemoryManager);
--    }
-+            janHostNameAsCharStar.release();
-+            hostNameAsCharStar = XMLString::transcode(newURL.getHost(), fMemoryManager);
-+            janHostNameAsCharStar.reset(hostNameAsCharStar, fMemoryManager);
-+        }
-+        else {    		
-+            // Most likely a 404 Not Found error.
-+            ThrowXMLwithMemMgr1(NetAccessorException, XMLExcepts::File_CouldNotOpenFile, url.getURLText(), fMemoryManager);
-+        }
-+    } while(redirectCount < 6);
- 
--    fSocketHandle = (unsigned int) *janSock.release();
-+    janSock.release();
- }
- 
- 
-@@ -502,17 +625,28 @@
- {
-     shutdown(fSocketHandle, SD_BOTH);
-     closesocket(fSocketHandle);
-+
-+    if(fContentType) fMemoryManager->deallocate(fContentType);
- }
- 
- 
-+const XMLCh *BinHTTPURLInputStream::getContentType() const
-+{
-+    if(fContentType == 0) {
-+        // mutable
-+        const_cast<XMLCh*&>(fContentType) = findHeader("Content-Type");
-+    }
-+    return fContentType;
-+}
-+
- //
- //  readBytes
- //
- unsigned int BinHTTPURLInputStream::readBytes(XMLByte* const    toFill
-                                     , const unsigned int    maxToRead)
- {
--    unsigned int len = fBufferEnd - fBufferPos;
--    if (len > 0)
-+    unsigned int len = fBuffer.getRawBuffer() + fBuffer.getLen() - fBufferPos;
-+    if(len > 0)
-     {
-         // If there's any data left over in the buffer into which we first
-         //   read from the server (to get the http header), return that.
-@@ -526,7 +660,7 @@
-         // There was no data in the local buffer.
-         // Read some from the socket, straight into our caller's buffer.
-         //
--        len = recv((SOCKET) fSocketHandle, (char *) toFill, maxToRead, 0);
-+        len = recv(fSocketHandle, (char *) toFill, maxToRead, 0);
-         if (len == SOCKET_ERROR)
-         {
-             // Call WSAGetLastError() to get the error number.
-diff -ru xerces-c-src_2_8_0-release/src/xercesc/util/NetAccessors/WinSock/BinHTTPURLInputStream.hpp xerces-c-src_2_8_0/src/xercesc/util/NetAccessors/WinSock/BinHTTPURLInputStream.hpp
---- xerces-c-src_2_8_0-release/src/xercesc/util/NetAccessors/WinSock/BinHTTPURLInputStream.hpp	2008-02-08 15:30:17.000000000 +0000
-+++ xerces-c-src_2_8_0/src/xercesc/util/NetAccessors/WinSock/BinHTTPURLInputStream.hpp	2008-02-08 15:22:45.000000000 +0000
-@@ -28,16 +28,138 @@
- #include <xercesc/util/BinInputStream.hpp>
- #include <xercesc/util/Mutexes.hpp>
- #include <xercesc/util/XMLNetAccessor.hpp>
-+#include <xercesc/framework/MemoryManager.hpp>
-+
-+#define INCL_WINSOCK_API_TYPEDEFS 1
-+#include <winsock2.h>
-+
-+XERCES_CPP_NAMESPACE_BEGIN
- 
- //
--// This class implements the BinInputStream interface specified by the XML
--// parser.
-+// This class implements a simple expanding character buffer
- //
--struct hostent;
--struct sockaddr;
-+class XMLUTIL_EXPORT CharBuffer
-+{
-+public:
-+    CharBuffer(unsigned int capacity = 1023,
-+               MemoryManager *manager = XMLPlatformUtils::fgMemoryManager)
-+        : fCapacity(capacity),
-+          fIndex(0),
-+          fMemoryManager(manager)
-+    {
-+        fBuffer = (char*)fMemoryManager->allocate((fCapacity + 1) * sizeof(char));
-+    }
-+
-+    ~CharBuffer()
-+    {
-+        fMemoryManager->deallocate(fBuffer);
-+    }
-+
-+    const char* getRawBuffer() const
-+    {
-+        fBuffer[fIndex] = 0;
-+        return fBuffer;
-+    }
-+
-+    char* getRawBuffer()
-+    {
-+        fBuffer[fIndex] = 0;
-+        return fBuffer;
-+    }
-+
-+    unsigned int getLen() const
-+    {
-+        return fIndex;
-+    }
-+
-+    void reset()
-+    {
-+        fIndex = 0;
-+    }
-+
-+    void append(const char *chars)
-+    {
-+        if(chars != 0 && *chars != 0) {
-+            // get length of chars
-+            unsigned int count = 0;
-+            for(; *(chars+count); ++count);
-+
-+            if(fIndex + count >= fCapacity) {
-+                insureCapacity(count);
-+            }  
-+            memcpy(&fBuffer[fIndex], chars, count * sizeof(char));
-+            fIndex += count;
-+        }
-+    }
-+
-+    void append(const char *chars, unsigned int len)
-+    {
-+        if(chars != 0 && len != 0) {
-+            if(fIndex + len >= fCapacity) {
-+                insureCapacity(len);
-+            }  
-+            memcpy(&fBuffer[fIndex], chars, len * sizeof(char));
-+            fIndex += len;
-+        }
-+    }
-+
-+    void appendDecimalNumber(unsigned int n)
-+    {
-+        if(n >= 10) appendDecimalNumber(n / 10);
-+
-+        if(fIndex + 1 >= fCapacity)
-+            insureCapacity(1);
-+
-+        fBuffer[fIndex] = '0' + n;
-+        ++fIndex;
-+    }
-+
-+    void set(const char *chars)
-+    {
-+        reset();
-+        append(chars);
-+    }
- 
--XERCES_CPP_NAMESPACE_BEGIN
-+private:
-+    // -----------------------------------------------------------------------
-+    //  Unimplemented constructors and operators
-+    // -----------------------------------------------------------------------
-+    CharBuffer(const CharBuffer &);
-+    CharBuffer &operator=(const CharBuffer &);
-+
-+    void insureCapacity(unsigned int extraNeeded)
-+    {
-+        // If we can't handle it, try doubling the buffer size.
-+        unsigned int newCap = (fIndex + extraNeeded) * 2;
-+
-+        if(newCap > fCapacity)
-+        {
-+            // Allocate new buffer
-+            char* newBuf = (char*)fMemoryManager->allocate((newCap + 1) * sizeof(char));
-+ 
-+            // Copy over the old stuff
-+            memcpy(newBuf, fBuffer, fIndex * sizeof(char));
-+
-+            // Clean up old buffer and store new stuff
-+            fMemoryManager->deallocate(fBuffer);
-+            fBuffer = newBuf;
-+            fCapacity = newCap;
-+        }
-+    }
-+
-+    // -----------------------------------------------------------------------
-+    //  Private data members
-+    // -----------------------------------------------------------------------
-+    char *fBuffer;
-+    unsigned int fCapacity;
-+    unsigned int fIndex;
-+    MemoryManager *fMemoryManager;
-+};
- 
-+//
-+// This class implements the BinInputStream interface specified by the XML
-+// parser.
-+//
- class XMLUTIL_EXPORT BinHTTPURLInputStream : public BinInputStream
- {
- public :
-@@ -51,6 +173,8 @@
-         , const unsigned int    maxToRead
-     );
- 
-+    const XMLCh *getContentType() const;
-+
- 	static void Cleanup();
- 
- 
-@@ -60,6 +184,12 @@
-     // -----------------------------------------------------------------------
-     BinHTTPURLInputStream(const BinHTTPURLInputStream&);
-     BinHTTPURLInputStream& operator=(const BinHTTPURLInputStream&); 
-+
-+    void createHTTPRequest(const XMLURL &urlSource, const XMLNetHTTPInfo *httpInfo, CharBuffer &buffer);
-+    int parseResponseStatus() const;
-+    XMLCh *findHeader(const char *name) const;
-+    bool send(const char *buf, unsigned int len);
-+
-     // -----------------------------------------------------------------------
-     //  Private data members
-     //
-@@ -79,11 +209,12 @@
-     //      that readBytes must return.
-     // -----------------------------------------------------------------------
-     MemoryManager*      fMemoryManager;
--    unsigned int        fSocketHandle;
-+    SOCKET              fSocketHandle;
-     unsigned int        fBytesProcessed;
--    char                fBuffer[4000];
--    char *              fBufferEnd;
-+    CharBuffer          fBuffer;
-     char *              fBufferPos;
-+    XMLCh *             fContentType;
-+
-     static bool         fInitialized;
-     static XMLMutex*        fInitMutex;
- 
-@@ -93,12 +224,12 @@
- 	inline static unsigned long inet_addr(const char* cp);
- 	inline static hostent* gethostbyaddr(const char* addr,int len,int type);
- 	inline static unsigned short htons(unsigned short hostshort);
--	inline static unsigned int socket(int af,int type,int protocol);
--	inline static int connect(unsigned int s,const sockaddr* name,int namelen);
--	inline static int send(unsigned int s,const char* buf,int len,int flags);
--	inline static int recv(unsigned int s,char* buf,int len,int flags);
--	inline static int shutdown(unsigned int s,int how);
--	inline static int closesocket(unsigned int socket);
-+	inline static SOCKET socket(int af,int type,int protocol);
-+	inline static int connect(SOCKET s,const sockaddr* name,int namelen);
-+	inline static int send(SOCKET s,const char* buf,int len,int flags);
-+	inline static int recv(SOCKET s,char* buf,int len,int flags);
-+	inline static int shutdown(SOCKET s,int how);
-+	inline static int closesocket(SOCKET socket);
- 
-     friend class SocketJanitor;
- };
-diff -ru xerces-c-src_2_8_0-release/src/xercesc/util/XMLURL.cpp xerces-c-src_2_8_0/src/xercesc/util/XMLURL.cpp
---- xerces-c-src_2_8_0-release/src/xercesc/util/XMLURL.cpp	2008-02-08 15:30:17.000000000 +0000
-+++ xerces-c-src_2_8_0/src/xercesc/util/XMLURL.cpp	2008-01-28 01:21:23.000000000 +0000
-@@ -1132,6 +1132,10 @@
-     // If we are at the end, then we are done now
-     if (!*srcPtr)
- 	{
-+        if(fHost) {
-+            static const XMLCh slash[] = { chForwardSlash, chNull };
-+            fPath = XMLString::replicate(slash, fMemoryManager);
-+        }
-         return;
- 	}
- 
-diff -ru xerces-c-src_2_8_0-release/src/xercesc/validators/schema/SchemaElementDecl.hpp xerces-c-src_2_8_0/src/xercesc/validators/schema/SchemaElementDecl.hpp
---- xerces-c-src_2_8_0-release/src/xercesc/validators/schema/SchemaElementDecl.hpp	2008-02-08 15:30:17.000000000 +0000
-+++ xerces-c-src_2_8_0/src/xercesc/validators/schema/SchemaElementDecl.hpp	2007-11-13 01:31:25.000000000 +0000
-@@ -506,7 +506,7 @@
- 
- inline bool SchemaElementDecl::isGlobalDecl() const {
- 
--    return (fEnclosingScope == Grammar::TOP_LEVEL_SCOPE);
-+    return ((unsigned int)fEnclosingScope == Grammar::TOP_LEVEL_SCOPE);
- }
- 
- inline SchemaElementDecl*
\ No newline at end of file

Added: trunk/overlays/proaudio/dev-libs/xerces-c/files/xqilla-xercesc_content_type.patch.tar.bz2
===================================================================
(Binary files differ)


Property changes on: trunk/overlays/proaudio/dev-libs/xerces-c/files/xqilla-xercesc_content_type.patch.tar.bz2
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Deleted: trunk/overlays/proaudio/dev-libs/xerces-c/files/xqilla-xercesc_regex.patch
===================================================================
--- trunk/overlays/proaudio/dev-libs/xerces-c/files/xqilla-xercesc_regex.patch	2010-05-16 08:52:44 UTC (rev 1675)
+++ trunk/overlays/proaudio/dev-libs/xerces-c/files/xqilla-xercesc_regex.patch	2010-05-16 14:27:04 UTC (rev 1676)
@@ -1,1099 +0,0 @@
-diff -ru xerces-c-src_2_8_0-release/src/xercesc/util/regx/BMPattern.cpp xerces-c-src_2_8_0/src/xercesc/util/regx/BMPattern.cpp
---- xerces-c-src_2_8_0-release/src/xercesc/util/regx/BMPattern.cpp	2007-08-28 19:44:32.000000000 +0100
-+++ xerces-c-src_2_8_0/src/xercesc/util/regx/BMPattern.cpp	2008-01-29 17:28:41.000000000 +0000
-@@ -99,7 +99,7 @@
- // ---------------------------------------------------------------------------
- //  BMPattern: matches methods
- // ---------------------------------------------------------------------------
--int BMPattern::matches(const XMLCh* const content, int start, int limit) {
-+int BMPattern::matches(const XMLCh* const content, int start, int limit) const {
- 
- 	const unsigned int	patternLen = XMLString::stringLen(fPattern);
- 	// Uppercase Content
-diff -ru xerces-c-src_2_8_0-release/src/xercesc/util/regx/BMPattern.hpp xerces-c-src_2_8_0/src/xercesc/util/regx/BMPattern.hpp
---- xerces-c-src_2_8_0-release/src/xercesc/util/regx/BMPattern.hpp	2007-08-28 19:44:32.000000000 +0100
-+++ xerces-c-src_2_8_0/src/xercesc/util/regx/BMPattern.hpp	2008-01-29 17:28:34.000000000 +0000
-@@ -99,7 +99,7 @@
- 	  *	This method will perform a match of the given content against a
- 	  *	predefined pattern.
- 	  */
--	int matches(const XMLCh* const content, int start, int limit);
-+	int matches(const XMLCh* const content, int start, int limit) const;
- 
- 	//@}
- 
-diff -ru xerces-c-src_2_8_0-release/src/xercesc/util/regx/RegularExpression.cpp xerces-c-src_2_8_0/src/xercesc/util/regx/RegularExpression.cpp
---- xerces-c-src_2_8_0-release/src/xercesc/util/regx/RegularExpression.cpp	2007-08-28 19:44:32.000000000 +0100
-+++ xerces-c-src_2_8_0/src/xercesc/util/regx/RegularExpression.cpp	2008-01-29 17:27:46.000000000 +0000
-@@ -71,7 +71,7 @@
- 
- 
- bool RegularExpression::matchIgnoreCase(const XMLInt32 ch1,
--                                                 const XMLInt32 ch2)
-+                                                 const XMLInt32 ch2) const
- {
-     if (ch1 >= 0x10000)
-     {
-@@ -132,6 +132,7 @@
- 	, fOffsets(0)
- 	, fMatch(0)
- 	, fString(0)
-+	, fOptions(0)
-     , fMemoryManager(manager)
- {
- }
-@@ -146,6 +147,7 @@
- 	, fOffsets(0)
- 	, fMatch(0)
- 	, fString(src->fString)
-+	, fOptions(src->fOptions)
-     , fMemoryManager(src->fMemoryManager)
- {
- 	if(src->fOffsets)
-@@ -169,6 +171,7 @@
- 	fSize=other.fSize;
-     fStringMaxLen=other.fStringMaxLen;
- 	fString=other.fString;
-+	fOptions=other.fOptions;
-     if (fOffsets)
-         fMemoryManager->deallocate(fOffsets);//delete [] fOffsets;
-     fOffsets=0;
-@@ -208,7 +211,8 @@
-                                        , const int stringLen
-                                        , const int start
-                                        , const int limit
--                                       , const int noClosures)
-+                                       , const int noClosures
-+                                       , const unsigned int options)
- {
-     fString = string;
-     fStringMaxLen = stringLen;
-@@ -227,6 +231,7 @@
- 	}
- 
- 	fSize = noClosures;
-+	fOptions = options;
- 
- 	for (int i = 0; i< fSize; i++)
- 		fOffsets[i] = -1;
-@@ -456,7 +461,7 @@
- //  RegularExpression: Matching methods
- // ---------------------------------------------------------------------------
- bool RegularExpression::matches(const char* const expression
--                                , MemoryManager* const manager) {
-+                                , MemoryManager* const manager) const {
- 
-     XMLCh* tmpBuf = XMLString::transcode(expression, manager);
-     ArrayJanitor<XMLCh> janBuf(tmpBuf, manager);
-@@ -465,7 +470,7 @@
- 
- bool RegularExpression::matches(const char* const expression,
- 								const int start, const int end
--                                , MemoryManager* const manager) {
-+                                , MemoryManager* const manager) const {
- 
- 	XMLCh* tmpBuf = XMLString::transcode(expression, manager);
-     ArrayJanitor<XMLCh> janBuf(tmpBuf, manager);
-@@ -474,7 +479,7 @@
- 
- bool RegularExpression::matches(const char* const expression,
- 								Match* const match
--                                , MemoryManager* const manager)				{
-+                                , MemoryManager* const manager) const {
- 
- 	XMLCh* tmpBuf = XMLString::transcode(expression, manager);
-     ArrayJanitor<XMLCh> janBuf(tmpBuf, manager);
-@@ -483,7 +488,7 @@
- 
- bool RegularExpression::matches(const char* const expression, const int start,
-                                 const int end, Match* const pMatch
--                                , MemoryManager* const manager)				{
-+                                , MemoryManager* const manager) const {
- 
- 	XMLCh* tmpBuf = XMLString::transcode(expression, manager);
-     ArrayJanitor<XMLCh> janBuf(tmpBuf, manager);
-@@ -494,33 +499,34 @@
- // ---------------------------------------------------------------------------
- //  RegularExpression: Matching methods - Wide char version
- // ---------------------------------------------------------------------------
--bool RegularExpression::matches(const XMLCh* const expression, MemoryManager* const manager) {
-+bool RegularExpression::matches(const XMLCh* const expression, MemoryManager* const manager) const {
- 
- 	return matches(expression, 0, XMLString::stringLen(expression), 0, manager);
- }
- 
- bool RegularExpression::matches(const XMLCh* const expression,
- 								const int start, const int end
--                                , MemoryManager* const manager) {
-+                                , MemoryManager* const manager) const {
- 
- 	return matches(expression, start, end, 0, manager);
- }
- 
- bool RegularExpression::matches(const XMLCh* const expression,
- 								Match* const match
--                                , MemoryManager* const manager)				{
-+                                , MemoryManager* const manager) const {
- 
- 	return matches(expression, 0, XMLString::stringLen(expression), match, manager);
- }
- 
- bool RegularExpression::matches(const XMLCh* const expression, const int start,
-                                 const int end, Match* const pMatch
--                                , MemoryManager* const manager)	{
-+                                , MemoryManager* const manager) const
-+{
- 		
- 	Context context(manager);
- 	int		 strLength = XMLString::stringLen(expression);
- 
--    context.reset(expression, strLength, start, end, fNoClosures);
-+    context.reset(expression, strLength, start, end, fNoClosures, fOptions);
- 
- 	bool adoptMatch = false;
- 	Match* lMatch = pMatch;
-@@ -530,7 +536,7 @@
- 	}
- 	else if (fHasBackReferences) {
- 
--		lMatch = new (fMemoryManager) Match(fMemoryManager);
-+		lMatch = new (manager) Match(manager);
- 		lMatch->setNoGroups(fNoGroups);
- 		adoptMatch = true;
- 	}
-@@ -681,19 +687,21 @@
- // ---------------------------------------------------------------------------
- //  RegularExpression: Tokenize methods
- // ---------------------------------------------------------------------------
--RefArrayVectorOf<XMLCh>* RegularExpression::tokenize(const char* const expression) {
-+RefArrayVectorOf<XMLCh>* RegularExpression::tokenize(const char* const expression,
-+                                                     MemoryManager* const manager) const {
- 
--  XMLCh* tmpBuf = XMLString::transcode(expression, fMemoryManager);
--  ArrayJanitor<XMLCh> janBuf(tmpBuf, fMemoryManager);
--  return tokenize(tmpBuf, 0, XMLString::stringLen(tmpBuf));
-+  XMLCh* tmpBuf = XMLString::transcode(expression, manager);
-+  ArrayJanitor<XMLCh> janBuf(tmpBuf, manager);
-+  return tokenize(tmpBuf, 0, XMLString::stringLen(tmpBuf), manager);
- }
- 
- RefArrayVectorOf<XMLCh>* RegularExpression::tokenize(const char* const expression,
--								const int start, const int end) {
-+                                                     const int start, const int end,
-+                                                     MemoryManager* const manager) const {
- 
--  XMLCh* tmpBuf = XMLString::transcode(expression, fMemoryManager);
--  ArrayJanitor<XMLCh> janBuf(tmpBuf, fMemoryManager);
--  return tokenize(tmpBuf, start, end);
-+  XMLCh* tmpBuf = XMLString::transcode(expression, manager);
-+  ArrayJanitor<XMLCh> janBuf(tmpBuf, manager);
-+  return tokenize(tmpBuf, start, end, manager);
- }
- 
- 
-@@ -701,125 +709,74 @@
- // ---------------------------------------------------------------------------
- //  RegularExpression: Tokenize methods - Wide char version
- // ---------------------------------------------------------------------------
--RefArrayVectorOf<XMLCh>* RegularExpression::tokenize(const XMLCh* const expression) {
--  return tokenize(expression, 0, XMLString::stringLen(expression), 0);
--}
--
- RefArrayVectorOf<XMLCh>* RegularExpression::tokenize(const XMLCh* const expression,
--								                                     const int start, const int end)
--{
--  return tokenize(expression, start, end, 0);
-+                                                     MemoryManager* const manager) const {
-+  return tokenize(expression, 0, XMLString::stringLen(expression), manager);
- }
- 
--RefArrayVectorOf<XMLCh>* RegularExpression::tokenize(const XMLCh* const expression, 
-+RefArrayVectorOf<XMLCh>* RegularExpression::tokenize(const XMLCh* const matchString,
-                                                      const int start, const int end,
--                                                     RefVectorOf<Match> *subEx){
--  
--  RefArrayVectorOf<XMLCh>* tokenStack = new (fMemoryManager) RefArrayVectorOf<XMLCh>(16, true, fMemoryManager);
-+                                                     MemoryManager* const manager) const
-+{
-+    // check if matches zero length string - throw error if so
-+    if(matches(XMLUni::fgZeroLenString, manager)){
-+		ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Regex_RepPatMatchesZeroString, manager);
-+    }
-+      
-+    RefVectorOf<Match> *subEx = new (manager) RefVectorOf<Match>(10, true, manager);
-+    Janitor<RefVectorOf<Match> > janSubEx(subEx);
- 
--  Context context(fMemoryManager);
-+    allMatches(matchString, start, end, subEx, manager);
- 
--  int		 strLength = XMLString::stringLen(expression);
-- 
--  context.reset(expression, strLength, start, end, fNoClosures);
-- 
--
--  Match* lMatch = 0;
--  bool adoptMatch = false;
--
--  if (subEx || fHasBackReferences) {
--    lMatch = new (fMemoryManager) Match(fMemoryManager);
--    adoptMatch = true;
--    lMatch->setNoGroups(fNoGroups);
--  }
-+    RefArrayVectorOf<XMLCh> *tokens = new (manager) RefArrayVectorOf<XMLCh>(16, true, manager);
-+    int tokStart = start;
- 
--  if (context.fAdoptMatch)
-- 	  delete context.fMatch;
--  
--  context.fMatch = lMatch;
--  context.fAdoptMatch = adoptMatch;
-+    unsigned int i = 0;
-+    for(; i < subEx->size(); ++i) {
-+        Match *match = subEx->elementAt(i);
-+        int matchStart = match->getStartPos(0);
- 
--  int tokStart = start;
--  int matchStart = start;
-+        XMLCh *token = (XMLCh*)manager->allocate((matchStart + 1 - tokStart) * sizeof(XMLCh));
-+        XMLString::subString(token, matchString, tokStart, matchStart, manager);
-+        tokens->addElement(token);
- 
--  for (; matchStart <= end; matchStart++) { 
--  
-- 	  int matchEnd = match(&context, fOperations, matchStart, 1);
--  
-- 	  if (matchEnd != -1) {
-+        tokStart = match->getEndPos(0);
-+    }
- 
-- 	    if (context.fMatch != 0) {
-- 	      context.fMatch->setStartPos(0, context.fStart);
-- 	      context.fMatch->setEndPos(0, matchEnd);
-- 	    }
--
--      if (subEx){
--        subEx->addElement(context.fMatch);
--        lMatch = new (fMemoryManager) Match(*(context.fMatch));
--        adoptMatch = true;
--        
--        context.fAdoptMatch = adoptMatch;
--        context.fMatch = lMatch;
--      }
-+    XMLCh *token = (XMLCh*)manager->allocate((end + 1 - tokStart) * sizeof(XMLCh));
-+    XMLString::subString(token, matchString, tokStart, end, manager);
-+    tokens->addElement(token);
- 
--      XMLCh* token;
--      if (tokStart == matchStart){
--  
--        if (tokStart == strLength){
--          tokStart--;
--          break;  
--        }
-+    return tokens;
-+}
- 
--        token = (XMLCh*) fMemoryManager->allocate(sizeof(XMLCh));//new XMLCh[1];
--        token[0] = chNull;
-+void RegularExpression::allMatches(const XMLCh* const matchString, const int start, const int end,
-+                                   RefVectorOf<Match> *subEx, MemoryManager* const manager) const
-+{
-+    Context context(manager);
-+    context.reset(matchString, XMLString::stringLen(matchString), start, end, fNoClosures, fOptions);
- 
--        // When you tokenize using zero string, will return each
--        // token in the string. Since the zero string will also 
--        // match the start/end characters, resulting in empty 
--        // tokens, we ignore them and do not add them to the stack. 
--        if (!XMLString::equals(fPattern, &chNull)) 
--          tokenStack->addElement(token); 
--        else
--            fMemoryManager->deallocate(token);//delete[] token;
-+    context.fMatch = new (manager) Match(manager);
-+    context.fMatch->setNoGroups(fNoGroups);
-+    context.fAdoptMatch = true;
- 
--      } else {
--        token = (XMLCh*) fMemoryManager->allocate
--        (
--            (matchStart + 1 - tokStart) * sizeof(XMLCh)
--        );//new XMLCh[matchStart + 1 - tokStart];
--        XMLString::subString(token, expression, tokStart, matchStart, fMemoryManager);
--        tokenStack->addElement(token);
--      } 
--
--      tokStart = matchEnd;
--
--      //decrement matchStart as will increment it at the top of the loop
--      if (matchStart < matchEnd - 1) 
--        matchStart = matchEnd - 1; 	    
--    }
--  }
-- 
--  XMLCh* token;
-- 
--  if (matchStart == tokStart + 1){
--    token = (XMLCh*) fMemoryManager->allocate(sizeof(XMLCh));//new XMLCh[1];
--    token[0] = chNull;
--  
--  } else {
--    token = (XMLCh*) fMemoryManager->allocate
--    (
--        (strLength + 1 - tokStart) * sizeof(XMLCh)
--    );//new XMLCh[strLength + 1 - tokStart];
--    XMLString::subString(token, expression, tokStart, strLength, fMemoryManager);
--  }  
--
--  if (!XMLString::equals(fPattern, &chNull)) 
--    tokenStack->addElement(token);
--  else
--    fMemoryManager->deallocate(token);//delete[] token;
-+    int matchStart = start;
-+    while(matchStart <= end) {
-+        int matchEnd = match(&context, fOperations, matchStart, 1);
-+        if(matchEnd != -1) {
-+            context.fMatch->setStartPos(0, matchStart);
-+            context.fMatch->setEndPos(0, matchEnd);
- 
--  return tokenStack;
-+            subEx->addElement(context.fMatch);
-+        
-+            context.fMatch = new (manager) Match(*(context.fMatch));
-+            context.fAdoptMatch = true;
- 
-+            matchStart = matchEnd;
-+        } else {
-+            ++matchStart;
-+        }
-+    }
- }
- 
- 
-@@ -827,26 +784,28 @@
- //  RegularExpression: Replace methods
- // -----------------------------------------------------------------------
- XMLCh* RegularExpression::replace(const char* const matchString, 
--                                  const char* const replaceString){
-+                                  const char* const replaceString,
-+                                  MemoryManager* const manager) const {
- 
--	XMLCh* tmpBuf = XMLString::transcode(matchString, fMemoryManager);
--    ArrayJanitor<XMLCh> janBuf(tmpBuf, fMemoryManager);
--	XMLCh* tmpBuf2 = XMLString::transcode(replaceString, fMemoryManager);
--    ArrayJanitor<XMLCh> janBuf2(tmpBuf2, fMemoryManager);
-+	XMLCh* tmpBuf = XMLString::transcode(matchString, manager);
-+    ArrayJanitor<XMLCh> janBuf(tmpBuf, manager);
-+	XMLCh* tmpBuf2 = XMLString::transcode(replaceString, manager);
-+    ArrayJanitor<XMLCh> janBuf2(tmpBuf2, manager);
- 
--	return replace(tmpBuf, tmpBuf2, 0, XMLString::stringLen(tmpBuf));
-+	return replace(tmpBuf, tmpBuf2, 0, XMLString::stringLen(tmpBuf), manager);
- }
- 
- XMLCh* RegularExpression::replace(const char* const matchString, 
-                                   const char* const replaceString,
--                                  const int start, const int end){
-+                                  const int start, const int end,
-+                                  MemoryManager* const manager) const {
- 
-- 	XMLCh* tmpBuf = XMLString::transcode(matchString, fMemoryManager);
--    ArrayJanitor<XMLCh> janBuf(tmpBuf, fMemoryManager);
-- 	XMLCh* tmpBuf2 = XMLString::transcode(replaceString, fMemoryManager);
--    ArrayJanitor<XMLCh> janBuf2(tmpBuf2, fMemoryManager);
-+ 	XMLCh* tmpBuf = XMLString::transcode(matchString, manager);
-+    ArrayJanitor<XMLCh> janBuf(tmpBuf, manager);
-+ 	XMLCh* tmpBuf2 = XMLString::transcode(replaceString, manager);
-+    ArrayJanitor<XMLCh> janBuf2(tmpBuf2, manager);
-   
--  return replace(tmpBuf, tmpBuf2, start, end);
-+  return replace(tmpBuf, tmpBuf2, start, end, manager);
- }
- 
- 
-@@ -854,59 +813,113 @@
- //  RegularExpression: Replace methods - Wide char version
- // ---------------------------------------------------------------------------
- XMLCh* RegularExpression::replace(const XMLCh* const matchString, 
--                                  const XMLCh* const replaceString){
-+                                  const XMLCh* const replaceString,
-+                                  MemoryManager* const manager) const {
- 
-   return replace(matchString, replaceString, 0, 
--                 XMLString::stringLen(matchString));
-+                 XMLString::stringLen(matchString), manager);
- }
- 
- XMLCh* RegularExpression::replace(const XMLCh* const matchString,  
-                                   const XMLCh* const replaceString,
--                                  const int start, const int end)
-+                                  const int start, const int end,
-+                                  MemoryManager* const manager) const
- {
--
--  //check if matches zero length string - throw error if so
--  if (matches(XMLUni::fgZeroLenString, fMemoryManager)){
--		ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Regex_RepPatMatchesZeroString, fMemoryManager);
--  }
-+    // check if matches zero length string - throw error if so
-+    if(matches(XMLUni::fgZeroLenString, manager)){
-+		ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Regex_RepPatMatchesZeroString, manager);
-+    }
-       
--  RefVectorOf<Match> *subEx = new (fMemoryManager) RefVectorOf<Match>(10, true, fMemoryManager);
--	  Janitor<RefVectorOf<Match> > janSubEx(subEx);
-+    RefVectorOf<Match> *subEx = new (manager) RefVectorOf<Match>(10, true, manager);
-+    Janitor<RefVectorOf<Match> > janSubEx(subEx);
- 
--  //Call to tokenize with Match vector so that we keep track of the locations
--  //of the subExpression within each of the matches
--  RefArrayVectorOf<XMLCh>* tokenStack = tokenize(matchString, start, end, subEx);
--	  Janitor<RefArrayVectorOf<XMLCh> > janTokStack(tokenStack);
--    
--  XMLBuffer result(1023, fMemoryManager);
--  
--  int numSubEx = 0;
--  
--  if (subEx && subEx->size() > 0)
--    numSubEx = subEx->elementAt(0)->getNoGroups() - 1;
--  
--  int tokStackSize = tokenStack->size();
--  const XMLCh* curRepString = XMLString::replicate(replaceString, fMemoryManager);
--    
--  for (int i = 0; i < tokStackSize; i++){
-+    allMatches(matchString, start, end, subEx, manager);
-+
-+    XMLBuffer result(1023, manager);
-+    int tokStart = start;
-+
-+    unsigned int i = 0;
-+    for(; i < subEx->size(); ++i) {
-+        Match *match = subEx->elementAt(i);
-+        int matchStart = match->getStartPos(0);
-+
-+        if(matchStart > tokStart)
-+            result.append(matchString + tokStart, matchStart - tokStart);
-+        subInExp(replaceString, matchString, match, result, manager);
-+
-+        tokStart = match->getEndPos(0);
-+    }
-+
-+    if(end > tokStart)
-+        result.append(matchString + tokStart, end - tokStart);
-+
-+    return XMLString::replicate(result.getRawBuffer(), manager);
-+}
-+
-+/*
-+ * Helper for Replace. This method prepares the replacement string by substituting
-+ * in actual values for parenthesized sub expressions. 
-+ *
-+ * An error will be thrown if:
-+ *  1) there is chBackSlash not followed by a chDollarSign or chBackSlash
-+ *  2) there is an unescaped chDollarSign which is not followed by a digit
-+ *
-+ */
-+void RegularExpression::subInExp(const XMLCh* const repString, 
-+                                 const XMLCh* const origString, 
-+                                 const Match* subEx,
-+                                 XMLBuffer &result,
-+                                 MemoryManager* const manager) const
-+{
-+    int numSubExp = subEx->getNoGroups() - 1;
-+
-+    for(const XMLCh *ptr = repString; *ptr != chNull; ++ptr) {
-+        if(*ptr == chDollarSign) {
-+            ++ptr;
-       
--    result.append(tokenStack->elementAt(i));
--  
--    if (i != tokStackSize - 1) {
--       
--      //if there are subExpressions, then determine the string we want to 
--      //substitute in.
--        if (numSubEx != 0) {
--            fMemoryManager->deallocate((XMLCh*)curRepString);
--            curRepString = subInExp(replaceString, matchString, subEx->elementAt(i));     
-+            // check that after the $ is a digit
-+            if(!XMLString::isDigit(*ptr)) {
-+                // invalid replace string - $ must be followed by a digit
-+                ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Regex_InvalidRepPattern, manager);
-+            }
-+
-+            int index = *ptr - chDigit_0;
-+
-+            const XMLCh *dig = ptr + 1;
-+            while(XMLString::isDigit(*dig)) {
-+                int newIndex = index * 10 + (*dig - chDigit_0);
-+                if(newIndex > numSubExp) break;
-+
-+                index = newIndex;
-+                ptr = dig;
-+                ++dig;
-+            }
-+
-+            // now check that the index is legal
-+            if(index <= numSubExp) {
-+                int start = subEx->getStartPos(index);
-+                int end = subEx->getEndPos(index);
-+
-+                // now copy the substring into the new string
-+                if(start < end) {
-+                    result.append(origString + start, end - start);
-+                }
-+            }
-+
-+        } else {
-+            if(*ptr == chBackSlash) {
-+                ++ptr;
-+
-+                // if you have a slash and then a character that's not a $ or /,
-+                // then it's an invalid replace string  
-+                if(*ptr != chDollarSign && *ptr != chBackSlash) {
-+                    ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Regex_InvalidRepPattern, manager);
-+                }
-+            }
-+
-+            result.append(*ptr);
-         }
--      result.append(curRepString);
-     }
--  }  
--    
--  fMemoryManager->deallocate((XMLCh*)curRepString);
--  return XMLString::replicate(result.getRawBuffer(), fMemoryManager); 
--    
- }
- 
- 
-@@ -982,10 +995,10 @@
- 
- 
- int RegularExpression::match(Context* const context, const Op* const operations
--							 , int offset, const short direction)
-+							 , int offset, const short direction) const
- {
- 	const Op* tmpOp = operations;
--	bool ignoreCase = isSet(fOptions, IGNORE_CASE);
-+	bool ignoreCase = isSet(context->fOptions, IGNORE_CASE);
- 
- 	while (true) {
- 
-@@ -1133,7 +1146,7 @@
- }
- bool RegularExpression::matchChar(Context* const context,
- 								  const XMLInt32 ch, int& offset,
--								  const short direction, const bool ignoreCase)
-+								  const short direction, const bool ignoreCase) const
- {
- 	int tmpOffset = direction > 0 ? offset : offset - 1;
- 
-@@ -1156,7 +1169,7 @@
- }
- 
- bool RegularExpression::matchDot(Context* const context, int& offset,
--								 const short direction)
-+								 const short direction) const
- {
- 	int tmpOffset = direction > 0 ? offset : offset - 1;
- 
-@@ -1168,7 +1181,7 @@
- 	if (!context->nextCh(strCh, tmpOffset, direction))
- 		return false;
- 
--	if (!isSet(fOptions, SINGLE_LINE)) {
-+	if (!isSet(context->fOptions, SINGLE_LINE)) {
- 
- 		if (direction > 0 && RegxUtil::isEOLChar(strCh))
- 			return false;
-@@ -1183,7 +1196,7 @@
- 
- bool RegularExpression::matchRange(Context* const context, const Op* const op,
- 								   int& offset, const short direction,
--								   const bool ignoreCase)
-+								   const bool ignoreCase) const
- {
- 	int tmpOffset = direction > 0 ? offset : offset - 1;
- 
-@@ -1213,7 +1226,7 @@
- }
- 
- bool RegularExpression::matchAnchor(Context* const context, const XMLInt32 ch,
--									const int offset)
-+									const int offset) const
- {
- 	switch ((XMLCh) ch) {
- 	case chLatin_A:
-@@ -1224,10 +1237,10 @@
- 		if (context->fLength == 0)
- 			break;
- 		{
--			int after = getWordType(context->fString, context->fStart,
-+			int after = getWordType(context, context->fString, context->fStart,
- 									context->fLimit, offset);
- 			if (after == WT_IGNORE
--				|| after == getPreviousWordType(context->fString,
-+				|| after == getPreviousWordType(context, context->fString,
- 												context->fStart,
- 												context->fLimit, offset))
- 				break;
-@@ -1237,10 +1250,10 @@
- 		if (context->fLength == 0)
- 			return false;
- 		{
--			int after = getWordType(context->fString, context->fStart,
-+			int after = getWordType(context, context->fString, context->fStart,
- 									context->fLimit, offset);
- 			if (after == WT_IGNORE
--				|| after == getPreviousWordType(context->fString,
-+				|| after == getPreviousWordType(context, context->fString,
- 												context->fStart
- 												, context->fLimit, offset))
- 				return false;
-@@ -1248,7 +1261,7 @@
- 		break;
- 	case chLatin_Z:
- 	case chDollarSign:
--		if ( (XMLCh) ch == chDollarSign && isSet(fOptions, MULTIPLE_LINE)) {
-+		if ( (XMLCh) ch == chDollarSign && isSet(context->fOptions, MULTIPLE_LINE)) {
- 			if (!(offset == context->fLimit || (offset < context->fLimit
- 				&& RegxUtil::isEOLChar(context->fString[offset]))))
- 				return false;
-@@ -1270,7 +1283,7 @@
- 		break;
- 	case chAt:
- 	case chCaret:
--		if ( (XMLCh) ch == chCaret && !isSet(fOptions, MULTIPLE_LINE)) {
-+		if ( (XMLCh) ch == chCaret && !isSet(context->fOptions, MULTIPLE_LINE)) {
- 
- 			if (offset != context->fStart)
- 				return false;
-@@ -1286,9 +1299,9 @@
- 		if (context->fLength == 0 || offset == context->fLimit)
- 			return false;
- 
--		if (getWordType(context->fString, context->fStart, context->fLimit,
-+		if (getWordType(context, context->fString, context->fStart, context->fLimit,
- 						offset) != WT_LETTER
--			|| getPreviousWordType(context->fString, context->fStart,
-+			|| getPreviousWordType(context, context->fString, context->fStart,
- 								   context->fLimit, offset) != WT_OTHER)
- 			return false;
- 		break;
-@@ -1296,9 +1309,9 @@
- 		if (context->fLength == 0 || offset == context->fStart)
- 			return false;
- 
--		if (getWordType(context->fString, context->fStart, context->fLimit,
-+		if (getWordType(context, context->fString, context->fStart, context->fLimit,
- 						offset) != WT_OTHER
--			|| getPreviousWordType(context->fString, context->fStart,
-+			|| getPreviousWordType(context, context->fString, context->fStart,
- 								   context->fLimit, offset) != WT_LETTER)
- 			return false;
- 		break;
-@@ -1310,10 +1323,10 @@
- bool RegularExpression::matchBackReference(Context* const context,
- 										   const XMLInt32 refNo, int& offset,
- 										   const short direction,
--										   const bool ignoreCase)
-+										   const bool ignoreCase) const
- {
- 	if (refNo <=0 || refNo >= fNoGroups)
--		ThrowXMLwithMemMgr(IllegalArgumentException, XMLExcepts::Regex_BadRefNo, fMemoryManager);
-+		ThrowXMLwithMemMgr(IllegalArgumentException, XMLExcepts::Regex_BadRefNo, context->fMemoryManager);
- 
- 	if (context->fMatch->getStartPos(refNo) < 0
- 		|| context->fMatch->getEndPos(refNo) < 0)
-@@ -1341,7 +1354,7 @@
- 
- bool RegularExpression::matchString(Context* const context,
- 									const XMLCh* const literal, int& offset,
--									const short direction, const bool ignoreCase)
-+									const short direction, const bool ignoreCase) const
- {
- 	int length = XMLString::stringLen(literal);
- 	int tmpOffset = (direction > 0) ? offset : offset - length;
-@@ -1363,7 +1376,7 @@
- }
- 
- int RegularExpression::matchCapture(Context* const context, const Op* const op,
--                                    int offset, const short direction)
-+                                    int offset, const short direction) const
- {
- 	// No check is made for nullness of fMatch as the function is only called if
- 	// fMatch is not null.
-@@ -1389,7 +1402,7 @@
- 
- int RegularExpression::matchUnion(Context* const context,
-                                    const Op* const op, int offset,
--                                   const short direction)
-+                                   const short direction) const
- {
-     unsigned int opSize = op->getSize();
- 
-@@ -1415,7 +1428,7 @@
- 
- bool RegularExpression::matchCondition(Context* const context,
-                                               const Op* const op, int offset,
--                                              const short direction)
-+                                              const short direction) const
- {
- 
- 	int refNo = op->getRefNo();
-@@ -1512,86 +1525,6 @@
- }
- 
- /*
-- * Helper for Replace. This method prepares the replacement string by substituting
-- * in actual values for parenthesized sub expressions. 
-- *
-- * An error will be thrown if:
-- *  1) repString references an undefined subExpression
-- *  2) there is an unescaped chDollar which is not followed by a digit
-- *
-- */
--const XMLCh* RegularExpression::subInExp(const XMLCh* const repString, 
--                                         const XMLCh* const origString, 
--                                         const Match* subEx){
--
--  int numSubExp = subEx->getNoGroups() - 1;
--
--  if (numSubExp == 0)
--    return XMLString::replicate(repString, fMemoryManager);
--  
--  bool notEscaped = true;                 
--  
--  XMLBuffer newString(1023, fMemoryManager);                   
--  
--  XMLCh indexStr[2]; //holds the string rep of a 
--
--  indexStr[1] = chNull;
--  int index = -1;
--
--  for (const XMLCh* ptr = repString; *ptr != chNull; ptr++){
--
--    if ((*ptr == chDollarSign) && notEscaped) {
--      
--      ptr++;
--      
--      //check that after the $ is a digit 
--      if (!XMLString::isDigit(*ptr)){
--       
--        //invalid replace string - $ must be followed by a digit
--				ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Regex_InvalidRepPattern, fMemoryManager);
--      }
--        
--      indexStr[0] = *ptr;                     //get the digit 
--      index = XMLString::parseInt(indexStr, fMemoryManager);  //convert it to an int
--
--      //now check that the index is legal
--      if (index > numSubExp){
--				ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Regex_InvalidRepPattern, fMemoryManager);
--      }
--        
--      int start = subEx->getStartPos(index);
--      int end = subEx->getEndPos(index);
--
--      //now copy the substring into the new string
--      for (int i=start; i<end; i++){
--        newString.append(origString[i]);
--      }
--          
--    } else {
-- 
--      //if you have a slash and then a character that's not a $ or /, 
--      //then it's an invalid replace string  
--      if (!notEscaped && (*ptr != chDollarSign && *ptr != chBackSlash)){
--				ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Regex_InvalidRepPattern, fMemoryManager);
--      }
--      
--      if (*ptr == chBackSlash){
--        notEscaped = false;
--        continue;
--        
--      }else   
--        notEscaped = true;  
--
--      newString.append(*ptr);
--    }
--  }
--
--  return XMLString::replicate(newString.getRawBuffer(), fMemoryManager);
--       
--}
--
--
--/*
-  * Prepares for matching. This method is called during construction.
-  */
- void RegularExpression::prepare() {
-@@ -1679,17 +1612,17 @@
- 	}
- }
- 
--unsigned short RegularExpression::getCharType(const XMLCh ch) {
--
--    if (!isSet(fOptions, UNICODE_WORD_BOUNDARY)) {
-+unsigned short RegularExpression::getCharType(Context* const context, const XMLCh ch) const
-+{
-+    if (!isSet(context->fOptions, UNICODE_WORD_BOUNDARY)) {
- 
--		if (isSet(fOptions, USE_UNICODE_CATEGORY)) {
-+		if (isSet(context->fOptions, USE_UNICODE_CATEGORY)) {
- 
- 			if (fWordRange == 0) {
- 
- 				fWordRange = fTokenFactory->getRange(fgUniIsWord);
- 				if (fWordRange == 0)
--					ThrowXMLwithMemMgr1(RuntimeException, XMLExcepts::Regex_RangeTokenGetError, fgUniIsWord, fMemoryManager);
-+					ThrowXMLwithMemMgr1(RuntimeException, XMLExcepts::Regex_RangeTokenGetError, fgUniIsWord, context->fMemoryManager);
- 			}
- 
- 			return fWordRange->match(ch) ? WT_LETTER : WT_OTHER;
-diff -ru xerces-c-src_2_8_0-release/src/xercesc/util/regx/RegularExpression.hpp xerces-c-src_2_8_0/src/xercesc/util/regx/RegularExpression.hpp
---- xerces-c-src_2_8_0-release/src/xercesc/util/regx/RegularExpression.hpp	2007-08-28 19:44:32.000000000 +0100
-+++ xerces-c-src_2_8_0/src/xercesc/util/regx/RegularExpression.hpp	2008-01-29 17:28:11.000000000 +0000
-@@ -100,45 +100,53 @@
-     // -----------------------------------------------------------------------
-     //  Matching methods
-     // -----------------------------------------------------------------------
--    bool matches(const char* const matchString, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
-+    bool matches(const char* const matchString, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) const;
-     bool matches(const char* const matchString, const int start,
--                 const int end, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
--    bool matches(const char* const matchString, Match* const pMatch, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
-+                 const int end, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) const;
-+    bool matches(const char* const matchString, Match* const pMatch, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) const;
-     bool matches(const char* const matchString, const int start,
--                 const int end, Match* const pMatch, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
-+                 const int end, Match* const pMatch, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) const;
- 
--    bool matches(const XMLCh* const matchString, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
-+    bool matches(const XMLCh* const matchString, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) const;
-     bool matches(const XMLCh* const matchString, const int start,
--                 const int end, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
--    bool matches(const XMLCh* const matchString, Match* const pMatch, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
-+                 const int end, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) const;
-+    bool matches(const XMLCh* const matchString, Match* const pMatch, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) const;
-     bool matches(const XMLCh* const matchString, const int start,
--                 const int end, Match* const pMatch, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
-+                 const int end, Match* const pMatch, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) const;
-+    void allMatches(const XMLCh* const matchString, const int start, const int end,
-+                    RefVectorOf<Match> *subEx, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) const;
- 
-     // -----------------------------------------------------------------------
-     //  Tokenize methods
-     // -----------------------------------------------------------------------
-     // Note: The caller owns the string vector that is returned, and is responsible
-     //       for deleting it.
--    RefArrayVectorOf<XMLCh> *tokenize(const char* const matchString);
--    RefArrayVectorOf<XMLCh> *tokenize(const char* const matchString, const int start,
--                                      const int end);
-+    RefArrayVectorOf<XMLCh> *tokenize(const char* const matchString,
-+                                      MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) const;
-+    RefArrayVectorOf<XMLCh> *tokenize(const char* const matchString, const int start, const int end,
-+                                      MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) const;
- 
--    RefArrayVectorOf<XMLCh> *tokenize(const XMLCh* const matchString);
-     RefArrayVectorOf<XMLCh> *tokenize(const XMLCh* const matchString,
--                                      const int start, const int end);
-+                                      MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) const;
-+    RefArrayVectorOf<XMLCh> *tokenize(const XMLCh* const matchString, const int start, const int end,
-+                                      MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) const;
- 
-     // -----------------------------------------------------------------------
-     //  Replace methods
-     // -----------------------------------------------------------------------
-     // Note: The caller owns the XMLCh* that is returned, and is responsible for
-     //       deleting it.
--    XMLCh *replace(const char* const matchString, const char* const replaceString);
-     XMLCh *replace(const char* const matchString, const char* const replaceString,
--                   const int start, const int end);
-+                   MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) const;
-+    XMLCh *replace(const char* const matchString, const char* const replaceString,
-+                   const int start, const int end,
-+                   MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) const;
- 
--    XMLCh *replace(const XMLCh* const matchString, const XMLCh* const replaceString);
-     XMLCh *replace(const XMLCh* const matchString, const XMLCh* const replaceString,
--                   const int start, const int end);
-+                   MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) const;
-+    XMLCh *replace(const XMLCh* const matchString, const XMLCh* const replaceString,
-+                   const int start, const int end,
-+                   MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) const;
- 
-     // -----------------------------------------------------------------------
-     //  Static initialize and cleanup methods
-@@ -165,7 +173,8 @@
-             Context& operator= (const Context& other);
-             inline const XMLCh* getString() const { return fString; }
-             void reset(const XMLCh* const string, const int stringLen,
--                       const int start, const int limit, const int noClosures);
-+                       const int start, const int limit, const int noClosures,
-+                       const unsigned int options);
-             bool nextCh(XMLInt32& ch, int& offset, const short direction);
-             
-             bool           fAdoptMatch;
-@@ -177,6 +186,7 @@
-             int*           fOffsets;
-             Match*         fMatch;
-             const XMLCh*   fString;
-+            unsigned int   fOptions;
-             MemoryManager* fMemoryManager;
-     };
- 
-@@ -201,65 +211,54 @@
-     // -----------------------------------------------------------------------
-     void prepare();
-     int parseOptions(const XMLCh* const options);
--    unsigned short getWordType(const XMLCh* const target, const int begin,
--                               const int end, const int offset);
--    unsigned short getCharType(const XMLCh ch);
--    unsigned short getPreviousWordType(const XMLCh* const target,
-+    unsigned short getWordType(Context* const context, const XMLCh* const target,
-+                               const int begin, const int end, const int offset) const;
-+    unsigned short getCharType(Context* const context, const XMLCh ch) const;
-+    unsigned short getPreviousWordType(Context* const context, const XMLCh* const target,
-                                        const int start, const int end,
--                                       int offset);
-+                                       int offset) const;
- 
-     /**
-       *    Matching helpers
-       */
-     int match(Context* const context, const Op* const operations, int offset,
--              const short direction);
--    bool matchIgnoreCase(const XMLInt32 ch1, const XMLInt32 ch2);
-+              const short direction) const;
-+    bool matchIgnoreCase(const XMLInt32 ch1, const XMLInt32 ch2) const;
- 
-     /**
-       *    Helper methods used by match(Context* ...)
-       */
-     bool matchChar(Context* const context, const XMLInt32 ch, int& offset,
--                   const short direction, const bool ignoreCase);
--    bool matchDot(Context* const context, int& offset, const short direction);
-+                   const short direction, const bool ignoreCase) const;
-+    bool matchDot(Context* const context, int& offset, const short direction) const;
-     bool matchRange(Context* const context, const Op* const op,
--                    int& offset, const short direction, const bool ignoreCase);
-+                    int& offset, const short direction, const bool ignoreCase) const;
-     bool matchAnchor(Context* const context, const XMLInt32 ch,
--                     const int offset);
-+                     const int offset) const;
-     bool matchBackReference(Context* const context, const XMLInt32 ch,
-                             int& offset, const short direction,
--                            const bool ignoreCase);
-+                            const bool ignoreCase) const;
-     bool matchString(Context* const context, const XMLCh* const literal,
--                     int& offset, const short direction, const bool ignoreCase);
-+                     int& offset, const short direction, const bool ignoreCase) const;
-     int  matchUnion(Context* const context, const Op* const op, int offset,
--                    const short direction);
-+                    const short direction) const;
-     int matchCapture(Context* const context, const Op* const op, int offset,
--                     const short direction);
-+                     const short direction) const;
-     bool matchCondition(Context* const context, const Op* const op, int offset,
--                        const short direction);
-+                        const short direction) const;
-     int matchModifier(Context* const context, const Op* const op, int offset,
--                      const short direction);
-+                      const short direction) const;
- 
-     /**
--     *    Tokenize helper
--     *
--     *    This overloaded tokenize is for internal use only. It provides a way to
--     *    keep track of the sub-expressions in each match of the pattern.
--     *
--     *    It is called by the other tokenize methods, and by the replace method.
--     *    The caller is responsible for the deletion of the returned
--     *    RefArrayVectorOf<XMLCh*>
--     */
--    RefArrayVectorOf<XMLCh> *tokenize(const XMLCh* const matchString,
--                                      const int start, const int end,
--                                      RefVectorOf<Match> *subEx);
--    /**
-      *    Replace helpers
-      *
-      *    Note: the caller owns the XMLCh* that is returned
-      */
--    const XMLCh *subInExp(const XMLCh* const repString,
--                          const XMLCh* const origString,
--                          const Match* subEx);
-+    void subInExp(const XMLCh* const repString,
-+                  const XMLCh* const origString,
-+                  const Match* subEx,
-+                  XMLBuffer &result,
-+                  MemoryManager* const manager) const;
-     /**
-      *    Converts a token tree into an operation tree
-      */
-@@ -293,10 +292,10 @@
-     int                fMinLength;
-     int                fNoClosures;
-     unsigned int       fOptions;
--    BMPattern*         fBMPattern;
-+    const BMPattern*   fBMPattern;
-     XMLCh*             fPattern;
-     XMLCh*             fFixedString;
--    Op*                fOperations;
-+    const Op*          fOperations;
-     Token*             fTokenTree;
-     RangeToken*        fFirstChar;
-     static RangeToken* fWordRange;
-@@ -553,40 +552,42 @@
- 
-   inline int RegularExpression::matchModifier(Context* const context,
-                                               const Op* const op, int offset,
--                                              const short direction)
-+                                              const short direction) const
-   {
-       int saveOptions = fOptions;
--      fOptions |= (int) op->getData();
--      fOptions &= (int) ~op->getData2();
-+      context->fOptions |= (int) op->getData();
-+      context->fOptions &= (int) ~op->getData2();
- 
-       int ret = match(context, op->getChild(), offset, direction);
- 
--      fOptions = saveOptions;
-+      context->fOptions = saveOptions;
- 
-       return ret;
-   }
- 
--  inline unsigned short RegularExpression::getWordType(const XMLCh* const target
-+  inline unsigned short RegularExpression::getWordType(Context* const context
-+                                                       , const XMLCh* const target
-                                                        , const int begin
-                                                        , const int end
--                                                       , const int offset)
-+                                                       , const int offset) const
-   {
-       if (offset < begin || offset >= end)
-           return WT_OTHER;
- 
--      return getCharType(target[offset]);
-+      return getCharType(context, target[offset]);
-   }
- 
-   inline
--  unsigned short RegularExpression::getPreviousWordType(const XMLCh* const target
-+  unsigned short RegularExpression::getPreviousWordType(Context* const context
-+                                                        , const XMLCh* const target
-                                                         , const int start
-                                                         , const int end
--                                                        , int offset)
-+                                                        , int offset) const
-   {
--      unsigned short ret = getWordType(target, start, end, --offset);
-+      unsigned short ret = getWordType(context, target, start, end, --offset);
- 
-       while (ret == WT_IGNORE) {
--          ret = getWordType(target, start, end, --offset);
-+          ret = getWordType(context, target, start, end, --offset);
-       }
- 
-       return ret;
\ No newline at end of file

Added: trunk/overlays/proaudio/dev-libs/xerces-c/files/xqilla-xercesc_regex.patch.tar.bz2
===================================================================
(Binary files differ)


Property changes on: trunk/overlays/proaudio/dev-libs/xerces-c/files/xqilla-xercesc_regex.patch.tar.bz2
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Modified: trunk/overlays/proaudio/dev-libs/xerces-c/xerces-c-2.8.0-r1.ebuild
===================================================================
--- trunk/overlays/proaudio/dev-libs/xerces-c/xerces-c-2.8.0-r1.ebuild	2010-05-16 08:52:44 UTC (rev 1675)
+++ trunk/overlays/proaudio/dev-libs/xerces-c/xerces-c-2.8.0-r1.ebuild	2010-05-16 14:27:04 UTC (rev 1676)
@@ -1,6 +1,6 @@
-# Copyright 1999-2008 Gentoo Foundation
+# Copyright 1999-2010 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
-# $Header: /var/www/viewcvs.gentoo.org/raw_cvs/gentoo-x86/dev-libs/xerces-c/Attic/xerces-c-2.8.0-r1.ebuild,v 1.5 2010/02/26 05:47:20 halcy0n dead $
+# $Header: $
 
 EAPI="1"
 
@@ -59,8 +59,8 @@
 		"${FILESDIR}/${P}-IconvGNUTransService.cpp.patch"
 
 	use xqilla && epatch \
-		"${FILESDIR}/xqilla-xercesc_content_type.patch" \
-		"${FILESDIR}/xqilla-xercesc_regex.patch"
+		"${FILESDIR}/xqilla-xercesc_content_type.patch.tar.bz2" \
+		"${FILESDIR}/xqilla-xercesc_regex.patch.tar.bz2"
 
 }
 


Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/