From: Yanhu Cao Date: Wed, 14 Jun 2017 01:03:01 +0000 (+0800) Subject: common,config: refactor method md_config_t::_get_val(const char *, char**, int) const X-Git-Tag: v12.1.1~157^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=988271e43ddfab9dd9d418904fbbbaa65577bacb;p=ceph.git common,config: refactor method md_config_t::_get_val(const char *, char**, int) const Signed-off-by: Yanhu Cao --- diff --git a/src/common/config.cc b/src/common/config.cc index 32a817deb8c9..fd6ab3441da5 100644 --- a/src/common/config.cc +++ b/src/common/config.cc @@ -942,29 +942,21 @@ int md_config_t::_get_val(const char *key, char **buf, int len) const if (!key) return -EINVAL; - string k(ConfFile::normalize_key_name(key)); - - config_value_t cval = _get_val(k.c_str()); - if (!boost::get(&cval)) { - ostringstream oss; - if (bool *flagp = boost::get(&cval)) { - oss << (*flagp ? "true" : "false"); - } else { - oss << cval; - } - string str(oss.str()); - int l = strlen(str.c_str()) + 1; + string val ; + if (!_get_val(key, &val)) { + int l = val.length() + 1; if (len == -1) { *buf = (char*)malloc(l); if (!*buf) return -ENOMEM; - strcpy(*buf, str.c_str()); + strncpy(*buf, val.c_str(), l); return 0; } - snprintf(*buf, len, "%s", str.c_str()); + snprintf(*buf, len, "%s", val.c_str()); return (l > len) ? -ENAMETOOLONG : 0; } + string k(ConfFile::normalize_key_name(key)); // subsys? for (int o = 0; o < subsys.get_num(); o++) { std::string as_option = "debug_" + subsys.get_name(o);