summaryrefslogtreecommitdiff
path: root/src/value.cc
diff options
context:
space:
mode:
authorMarius Kintel <marius@kintel.net>2011-11-07 02:59:40 (GMT)
committerMarius Kintel <marius@kintel.net>2011-11-07 02:59:40 (GMT)
commitf73b8289f6db33713ae0f838649b47b56024f0ff (patch)
tree25bfcb21f98334551de15bcf83be476dc318def4 /src/value.cc
parent7bec474b34011dcb0c417ad09d6c84bd833f7535 (diff)
Correctly escape special characters in dumped strings. Fixes dumptest_import_dxf-tests
Diffstat (limited to 'src/value.cc')
-rw-r--r--src/value.cc26
1 files changed, 25 insertions, 1 deletions
diff --git a/src/value.cc b/src/value.cc
index 0b7cd9b..e08b2d8 100644
--- a/src/value.cc
+++ b/src/value.cc
@@ -29,6 +29,7 @@
#include <assert.h>
#include <sstream>
#include <QDir>
+#include <boost/foreach.hpp>
Value::Value()
{
@@ -416,7 +417,30 @@ std::ostream &operator<<(std::ostream &stream, const Value &value)
std::ostream &operator<<(std::ostream &stream, const Filename &filename)
{
- stream << QDir::current().relativeFilePath(QString::fromStdString(filename)).toStdString();
+ stream << QuotedString(QDir::current().relativeFilePath(QString::fromStdString(filename)).toStdString());
return stream;
}
+std::ostream &operator<<(std::ostream &stream, const QuotedString &s)
+{
+ stream << '"';
+ BOOST_FOREACH(char c, s) {
+ switch (c) {
+ case '\t':
+ stream << "\\t";
+ break;
+ case '\n':
+ stream << "\\n";
+ break;
+ case '"':
+ case '\\':
+ stream << '\\';
+ stream << c;
+ break;
+ default:
+ stream << c;
+ }
+ }
+ stream << '"';
+ return stream;
+}
contact: Jan Huwald // Impressum