summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorColin Patrick McCabe <cmccabe@alumni.cmu.edu>2011-09-06 15:12:33 -0700
committerColin Patrick McCabe <cmccabe@alumni.cmu.edu>2011-09-06 15:28:45 -0700
commit64e5308726304c2b997d9b9f9d48204b703bbcea (patch)
tree1aec595e93d09a64c117b00a84c109dd60086f55
parentb1da7ec0dd74068b0673127839d1cc95379f76f1 (diff)
downloadceph-64e5308726304c2b997d9b9f9d48204b703bbcea.tar.gz
cmon: use new argument parsing stuff
Signed-off-by: Colin McCabe <colin.mccabe@dreamhost.com>
-rw-r--r--src/cmon.cc39
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;