Indeed, you are correct. getcwd is returning "/".

This seems strange, given that the C++ code is writing files relative to the 
build directory correctly. I am using paths relative to the exe location and 
those are working correctly.

Why the difference? (and more importantly, what can I do about it!)

Thanks for the help!

Steve

At 10:11 AM -0800 3/16/05, James Berry wrote:
>Steve,
>
>Could you do a bit of debugging on this?
>
>One way or another, the relative path should be resolved inside 
>XMLParsePathToFSRef_X in MacOSPlatformUtils.cpp. This would be either in 
>response to getCurrentDirectory (which calls XMLParsePathToFSSpec with the 
>path "."), or with the entire relative path. In this case, 
>XMLParsePathToFSRef_X calls getcwd to retrieve the current directory, then 
>prepends it to the path, followed by a "/".
>
>I firmly believe (until proven otherwise) that getcwd is returning "/" in your 
>case, perhaps because that's what the cwd is set to??? Can you set a 
>breakpoint, or add some debug output, to verify this condition?
>
>-jdb
>
>On Mar 16, 2005, at 7:36 AM, Smith, Steven J (PNNL/JGCRI) wrote:
>
>>I'm using xcode (1.5) with the default gcc 3.3 and OS (10.3.8) and the latest 
>>xerces (2.6 I believe, this behavior was the same for other recent releases).
>>
>>We're initializing the parser with:
>>
>>    xercesc::XMLPlatformUtils::Initialize();
>>
>>    mParser.reset( new xercesc::XercesDOMParser() );
>>    mParser->setValidationScheme( xercesc::XercesDOMParser::Val_Always );
>>    mParser->setDoNamespaces( false );
>>    mParser->setDoSchema( true );
>>    mParser->setCreateCommentNodes( false ); // No comment nodes
>>    mParser->setIncludeIgnorableWhitespace( false ); // No text nodes
>>
>>    mErrHandler.reset( (xercesc::ErrorHandler*)new xercesc::HandlerBase() );
>>    mParser->setErrorHandler( mErrHandler.get() );
>>
>>And passing the file string to
>>     parser->parse( xmlFile.c_str() );
>>
>>where parse is a pointer to the already initialized parser.
>>
>>If I pass in
>>    ../../../configuration.xml
>>
>>The parser looks for the file configuration.xml in the root directory. If its 
>>not there
>>then I get an exception message of
>>
>>    The primary document entity could not be opened. 
>> Id=//../../../configuration.xml
>>
>>Note the extra "/"'s in front of the string that I passed in.
>>
>>Thanks for your help.
>>
>>Steve
>>
>>
>>-----Original Message-----
>>From: James Berry [mailto:[EMAIL PROTECTED]
>>Sent: Wed 3/16/05 10:07 AM
>>To: xerces-c-dev@xml.apache.org
>>Cc: Smith, Steven J (PNNL/JGCRI)
>>Subject: Re: Relative paths in C++ on Macintosh OS X
>>
>>Steve,
>>
>>I don't know of a problem in this area. I've used relative paths
>>successfully. But your setup may be somewhat different.
>>
>>Can you provide more information about the context in which  you're
>>seeing this issue? Build environment? Compiler? What API you're passing
>>the relative path to? Can you duplicate the issue with a test program?
>>
>>
>>On Mar 15, 2005, at 9:20 AM, Steve Smith wrote:
>>
>>>I'm having difficulty getting the Xerces-C++ parser to use relative
>>>paths on Mac OS X. Using absolute paths works fine.
>>>
>>>But when I try to pass the parser a path such as
>>>    ../../../configuration.xml
>>
>>Note that it's puzzling why the path above gets converted into an
>>absolute path as below... It looks like the current directory is root.
>>Xerces should be calling getcwd to fetch the current directory (and
>>does so at XMLParsePathToFSRef_X in MacOSPlatformUtils.cpp.
>>
>>-jdb
>>
>>>
>>>I get an error:
>>>The primary document entity could not be opened.
>>>Id=//../../../configuration.xml
>>>
>>>Do I need to use the routines in MacOSPlatformUtils.hpp to help with
>>>this somehow?
>>>
>>>Any help on this would be appreciated.
>>>
>>>Thanks,
>>>
>>>Steve
>>>
>>>---------------------------------------------------------------------
>>>To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>For additional commands, e-mail: [EMAIL PROTECTED]


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

Reply via email to