summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSage Weil <sage@inktank.com>2013-08-15 14:36:57 -0700
committerSage Weil <sage@inktank.com>2013-08-15 14:38:13 -0700
commitb99921746ef2e1e15777c748a15e929c72888db1 (patch)
tree273098666c8380cb9517a707fadc72806942a308
parentd212bba6bd0d7d234097122988e4d973064b5645 (diff)
downloadceph-b99921746ef2e1e15777c748a15e929c72888db1.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> (cherry picked from commit fc23cfe3fe567b30413d8af0c614a32fec238939)
-rw-r--r--src/common/ceph_context.cc8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/common/ceph_context.cc b/src/common/ceph_context.cc
index 9602fdf2e40..e694a2f09b3 100644
--- a/src/common/ceph_context.cc
+++ b/src/common/ceph_context.cc
@@ -26,6 +26,7 @@
#include "common/Formatter.h"
#include "log/Log.h"
#include "auth/Crypto.h"
+#include "include/str_list.h"
#include <iostream>
#include <pthread.h>
@@ -197,11 +198,10 @@ void CephContext::do_command(std::string command, cmdmap_t& cmdmap,
f->dump_string("error", "syntax error: 'config set <var> <value>'");
} else {
// val may be multiple words
- ostringstream argss;
- std::copy(val.begin(), val.end(), ostream_iterator<string>(argss, " "));
- int r = _conf->set_val(var.c_str(), argss.str().c_str());
+ string valstr = str_join(val, " ");
+ int r = _conf->set_val(var.c_str(), valstr.c_str());
if (r < 0) {
- f->dump_stream("error") << "error setting '" << var << "' to '" << val << "': " << cpp_strerror(r);
+ f->dump_stream("error") << "error setting '" << var << "' to '" << valstr << "': " << cpp_strerror(r);
} else {
ostringstream ss;
_conf->apply_changes(&ss);