]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
Some fixes to double-dash support, fix warning
authorColin Patrick McCabe <cmccabe@alumni.cmu.edu>
Wed, 24 Aug 2011 01:12:06 +0000 (18:12 -0700)
committerColin Patrick McCabe <cmccabe@alumni.cmu.edu>
Wed, 24 Aug 2011 01:12:06 +0000 (18:12 -0700)
Signed-off-by: Colin McCabe <colin.mccabe@dreamhost.com>
13 files changed:
src/cconf.cc
src/cmds.cc
src/common/ceph_argparse.cc
src/common/ceph_argparse.h
src/common/config.cc
src/mon/MDSMonitor.cc
src/mon/MonmapMonitor.cc
src/mon/OSDMonitor.cc
src/mon/PGMonitor.cc
src/rados.cc
src/test/ceph_argparse.cc
src/test/daemon_config.cc
src/test/test_mutate.cc

index 614b21fa5a2284d95a020c403f3189e1dd2f572b..90c2cc8b4142dac8a158d9431bb6bd3d27a4f672 100644 (file)
@@ -161,7 +161,9 @@ 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_witharg(args, i, &val, "-s", "--section", (char*)NULL)) {
+    if (ceph_argparse_double_dash(args, i)) {
+      break;
+    } else if (ceph_argparse_witharg(args, i, &val, "-s", "--section", (char*)NULL)) {
       sections.push_back(val);
     } else if (ceph_argparse_flag(args, i, "-r", "--resolve_search", (char*)NULL)) {
       resolve_search = true;
index 453aeb01e9979978e8ff95a9a3b8b96beacaf83e..3293d4ee1cfe6a898c54e78d4ba086a323b93682 100644 (file)
@@ -134,7 +134,10 @@ int main(int argc, const char **argv)
 
   std::string val, action;
   for (std::vector<const char*>::iterator i = args.begin(); i != args.end(); ) {
-    if (ceph_argparse_witharg(args, i, &val, "--dump-journal", (char*)NULL)) {
+    if (ceph_argparse_double_dash(args, i)) {
+      break;
+    }
+    else if (ceph_argparse_witharg(args, i, &val, "--dump-journal", (char*)NULL)) {
       set_special_action(action, "dump-journal");
       rank = parse_rank("dump-journal", val);
       if (i == args.end()) {
index ad4b8097fe3f345d3f1a2171c00bd5b52ff65a91..a7e8313e8b1b319e5602efd0e6aae5e13141b323 100644 (file)
@@ -254,13 +254,13 @@ static void dashes_to_underscores(const char *input, char *output)
   *o++ = '\0';
 }
 
-/** Once we see a standalone double dash, '--', we stop looking for any
- * other options and flags. */
-static bool handle_double_dash(std::vector<const char*> &args,
+/** Once we see a standalone double dash, '--', we should remove it and stop
+ * looking for any other options and flags. */
+bool ceph_argparse_double_dash(std::vector<const char*> &args,
        std::vector<const char*>::iterator &i)
 {
-  if (*i == "--") {
-    i = args.end();
+  if (strcmp(*i, "--") == 0) {
+    i = args.erase(i);
     return true;
   }
   return false;
@@ -276,8 +276,6 @@ bool ceph_argparse_flag(std::vector<const char*> &args,
   const char *a;
   va_list ap;
 
-  if (handle_double_dash(args, i))
-    return false;
   va_start(ap, i);
   while (1) {
     a = va_arg(ap, char*);
@@ -304,8 +302,6 @@ bool ceph_argparse_binary_flag(std::vector<const char*> &args,
   va_list ap;
   int strlen_a;
 
-  if (handle_double_dash(args, i))
-    return false;
   // does this argument match any of the possibilities?
   va_start(ap, oss);
   while (1) {
@@ -354,8 +350,6 @@ bool ceph_argparse_witharg(std::vector<const char*> &args,
   va_list ap;
   int strlen_a;
 
-  if (handle_double_dash(args, i))
-    return false;
   // does this argument match any of the possibilities?
   va_start(ap, ret);
   while (1) {
index 01098188f75324ca4b3c71cf0d7badd5a1d9c268..b2f4a3c651d5f08442a103110833f3323e553a6d 100644 (file)
@@ -92,6 +92,8 @@ extern void vec_to_argv(std::vector<const char*>& args,
                  int& argc, const char **&argv);
 
 extern bool parse_ip_port_vec(const char *s, std::vector<entity_addr_t>& vec);
+bool ceph_argparse_double_dash(std::vector<const char*> &args,
+       std::vector<const char*>::iterator &i);
 bool ceph_argparse_flag(std::vector<const char*> &args,
        std::vector<const char*>::iterator &i, ...);
 bool ceph_argparse_witharg(std::vector<const char*> &args,
index 7110c0d0e3e429446ed719d41d85099a36cbcf62..7c2c20896e45b50e2fd915c21ec9510bcf59f122 100644 (file)
@@ -599,7 +599,10 @@ parse_argv(std::vector<const char*>& args)
   // observer notifications later.
   std::string val;
   for (std::vector<const char*>::iterator i = args.begin(); i != args.end(); ) {
-    if (ceph_argparse_flag(args, i, "--show_conf", (char*)NULL)) {
+    if (ceph_argparse_double_dash(args, i)) {
+      break;
+    }
+    else if (ceph_argparse_flag(args, i, "--show_conf", (char*)NULL)) {
       cerr << cf << std::endl;
       _exit(0);
     }
index c4a907cfeb28601e45cbaeb4075694b5d287e497..63ce8678443678f40213adcb7389bc9026ba6aa8 100644 (file)
@@ -502,7 +502,9 @@ bool MDSMonitor::preprocess_command(MMonCommand *m)
       string val;
       epoch_t epoch = 0;
       for (std::vector<const char*>::iterator i = args.begin()+1; i != args.end(); ) {
-       if (ceph_argparse_witharg(args, i, &val, "-f", "--format", (char*)NULL))
+       if (ceph_argparse_double_dash(args, i))
+         break;
+       else if (ceph_argparse_witharg(args, i, &val, "-f", "--format", (char*)NULL))
          format = val;
        else if (!epoch)
          epoch = atoi(*i++);
index 3f5909324f716334d8444a92ceb1c89309b1a3ad..e7ce5c18cade4265f73d647a84aa2ab03a4e1ddf 100644 (file)
@@ -141,7 +141,9 @@ bool MonmapMonitor::preprocess_command(MMonCommand *m)
       epoch_t epoch = 0;
       string cmd = args[0];
       for (std::vector<const char*>::iterator i = args.begin()+1; i != args.end(); ) {
-       if (ceph_argparse_witharg(args, i, &val, "-f", "--format", (char*)NULL))
+       if (ceph_argparse_double_dash(args, i))
+         break;
+       else if (ceph_argparse_witharg(args, i, &val, "-f", "--format", (char*)NULL))
          format = val;
        else if (!epoch)
          epoch = atoi(*i++);
index ecddf25b6aa5a2c6442674c5c300dab248b794ee..7c9e038cc282ae3baec85e485c4cf55d74807ef3 100644 (file)
@@ -1179,7 +1179,9 @@ bool OSDMonitor::preprocess_command(MMonCommand *m)
       epoch_t epoch = 0;
       string cmd = args[0];
       for (std::vector<const char*>::iterator i = args.begin()+1; i != args.end(); ) {
-       if (ceph_argparse_witharg(args, i, &val, "-f", "--format", (char*)NULL))
+       if (ceph_argparse_double_dash(args, i))
+         break;
+       else if (ceph_argparse_witharg(args, i, &val, "-f", "--format", (char*)NULL))
          format = val;
        else if (!epoch)
          epoch = atoi(*i++);
index d1f09f81c1962964a38e8c00423964c6e1236fbb..5f2a803a61691601be08c990cb554644b1c1fd03 100644 (file)
@@ -782,7 +782,9 @@ bool PGMonitor::preprocess_command(MMonCommand *m)
       string what = "all";
       string val;
       for (std::vector<const char*>::iterator i = args.begin()+1; i != args.end(); ) {
-       if (ceph_argparse_witharg(args, i, &val, "-f", "--format", (char*)NULL)) {
+       if (ceph_argparse_double_dash(args, i)) {
+         break;
+       } else if (ceph_argparse_witharg(args, i, &val, "-f", "--format", (char*)NULL)) {
          format = val;
        } else {
          what = *i++;
index db19c1732193b25c3c9f235530baa9f37159b547..da9d29eff2e7166b07e9b0997c60a6b69ad0627d 100644 (file)
@@ -1175,7 +1175,9 @@ int main(int argc, const char **argv)
   std::vector<const char*>::iterator i;
   std::string val;
   for (i = args.begin(); i != args.end(); ) {
-    if (ceph_argparse_flag(args, i, "-h", "--help", (char*)NULL)) {
+    if (ceph_argparse_double_dash(args, i)) {
+      break;
+    } else if (ceph_argparse_flag(args, i, "-h", "--help", (char*)NULL)) {
       usage(cout);
       exit(0);
     } else if (ceph_argparse_flag(args, i, "-f", "--force", (char*)NULL)) {
index 9f13d33e1ee09687f1a3c20105c8c7d50e632e88..d0f1625b48dfafd19f77b98a7d04ac4bf2db149d 100644 (file)
@@ -116,7 +116,10 @@ TEST(CephArgParse, DoubleDash) {
        i != args.arr.end(); )
   {
     std::string myarg;
-    if (ceph_argparse_witharg(args.arr, i, &myarg, "--foo", (char*)NULL)) {
+    if (ceph_argparse_double_dash(args.arr, i)) {
+      break;
+    }
+    else if (ceph_argparse_witharg(args.arr, i, &myarg, "--foo", (char*)NULL)) {
       foo = atoi(myarg.c_str());
     }
     else if (ceph_argparse_witharg(args.arr, i, &myarg, "--bar", (char*)NULL)) {
index 288c643dbbaf0a371a976986207077095ee39f95..0eae90af3e0aa268ec18d44da985a7b2d8ba622d 100644 (file)
@@ -135,7 +135,6 @@ TEST(DaemonConfig, InjectArgsBooleans) {
   int ret;
   char buf[128];
   char *tmp = buf;
-  char buf2[128];
 
   // Change log_to_syslog
   std::ostringstream chat;
index 0023f32f5e1ccedc76ae72a66ea055eea3307c1a..2f83a28d18a76c6908cf62ded270cd08965827ed 100644 (file)
@@ -51,8 +51,9 @@ int main(int argc, const char **argv)
   string oid("test_object");
   string pool_name("test_pool");
   for (std::vector<const char*>::iterator i = args.begin(); i != args.end(); ) {
-    if (strcmp(*i, "--") == 0)
+    if (ceph_argparse_double_dash(args, i)) {
       break;
+    }
     else if (ceph_argparse_witharg(args, i, &val, "--oid", "-o", (char*)NULL)) {
       oid = val;
     }