summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSage Weil <sage@inktank.com>2013-08-15 13:42:50 -0700
committerSage Weil <sage@inktank.com>2013-08-15 13:42:50 -0700
commitfefe0c602f78e66d35fd5806da4c2e4e154a267c (patch)
tree357e48e69e1cde75aeb33c3278da82a3d814a9d2
parentea79bb2913f657a89455317c84d926d891104a35 (diff)
downloadceph-fefe0c602f78e66d35fd5806da4c2e4e154a267c.tar.gz
config: fix stringification of config values
The std::copy construct leaves a trailing separator character, which breaks parsing for booleans (among other things) and probably mangles everything else too. Backport: dumpling Signed-off-by: Sage Weil <sage@inktank.com> Reviewed-by: Samuel Just <sam.just@inktank.com>
-rw-r--r--src/common/ceph_context.cc5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/common/ceph_context.cc b/src/common/ceph_context.cc
index 9602fdf2e40..fcc3798c47a 100644
--- a/src/common/ceph_context.cc
+++ b/src/common/ceph_context.cc
@@ -198,7 +198,10 @@ void CephContext::do_command(std::string command, cmdmap_t& cmdmap,
} else {
// val may be multiple words
ostringstream argss;
- std::copy(val.begin(), val.end(), ostream_iterator<string>(argss, " "));
+ argss << *val.begin();
+ for (std::vector<std::string>::iterator i = val.begin() + 1; i != val.end(); ++i) {
+ argss << "," << *i;
+ }
int r = _conf->set_val(var.c_str(), argss.str().c_str());
if (r < 0) {
f->dump_stream("error") << "error setting '" << var << "' to '" << val << "': " << cpp_strerror(r);