summaryrefslogtreecommitdiff
path: root/unoidl
diff options
context:
space:
mode:
Diffstat (limited to 'unoidl')
-rw-r--r--unoidl/source/unoidl.cxx12
1 files changed, 12 insertions, 0 deletions
diff --git a/unoidl/source/unoidl.cxx b/unoidl/source/unoidl.cxx
index a9939e4b9755..bdc7b98ed0d4 100644
--- a/unoidl/source/unoidl.cxx
+++ b/unoidl/source/unoidl.cxx
@@ -12,10 +12,13 @@
#include <set>
#include <vector>
+#include "osl/file.h"
+#include "osl/file.hxx"
#include "osl/mutex.hxx"
#include "rtl/ref.hxx"
#include "rtl/ustring.hxx"
#include "unoidl/legacyprovider.hxx"
+#include "unoidl/sourceprovider.hxx"
#include "unoidl/unoidl.hxx"
#include "unoidl/unoidlprovider.hxx"
@@ -104,6 +107,15 @@ Provider::~Provider() throw () {}
rtl::Reference< Provider > loadProvider(
rtl::Reference< Manager > const & manager, OUString const & uri)
{
+ osl::DirectoryItem item;
+ if (osl::DirectoryItem::get(uri, item) == osl::FileBase::E_None) {
+ osl::FileStatus status(osl_FileStatus_Mask_Type);
+ if (item.getFileStatus(status) == osl::FileBase::E_None
+ && status.getFileType() == osl::FileStatus::Directory)
+ {
+ return new SourceProvider(manager, uri);
+ }
+ }
try {
return new UnoidlProvider(uri);
} catch (FileFormatException & e) {