diff options
Diffstat (limited to 'ACEXML/common/StreamFactory.cpp')
-rw-r--r-- | ACEXML/common/StreamFactory.cpp | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/ACEXML/common/StreamFactory.cpp b/ACEXML/common/StreamFactory.cpp index 80edc8a265f..005b18c668b 100644 --- a/ACEXML/common/StreamFactory.cpp +++ b/ACEXML/common/StreamFactory.cpp @@ -3,6 +3,7 @@ #include "ACEXML/common/StreamFactory.h" #include "ACEXML/common/FileCharStream.h" #include "ACEXML/common/HttpCharStream.h" +#include "ACEXML/common/ZipCharStream.h" ACE_RCSID (common, StreamFactory, "$Id$") @@ -11,8 +12,8 @@ ACEXML_StreamFactory::create_stream (const ACEXML_Char* uri) { if (uri == 0) return 0; - ACEXML_FileCharStream* fstream = 0; + ACEXML_ZipCharStream* zstream = 0; ACEXML_HttpCharStream* hstream = 0; if (ACE_OS::strstr (uri, ACE_TEXT("ftp://")) != 0) @@ -24,17 +25,22 @@ ACEXML_StreamFactory::create_stream (const ACEXML_Char* uri) ACE_NEW_RETURN (hstream, ACEXML_HttpCharStream, 0); if (hstream->open (uri) != -1) return hstream; - else - return 0; } else { + if (ACE_OS::strstr (uri, ACE_TEXT ("file://")) != 0) + uri += 7; // Skip over file:// ACE_NEW_RETURN (fstream, ACEXML_FileCharStream, 0); if (fstream->open (uri) != -1) return fstream; else - return 0; + { + ACE_NEW_RETURN (zstream, ACEXML_ZipCharStream, 0); + if (zstream->open (uri) != -1) + return zstream; + } } + return 0; } ACEXML_StreamFactory::~ACEXML_StreamFactory () |