diff options
author | Marius Kintel <marius@kintel.net> | 2011-11-07 02:59:40 (GMT) |
---|---|---|
committer | Marius Kintel <marius@kintel.net> | 2011-11-07 02:59:40 (GMT) |
commit | f73b8289f6db33713ae0f838649b47b56024f0ff (patch) | |
tree | 25bfcb21f98334551de15bcf83be476dc318def4 /src/value.cc | |
parent | 7bec474b34011dcb0c417ad09d6c84bd833f7535 (diff) |
Correctly escape special characters in dumped strings. Fixes dumptest_import_dxf-tests
Diffstat (limited to 'src/value.cc')
-rw-r--r-- | src/value.cc | 26 |
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; +} |