diff --git a/uppsrc/Core/XML.cpp b/uppsrc/Core/XML.cpp index da6807528..8d9bb8fe6 100644 --- a/uppsrc/Core/XML.cpp +++ b/uppsrc/Core/XML.cpp @@ -25,21 +25,21 @@ String XmlHeader(const char *encoding, const char *version, const char *standalo { StringBuffer r; r << "\n"; + << standalone << "\" ?>\r\n"; return r; } String XmlPI(const char *text) { StringBuffer r; - r << "\n"; + r << "\r\n"; return r; } String XmlDecl(const char *text) { StringBuffer r; - r << "\n"; + r << "\r\n"; return r; } @@ -56,7 +56,7 @@ String XmlDoc(const char *name, const char *xmlbody) String XmlComment(const char *text) { StringBuffer out; - out << "\n"; + out << "\r\n"; return out; } @@ -65,13 +65,13 @@ XmlTag& XmlTag::Tag(const char *s) tag.Clear(); end.Clear(); tag << '<' << s; - end << "\n"; + end << "\r\n"; return *this; } String XmlTag::operator()() { - return tag + "/>\n"; + return tag + "/>\r\n"; } String XmlTag::operator()(const char* text) @@ -79,13 +79,18 @@ String XmlTag::operator()(const char* text) StringBuffer r; r << tag << '>'; if(strchr(text, '\n')) { - r << '\n'; + r << "\r\n" bool tab = true; while(*text) { if(tab) r << '\t'; - tab = *text == '\n'; - r.Cat(*text++); + int c = (byte)*text++; + tab = c == '\n'; + if(tab) + r << "\r\n" + else + if(c == '\t' || c >= 32) + r.Cat(c); } } else @@ -754,13 +759,13 @@ String AsXML(const XmlNode& node, dword style) style &= ~(XML_HEADER|XML_DOCTYPE); switch(node.GetType()) { case XML_PI: - r << "\n"; + r << "\r\n"; break; case XML_DECL: - r << "\n"; + r << "\r\n"; break; case XML_COMMENT: - r << "\n"; + r << "\r\n"; break; case XML_DOC: for(int i = 0; i < node.GetCount(); i++) diff --git a/uppsrc/plugin/sqlite3/Sqlite3Schema.h b/uppsrc/plugin/sqlite3/Sqlite3Schema.h index 1334f7454..974b329ff 100644 --- a/uppsrc/plugin/sqlite3/Sqlite3Schema.h +++ b/uppsrc/plugin/sqlite3/Sqlite3Schema.h @@ -36,6 +36,9 @@ #define BLOB(x) COLUMN("blob", String, x, 0, 0) #define BLOB_(x) COLUMN_("blob", String, x, 0, 0) +#define LONGRAW(x) COLUMN("blob", String, x, 0, 0) +#define LONGRAW_(x) COLUMN_("blob", String, x, 0, 0) + #define PRIMARY_KEY INLINE_ATTRIBUTE("primary key") #define AUTO_INCREMENT #define NOT_NULL INLINE_ATTRIBUTE("not null")