DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT <http://nagoya.apache.org/bugzilla/show_bug.cgi?id=17096>. ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND INSERTED IN THE BUG DATABASE.
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=17096 XMLUri relative path calculation badly broken Summary: XMLUri relative path calculation badly broken Product: Xerces-C++ Version: 2.2.0 Platform: All OS/Version: All Status: NEW Severity: Normal Priority: Other Component: Utilities AssignedTo: [EMAIL PROTECTED] ReportedBy: [EMAIL PROTECTED] As an aside - might it be worth putting classes such as this in the XML-Commons project? When calculating relative paths, the XMLUri class does not handle "/../" or "/./" properly, resulting in severely mangled paths. Have attached a diff for XMLUri.cpp that fixes the problems I had (but is not terribly efficient). A code sample that demonstrates one of the main problems is pasted below. Output on my system is : Path = /a/test/.uri #include <xercesc/util/XMLUri.hpp> #include <xercesc/util/XMLString.hpp> #include <xercesc/util/PlatformUtils.hpp> #include <iostream> using XERCES_CPP_NAMESPACE_QUALIFIER XMLUri; using XERCES_CPP_NAMESPACE_QUALIFIER XMLString; using XERCES_CPP_NAMESPACE_QUALIFIER XMLPlatformUtils; char gBaseURIstr [] = "file:///a/test/of"; char gRelativeURIstr [] = "../uri"; int main (int argc, char ** argv) { XMLPlatformUtils::Initialize(); { XMLCh * b = XMLString::transcode(gBaseURIstr); XMLCh * r = XMLString::transcode(gRelativeURIstr); XMLUri BaseUri(b); XMLUri Uri(&BaseUri, r); char * s = XMLString::transcode(Uri.getPath()); cerr << "Path = " << s << endl; delete[] b; delete[] r; delete[] s; } XMLPlatformUtils::Terminate(); return 0; } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
