summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2011-05-16 01:37:19 +0900
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2011-05-16 01:37:19 +0900
commitc9fe4c64f52ded139a2e9bfdd9e6fd714f863fc2 (patch)
treeb931f48409b503aeac0fdca7ae5fbfa222b83617
parentf6625f8dc5557e77fcace9bedaf1815c5eaf763f (diff)
Added relative URI support to ExpatMetalinkProcessor
-rw-r--r--src/ExpatMetalinkProcessor.cc16
-rw-r--r--src/ExpatMetalinkProcessor.h12
2 files changed, 21 insertions, 7 deletions
diff --git a/src/ExpatMetalinkProcessor.cc b/src/ExpatMetalinkProcessor.cc
index 7e89376c..335458f0 100644
--- a/src/ExpatMetalinkProcessor.cc
+++ b/src/ExpatMetalinkProcessor.cc
@@ -177,20 +177,25 @@ void checkError(XML_Parser parser)
} // namespace
SharedHandle<Metalinker>
-MetalinkProcessor::parseFile(const std::string& filename)
+MetalinkProcessor::parseFile
+(const std::string& filename,
+ const std::string& baseUri)
{
if(filename == DEV_STDIN) {
return parseFile(std::cin);
} else {
std::ifstream infile(filename.c_str(), std::ios::binary);
- return parseFile(infile);
+ return parseFile(infile, baseUri);
}
}
SharedHandle<Metalinker>
-MetalinkProcessor::parseFile(std::istream& stream)
+MetalinkProcessor::parseFile
+(std::istream& stream,
+ const std::string& baseUri)
{
stm_.reset(new MetalinkParserStateMachine());
+ stm_->setBaseUri(baseUri);
char buf[4096];
SharedHandle<SessionData> sessionData(new SessionData(stm_));
@@ -212,9 +217,12 @@ MetalinkProcessor::parseFile(std::istream& stream)
}
SharedHandle<Metalinker>
-MetalinkProcessor::parseFromBinaryStream(const SharedHandle<BinaryStream>& binaryStream)
+MetalinkProcessor::parseFromBinaryStream
+(const SharedHandle<BinaryStream>& binaryStream,
+ const std::string& baseUri)
{
stm_.reset(new MetalinkParserStateMachine());
+ stm_->setBaseUri(baseUri);
ssize_t bufSize = 4096;
unsigned char buf[bufSize];
diff --git a/src/ExpatMetalinkProcessor.h b/src/ExpatMetalinkProcessor.h
index c21366e7..2538989e 100644
--- a/src/ExpatMetalinkProcessor.h
+++ b/src/ExpatMetalinkProcessor.h
@@ -42,6 +42,7 @@
#include <expat.h>
#include "SharedHandle.h"
+#include "A2STR.h"
namespace aria2 {
@@ -53,12 +54,17 @@ class MetalinkProcessor {
private:
SharedHandle<MetalinkParserStateMachine> stm_;
public:
- SharedHandle<Metalinker> parseFile(const std::string& filename);
+ SharedHandle<Metalinker> parseFile
+ (const std::string& filename,
+ const std::string& baseUri = A2STR::NIL);
- SharedHandle<Metalinker> parseFile(std::istream& stream);
+ SharedHandle<Metalinker> parseFile
+ (std::istream& stream,
+ const std::string& baseUri = A2STR::NIL);
SharedHandle<Metalinker> parseFromBinaryStream
- (const SharedHandle<BinaryStream>& binaryStream);
+ (const SharedHandle<BinaryStream>& binaryStream,
+ const std::string& baseUri = A2STR::NIL);
};
} // namespace aria2