summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2018-11-28 23:30:48 +0000
committerCarl Hetherington <cth@carlh.net>2018-11-28 23:30:48 +0000
commit0d487c87a4f61324256e13686f19db3c5dd4d826 (patch)
treeafab96c039a3de6c99902c579c9857456baf7fe9
parent45fa2b3c94069c3449b9210b750c2b0391fa9244 (diff)
Write config.xml with CR/LF terminators on Windows.
-rw-r--r--ChangeLog4
-rw-r--r--src/lib/config.cc15
2 files changed, 17 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index b4d1b460b..fece69ded 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2018-11-28 Carl Hetherington <cth@carlh.net>
+
+ * Write config.xml with CR/LF terminators on Windows (#1402).
+
2018-11-26 Carl Hetherington <cth@carlh.net>
* Version 2.13.73 released.
diff --git a/src/lib/config.cc b/src/lib/config.cc
index 489e66db9..ddb4bf25a 100644
--- a/src/lib/config.cc
+++ b/src/lib/config.cc
@@ -947,11 +947,22 @@ Config::write_config () const
#endif
try {
- doc.write_to_file_formatted(config_file().string());
+ string const s = doc.write_to_string_formatted ();
+ boost::filesystem::path const cf = config_file ();
+ FILE* f = fopen_boost (cf, "w");
+ if (!f) {
+ throw FileError (_("Could not open file for writing"), cf);
+ }
+ size_t const w = fwrite (s.c_str(), 1, s.length(), f);
+ if (w != s.length()) {
+ fclose (f);
+ throw FileError (_("Could not write whole file"), cf);
+ }
+ fclose (f);
} catch (xmlpp::exception& e) {
string s = e.what ();
trim (s);
- throw FileError (s, path("config.xml"));
+ throw FileError (s, config_file());
}
}