diff options
author | Colin Patrick McCabe <cmccabe@alumni.cmu.edu> | 2011-09-06 15:12:33 -0700 |
---|---|---|
committer | Colin Patrick McCabe <cmccabe@alumni.cmu.edu> | 2011-09-06 15:28:45 -0700 |
commit | 64e5308726304c2b997d9b9f9d48204b703bbcea (patch) | |
tree | 1aec595e93d09a64c117b00a84c109dd60086f55 | |
parent | b1da7ec0dd74068b0673127839d1cc95379f76f1 (diff) | |
download | ceph-64e5308726304c2b997d9b9f9d48204b703bbcea.tar.gz |
cmon: use new argument parsing stuff
Signed-off-by: Colin McCabe <colin.mccabe@dreamhost.com>
-rw-r--r-- | src/cmon.cc | 39 |
1 files changed, 24 insertions, 15 deletions
diff --git a/src/cmon.cc b/src/cmon.cc index 7be51c3e398..c8b2e767f18 100644 --- a/src/cmon.cc +++ b/src/cmon.cc @@ -52,11 +52,9 @@ void usage() int main(int argc, const char **argv) { int err; - DEFINE_CONF_VARS(usage); bool mkfs = false; - const char *osdmapfn = 0; - const char *inject_monmap = 0; + std::string osdmapfn, inject_monmap; vector<const char*> args; argv_to_vec(argc, argv, args); @@ -64,15 +62,26 @@ int main(int argc, const char **argv) global_init(args, CEPH_ENTITY_TYPE_MON, CODE_ENVIRONMENT_DAEMON, 0); - FOR_EACH_ARG(args) { - if (CEPH_ARGPARSE_EQ("mkfs", '\0')) { - mkfs = true; - } else if (CEPH_ARGPARSE_EQ("osdmap", '\0')) { - CEPH_ARGPARSE_SET_ARG_VAL(&osdmapfn, OPT_STR); - } else if (CEPH_ARGPARSE_EQ("inject_monmap", '\0')) { - CEPH_ARGPARSE_SET_ARG_VAL(&inject_monmap, OPT_STR); - } else + std::string val; + for (std::vector<const char*>::iterator i = args.begin(); i != args.end(); ) { + if (ceph_argparse_double_dash(args, i)) { + break; + } else if (ceph_argparse_flag(args, i, "-h", "--help", (char*)NULL)) { usage(); + exit(0); + } else if (ceph_argparse_flag(args, i, "--mkfs", (char*)NULL)) { + mkfs = true; + } else if (ceph_argparse_witharg(args, i, &val, "--osdmap", (char*)NULL)) { + osdmapfn = val; + } else if (ceph_argparse_witharg(args, i, &val, "--inject_monmap", (char*)NULL)) { + inject_monmap = val; + } else { + ++i; + } + } + if (!args.empty()) { + cerr << "too many arguments" << std::endl; + usage(); } if (g_conf->mon_data.empty()) { @@ -83,7 +92,7 @@ int main(int argc, const char **argv) // -- mkfs -- if (mkfs) { common_init_finish(g_ceph_context); - if (g_conf->monmap.empty() || !osdmapfn) + if (g_conf->monmap.empty() || osdmapfn.empty()) usage(); // make sure it doesn't already exist @@ -107,7 +116,7 @@ int main(int argc, const char **argv) MonMap monmap(ceph_clock_now(g_ceph_context)); monmap.decode(monmapbl); - err = osdmapbl.read_file(osdmapfn, &error); + err = osdmapbl.read_file(osdmapfn.c_str(), &error); if (err < 0) { cout << argv[0] << ": error reading " << osdmapfn << ": " << error << std::endl; @@ -174,10 +183,10 @@ int main(int argc, const char **argv) // inject new monmap? - if (inject_monmap) { + if (!inject_monmap.empty()) { bufferlist bl; std::string error; - int r = bl.read_file(inject_monmap, &error); + int r = bl.read_file(inject_monmap.c_str(), &error); if (r) { cerr << "unable to read monmap from " << inject_monmap << ": " << error << std::endl; |