]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
monmaptool, osdmaptool: fix double-dash handling
authorColin Patrick McCabe <cmccabe@alumni.cmu.edu>
Tue, 6 Sep 2011 18:34:21 +0000 (11:34 -0700)
committerColin Patrick McCabe <cmccabe@alumni.cmu.edu>
Tue, 6 Sep 2011 22:28:44 +0000 (15:28 -0700)
Signed-off-by: Colin McCabe <colin.mccabe@dreamhost.com>
src/monmaptool.cc
src/osdmaptool.cc
src/test/cli/monmaptool/create-print.t
src/test/cli/monmaptool/simple.t

index c42df6f5f0a820445c634e6b789b1a87ebf38d41..de35ba3cc8ee64c835129b8dd3538ed3076b4f51 100644 (file)
@@ -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));
 
index f63ff45902ce79cc4be81fbded1a96e853ea62c2..ab06d12721dc24a3d8d3b7df3d39d3d8016fd038 100644 (file)
@@ -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;
index bede746b208cfb1968b3696d0e0dba34c8cfaa22..ef7104eeadf7c93378d1cd24cb1834209d108407 100644 (file)
@@ -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)
index 9acd15919d52ca35bf2fed799deaa9287ae75e98..0eae4bbdc696ddae61907b0b8fb3e044ab8ad3ca 100644 (file)
@@ -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]