fix some issues when writing binary data into an XML file

This commit is contained in:
wmayer
2012-05-10 12:07:37 +02:00
parent 8ef46a4368
commit c812315b51
2 changed files with 15 additions and 9 deletions

View File

@@ -32,6 +32,7 @@
#include "Exception.h"
#include "Base64.h"
#include "FileInfo.h"
#include "Stream.h"
#include "Tools.h"
#include <algorithm>
@@ -59,19 +60,24 @@ Writer::~Writer()
void Writer::insertAsciiFile(const char* FileName)
{
std::ifstream from(FileName);
if (!from) throw Base::Exception("Writer::insertAsciiFile() Could not open file!");
Base::FileInfo fi(FileName);
Base::ifstream from(fi);
if (!from)
throw Base::Exception("Writer::insertAsciiFile() Could not open file!");
Stream() << "<![CDATA[" << endl;
char ch;
while (from.get(ch)) Stream().put(ch);
while (from.get(ch))
Stream().put(ch);
Stream() << endl << "]]>" << endl;
}
void Writer::insertBinFile(const char* FileName)
{
std::ifstream from(FileName);
if (!from) throw Base::Exception("Writer::insertAsciiFile() Could not open file!");
Base::FileInfo fi(FileName);
Base::ifstream from(fi, std::ios::in | std::ios::binary);
if (!from)
throw Base::Exception("Writer::insertAsciiFile() Could not open file!");
Stream() << "<![CDATA[" << endl;
@@ -79,8 +85,8 @@ void Writer::insertBinFile(const char* FileName)
std::string encoded;
unsigned int i;
while (from){
for(i=0 ; i<60 && from;i++)
while (from) {
for (i=0 ; i<60 && from;i++)
buf[i] = from.get();
Stream() << Base::base64_encode(buf,i) << endl;
}