From 2c89112141530617b51af8c41211c2507ec8c738 Mon Sep 17 00:00:00 2001 From: Adrian Kummerlaender Date: Wed, 20 Aug 2014 22:28:15 +0200 Subject: Setting the correct work directory in FunctionExternalCommand * changed the XObjectValue constructor to accept a pointer to FilesystemContext instead of instantiating the context by itself * the FilesystemContext is now instantiated in the "callConstructDocument" member method of "FunctionBase" ** a const reference to FilesystemContext is passed to all "constructDocument" member method implementations * the FilesystemContext is currently only used by FunctionExternal command to set the correct work directory in "boost::process::context" ** this is required so calling external commands from inside a stylesheet works as expected *** i.e. from inside the directory the stylesheet is located in * modified all remaining external function implementations accordingly --- src/function/base.h | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'src/function/base.h') diff --git a/src/function/base.h b/src/function/base.h index 3726aa8..d53ae8a 100644 --- a/src/function/base.h +++ b/src/function/base.h @@ -120,15 +120,17 @@ class FunctionBase : public xalan::Function { const xalan::Locator* locator, Sequence ) const { - XObjectValue valueGetter( + const FilesystemContext context( IncludeEntityResolver::getPathFromSystemId( locator->getSystemId() - ), - this->include_resolver_ + ) ); + XObjectValue valueGetter(&context, this->include_resolver_); + return this->document_cache_->create( static_cast(this)->constructDocument( + context, valueGetter.get -- cgit v1.2.3