You are viewing a plain text version of this content. The canonical link for it is here.
Posted to c-dev@xerces.apache.org by "Brenton Thomas (JIRA)" <xe...@xml.apache.org> on 2008/01/05 08:34:33 UTC
[jira] Updated: (XERCESC-1773) Spaces in Filenames problem with
XMLUri::normalizeURI
[ https://issues.apache.org/jira/browse/XERCESC-1773?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Brenton Thomas updated XERCESC-1773:
------------------------------------
Description:
When using a filename containing spaces that has been escaped by a %20 you end up with problems if the space is followed by a number. For example if you have a directory "D:\Home\Development\StrawberryFields 2.0" you need to escape it to give "D:\Home\Development\StrawberryFields%202.0" - which is obviously going to break because it confuses the 2 at the end. To fix this you escape the number following the space to give "D:\Home\Development\StrawberryFields%20%32.0" .
This is OK in terms of providing a legal schemaLocation except....
The routine XMLUri::normalizeURI then takes the escaped name and unescapes it to return a form the system recognises. What it needs to do is parse through the string and unescape everything - not just the %20
void XMLUri::normalizeURI(const XMLCh* const systemURI,
XMLBuffer& normalizedURI)
{
const XMLCh* pszSrc = systemURI;
normalizedURI.reset();
while (*pszSrc) {
if ((*(pszSrc) == chPercent)
&& (*(pszSrc+1) == chDigit_2)
&& (*(pszSrc+2) == chDigit_0))
{
pszSrc += 3;
normalizedURI.append(chSpace);
}
else
{
normalizedURI.append(*pszSrc);
pszSrc++;
}
}
}
was:
When using a filename containing spaces that has been escaped by a %20 you end up with problems if the space is followed by a number. For example if you have a directory "D:\Home\Development\StrawberryFields 2.0" you need to escape it to give "D:\Home\Development\StrawberryFields%202.0" - which is obviously going to break because it confuses the 2 at the end. To fix this you escape the number following the space to give "D:\Home\Development\StrawberryFields%20%32.0" .
This is OK in terms of providing a legal schemaLocation except....
The routine XMLUri::normalizeURI then takes the escaped name and unescapes it to return a form the system recognises. What it needs to do is parse through the string and unescape everything.
void XMLUri::normalizeURI(const XMLCh* const systemURI,
XMLBuffer& normalizedURI)
{
const XMLCh* pszSrc = systemURI;
normalizedURI.reset();
while (*pszSrc) {
if ((*(pszSrc) == chPercent)
&& (*(pszSrc+1) == chDigit_2)
&& (*(pszSrc+2) == chDigit_0))
{
pszSrc += 3;
normalizedURI.append(chSpace);
}
else
{
normalizedURI.append(*pszSrc);
pszSrc++;
}
}
}
> Spaces in Filenames problem with XMLUri::normalizeURI
> -----------------------------------------------------
>
> Key: XERCESC-1773
> URL: https://issues.apache.org/jira/browse/XERCESC-1773
> Project: Xerces-C++
> Issue Type: Bug
> Environment: WindowsXP 64
> Reporter: Brenton Thomas
> Fix For: 2.8.0
>
>
> When using a filename containing spaces that has been escaped by a %20 you end up with problems if the space is followed by a number. For example if you have a directory "D:\Home\Development\StrawberryFields 2.0" you need to escape it to give "D:\Home\Development\StrawberryFields%202.0" - which is obviously going to break because it confuses the 2 at the end. To fix this you escape the number following the space to give "D:\Home\Development\StrawberryFields%20%32.0" .
> This is OK in terms of providing a legal schemaLocation except....
> The routine XMLUri::normalizeURI then takes the escaped name and unescapes it to return a form the system recognises. What it needs to do is parse through the string and unescape everything - not just the %20
> void XMLUri::normalizeURI(const XMLCh* const systemURI,
> XMLBuffer& normalizedURI)
> {
> const XMLCh* pszSrc = systemURI;
> normalizedURI.reset();
> while (*pszSrc) {
> if ((*(pszSrc) == chPercent)
> && (*(pszSrc+1) == chDigit_2)
> && (*(pszSrc+2) == chDigit_0))
> {
> pszSrc += 3;
> normalizedURI.append(chSpace);
> }
> else
> {
> normalizedURI.append(*pszSrc);
> pszSrc++;
> }
> }
> }
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: c-dev-unsubscribe@xerces.apache.org
For additional commands, e-mail: c-dev-help@xerces.apache.org