summaryrefslogtreecommitdiffstats
path: root/src/Common/XmlPacket.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Common/XmlPacket.cpp')
-rw-r--r--src/Common/XmlPacket.cpp29
1 files changed, 10 insertions, 19 deletions
diff --git a/src/Common/XmlPacket.cpp b/src/Common/XmlPacket.cpp
index 73dd87d..6e3d007 100644
--- a/src/Common/XmlPacket.cpp
+++ b/src/Common/XmlPacket.cpp
@@ -20,13 +20,10 @@
#include <config.h>
#include "XmlPacket.h"
+#include "Base64Encoder.h"
#include <cstdlib>
#include <cstring>
-extern "C" {
-#include "base64.h"
-}
-
namespace Mad {
namespace Common {
@@ -38,10 +35,7 @@ void XmlPacket::Element::updateStr() {
return;
if(type == BINARY) {
- char *base64Data;
- base64_encode_alloc((char*)binData, value.var_size, &base64Data);
- str = base64Data;
- std::free(base64Data);
+ str = Base64Encoder::encode(std::vector<boost::uint8_t>((boost::uint8_t*)binData, ((boost::uint8_t*)binData)+value.var_size));
}
else if(type != STRING) {
std::ostringstream buf;
@@ -99,7 +93,12 @@ XmlPacket::Element::Element(xmlNodePtr node) : elementNode(node), binData(0), ty
if(!xmlStrcmp(typestr, (xmlChar*)"binary")) {
type = BINARY;
- base64_decode_alloc((char*)content, xmlStrlen(content), (char**)&binData, &value.var_size);
+
+ std::vector<boost::uint8_t> v = Base64Encoder::decode(str);
+
+ value.var_size = v.size();
+ binData = std::malloc(value.var_size);
+ std::memcpy(binData, v.data(), value.var_size);
}
else if(!xmlStrcmp(typestr, (xmlChar*)"int")) {
type = INT;
@@ -215,17 +214,9 @@ bool XmlPacket::Entry::addBinary(const std::string &name, const void *data, size
if(elements.find(name) != elements.end() || lists.find(name) != lists.end())
return false;
- char *base64Data;
+ std::string base64Data = Base64Encoder::encode(std::vector<boost::uint8_t>((boost::uint8_t*)data, ((boost::uint8_t*)data)+size));;
- base64_encode_alloc((const char*)data, size, &base64Data);
- if(!base64Data)
- return false;
-
- bool ret = add(name, std::string(base64Data), "binary");
-
- std::free(base64Data);
-
- return ret;
+ return add(name, base64Data, "binary");
}
XmlPacket::List::List(xmlNodePtr node) : Element(node, LIST) {