summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorColin Patrick McCabe <cmccabe@alumni.cmu.edu>2011-09-06 11:34:21 -0700
committerColin Patrick McCabe <cmccabe@alumni.cmu.edu>2011-09-06 15:28:44 -0700
commit39538d73eb4b28f52349f45d08c3e94384eb9abe (patch)
treece240fd1c00dd0ec4570621c7e527fd2b704aadf
parent1a1eab23034067247b6688cdaefdaa07c42e38e1 (diff)
downloadceph-39538d73eb4b28f52349f45d08c3e94384eb9abe.tar.gz
monmaptool, osdmaptool: fix double-dash handling
Signed-off-by: Colin McCabe <colin.mccabe@dreamhost.com>
-rw-r--r--src/monmaptool.cc22
-rw-r--r--src/osdmaptool.cc11
-rw-r--r--src/test/cli/monmaptool/create-print.t7
-rw-r--r--src/test/cli/monmaptool/simple.t1
4 files changed, 27 insertions, 14 deletions
diff --git a/src/monmaptool.cc b/src/monmaptool.cc
index c42df6f5f0a..de35ba3cc8e 100644
--- a/src/monmaptool.cc
+++ b/src/monmaptool.cc
@@ -54,9 +54,6 @@ int main(int argc, const char **argv)
std::string val;
for (std::vector<const char*>::iterator i = args.begin(); i != args.end(); ) {
if (ceph_argparse_double_dash(args, i)) {
- if (i != args.end()) {
- fn = *i;
- }
break;
} else if (ceph_argparse_flag(args, i, "-h", "--help", (char*)NULL)) {
usage();
@@ -68,7 +65,8 @@ int main(int argc, const char **argv)
clobber = true;
} else if (ceph_argparse_flag(args, i, "--add", (char*)NULL)) {
string name = *i;
- if (++i == args.end())
+ i = args.erase(i);
+ if (i == args.end())
usage();
entity_addr_t addr;
if (!addr.parse(*i)) {
@@ -79,19 +77,23 @@ int main(int argc, const char **argv)
addr.set_port(CEPH_MON_PORT);
add[name] = addr;
modified = true;
- ++i;
+ i = args.erase(i);
} else if (ceph_argparse_witharg(args, i, &val, "--rm", (char*)NULL)) {
rm.push_back(val);
modified = true;
- } else if (fn.empty()) {
- fn = *i++;
} else {
- cerr << "invalid argument: '" << *i << "'" << std::endl;
- usage();
+ ++i;
}
}
- if (fn.empty())
+ if (args.size() < 1) {
+ cerr << me << ": must specify monmap filename" << std::endl;
usage();
+ }
+ else if (args.size() > 1) {
+ cerr << me << ": too many arguments" << std::endl;
+ usage();
+ }
+ fn = args[0];
MonMap monmap(ceph_clock_now(g_ceph_context));
diff --git a/src/osdmaptool.cc b/src/osdmaptool.cc
index f63ff45902c..ab06d12721d 100644
--- a/src/osdmaptool.cc
+++ b/src/osdmaptool.cc
@@ -117,16 +117,19 @@ int main(int argc, const char **argv)
test_map_object = val;
} else if (ceph_argparse_flag(args, i, "--test_crush", (char*)NULL)) {
test_crush = true;
- } else if (fn.empty()) {
- fn = *i++;
} else {
- usage();
+ ++i;
}
}
- if (fn.empty()) {
+ if (args.size() < 1) {
cerr << me << ": must specify osdmap filename" << std::endl;
usage();
}
+ else if (args.size() > 1) {
+ cerr << me << ": too many arguments" << std::endl;
+ usage();
+ }
+ fn = args[0];
OSDMap osdmap;
bufferlist bl;
diff --git a/src/test/cli/monmaptool/create-print.t b/src/test/cli/monmaptool/create-print.t
index bede746b208..ef7104eeadf 100644
--- a/src/test/cli/monmaptool/create-print.t
+++ b/src/test/cli/monmaptool/create-print.t
@@ -9,3 +9,10 @@
fsid [0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} (re)
last_changed \d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d+ (re)
created \d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d+ (re)
+
+ $ monmaptool --print -- mymonmap
+ monmaptool: monmap file mymonmap
+ epoch 1
+ fsid [0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} (re)
+ last_changed \d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d+ (re)
+ created \d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d+ (re)
diff --git a/src/test/cli/monmaptool/simple.t b/src/test/cli/monmaptool/simple.t
index 9acd15919d5..0eae4bbdc69 100644
--- a/src/test/cli/monmaptool/simple.t
+++ b/src/test/cli/monmaptool/simple.t
@@ -1,3 +1,4 @@
$ monmaptool
+ monmaptool: must specify monmap filename
usage: [--print] [--create [--clobber]] [--add name 1.2.3.4:567] [--rm name] <mapfilename>
[1]