aboutsummaryrefslogtreecommitdiff
path: root/src/function/base.h
diff options
context:
space:
mode:
authorAdrian Kummerlaender2014-08-20 22:28:15 +0200
committerAdrian Kummerlaender2014-08-20 22:28:15 +0200
commit2c89112141530617b51af8c41211c2507ec8c738 (patch)
treec467e07340c55cf81090315e79e85af05b542647 /src/function/base.h
parentb31f9170c2bc2330442070968d3cb334cadb5faa (diff)
downloadInputXSLT-2c89112141530617b51af8c41211c2507ec8c738.tar
InputXSLT-2c89112141530617b51af8c41211c2507ec8c738.tar.gz
InputXSLT-2c89112141530617b51af8c41211c2507ec8c738.tar.bz2
InputXSLT-2c89112141530617b51af8c41211c2507ec8c738.tar.lz
InputXSLT-2c89112141530617b51af8c41211c2507ec8c738.tar.xz
InputXSLT-2c89112141530617b51af8c41211c2507ec8c738.tar.zst
InputXSLT-2c89112141530617b51af8c41211c2507ec8c738.zip
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
Diffstat (limited to 'src/function/base.h')
-rw-r--r--src/function/base.h8
1 files changed, 5 insertions, 3 deletions
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<Index...>
) 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<const Implementation*>(this)->constructDocument(
+ context,
valueGetter.get<typename std::tuple_element<
Index,
std::tuple<Types...>