You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by db...@apache.org on 2003/03/22 01:48:18 UTC
cvs commit: xml-xalan/c/src/PlatformSupport URISupport.cpp
dbertoni 2003/03/21 16:48:18
Modified: c/src/PlatformSupport URISupport.cpp
Log:
Integrated new class contributed by Mark Weaver (mark@npsl.co.uk). Fixes bug 16737.
Revision Changes Path
1.24 +8 -88 xml-xalan/c/src/PlatformSupport/URISupport.cpp
Index: URISupport.cpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/PlatformSupport/URISupport.cpp,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -r1.23 -r1.24
--- URISupport.cpp 26 Nov 2002 00:10:15 -0000 1.23
+++ URISupport.cpp 22 Mar 2003 00:48:18 -0000 1.24
@@ -72,7 +72,7 @@
#include "XalanUnicode.hpp"
-
+#include "XalanParsedURI.hpp"
XALAN_CPP_NAMESPACE_BEGIN
@@ -204,98 +204,18 @@
XalanDOMString::size_type baseLen,
XalanDOMString& theNormalizedURI)
{
- XALAN_USING_XERCES(XMLURL)
-
XalanDOMString context(base, baseLen);
+ XalanDOMString url(urlString, urlStringLen);
+ // Flip slashes
NormalizeURIText(context);
+ NormalizeURIText(url);
- const XalanDOMString::size_type indexOfSlash = baseLen == 0 ?
- 0 :
- lastIndexOf(context, XalanUnicode::charSolidus);
-
- const bool hasPath = indexOfSlash < baseLen ? true : false;
-
- if (hasPath == true)
- {
- // Strip off file name from context...
- substring(context, context, 0, indexOfSlash + 1);
- }
-
- // OK, now let's look at the urlString...
-
- // Is there a colon, indicating some sort of drive spec, or protocol?
- const XalanDOMString::size_type theColonIndex = indexOf(urlString, XalanUnicode::charColon);
-
- if (theColonIndex == urlStringLen)
- {
- // No colon, so just use the urlString as is...
- if (hasPath == true)
- {
- context += urlString;
- }
- else
- {
- context = urlString;
- }
- }
- else
- {
- XalanDOMString theProtocolString;
-
- substring(urlString, theProtocolString, 0, theColonIndex);
-
- // $$$ ToDo: XMLURL::lookupByName() is supposed to be static, but is not.
- const XMLURL::Protocols theProtocol =
- XMLURL().lookupByName(c_wstr(theProtocolString));
-
- if (theColonIndex == 1 &&
- theProtocol == XMLURL::Unknown)
- {
- // Ahh, it's a drive letter, so ignore the context...
- context = urlString;
- }
- else
- {
- // It's a protocol...
- if (startsWith(context, theProtocolString) == false)
- {
- // OK, not the same protocol, so what can we do???
- context = urlString;
- }
- else
- {
- // They share the same protocol...
-
- // Check if this is an absolute URI (starts with a leading '//')
- const XalanDOMString::size_type protoLength = length(theProtocolString);
-
- if (protoLength + 3 <= urlStringLen &&
- urlString[protoLength + 1] == XalanUnicode::charSolidus &&
- urlString[protoLength + 2] == XalanUnicode::charSolidus)
- {
- // It's an absolute URI -- use it in full...
- context = urlString;
- }
- else
- {
- // Strip off file name from context...
- if (indexOfSlash < baseLen)
- {
- substring(context, context, 0, indexOfSlash + 1);
- }
-
- // OK, everything looks good, so strip off the protocol
- // and colon...
- context.append(
- urlString + theColonIndex + 1,
- urlStringLen - (theColonIndex + 1));
- }
- }
- }
- }
+ // Resolve the URI
+ url = XalanParsedURI::resolve(url, context);
- getURLStringFromString(context, theNormalizedURI);
+ // Do platform specific stuff
+ getURLStringFromString(url, theNormalizedURI);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: xalan-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xalan-cvs-help@xml.apache.org