]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
tools/ceph_monstore_tool: use make_scope_guard() for cleanup
authorKefu Chai <kchai@redhat.com>
Thu, 10 Jun 2021 08:49:27 +0000 (16:49 +0800)
committerKefu Chai <kchai@redhat.com>
Thu, 10 Jun 2021 12:29:50 +0000 (20:29 +0800)
for better readability

Signed-off-by: Kefu Chai <kchai@redhat.com>
src/tools/ceph_monstore_tool.cc

index b4cff0553205dd717033c020c09e17d23ae8d779..a1384708904dac19acf988a1017eeaff60193bf2 100644 (file)
@@ -23,6 +23,7 @@
 #include "auth/KeyRing.h"
 #include "auth/cephx/CephxKeyServer.h"
 #include "global/global_init.h"
+#include "include/scope_guard.h"
 #include "include/stringify.h"
 #include "mgr/mgr_commands.h"
 #include "mon/AuthMonitor.h"
@@ -836,6 +837,10 @@ int main(int argc, char **argv) {
     }
   }
 
+  auto close_store = make_scope_guard([&] {
+    st.close();
+  });
+
   if (cmd == "dump-keys") {
     KeyValueDB::WholeSpaceIterator iter = st.get_iterator();
     while (iter->valid()) {
@@ -874,14 +879,12 @@ int main(int argc, char **argv) {
     int r = parse_cmd_args(&op_desc, &hidden_op_desc, &op_positional,
                            subcmds, &op_vm);
     if (r < 0) {
-      err = -r;
-      goto done;
+      return -r;
     }
 
     if (op_vm.count("help") || map_type.empty()) {
       usage(argv[0], op_desc);
-      err = 0;
-      goto done;
+      return 0;
     }
 
     if (v == 0) {
@@ -898,8 +901,7 @@ int main(int argc, char **argv) {
       if (fd < 0) {
         std::cerr << "error opening output file: "
           << cpp_strerror(errno) << std::endl;
-        err = EINVAL;
-        goto done;
+        return EINVAL;
       }
     }
 
@@ -927,8 +929,7 @@ int main(int argc, char **argv) {
     }
     if (r < 0) {
       std::cerr << "Error getting map: " << cpp_strerror(r) << std::endl;
-      err = EINVAL;
-      goto done;
+      return EINVAL;
     }
 
     if (op_vm.count("readable")) {
@@ -996,14 +997,12 @@ int main(int argc, char **argv) {
     int r = parse_cmd_args(&op_desc, NULL, &op_positional,
                            subcmds, &op_vm);
     if (r < 0) {
-      err = -r;
-      goto done;
+      return -r;
     }
 
     if (op_vm.count("help") || map_type.empty()) {
       usage(argv[0], op_desc);
-      err = 0;
-      goto done;
+      return  0;
     }
 
     unsigned int v_first = 0;
@@ -1029,22 +1028,19 @@ int main(int argc, char **argv) {
     int r = parse_cmd_args(&op_desc, NULL, NULL,
                            subcmds, &op_vm);
     if (r < 0) {
-      err = -r;
-      goto done;
+      return -r;
     }
 
     if (op_vm.count("help")) {
       usage(argv[0], op_desc);
-      err = 0;
-      goto done;
+      return 0;
     }
 
     if (dstart > dstop) {
       std::cerr << "error: 'start' version (value: " << dstart << ") "
                 << " is greater than 'end' version (value: " << dstop << ")"
                 << std::endl;
-      err = EINVAL;
-      goto done;
+      return EINVAL;
     }
 
     version_t v = dstart;
@@ -1092,28 +1088,24 @@ int main(int argc, char **argv) {
     int r = parse_cmd_args(&op_desc, &hidden_op_desc, &op_positional,
                            subcmds, &op_vm);
     if (r < 0) {
-      err = -r;
-      goto done;
+      return -r;
     }
 
     if (op_vm.count("help")) {
       usage(argv[0], op_desc);
-      err = 0;
-      goto done;
+      return 0;
     }
 
     if (outpath.empty()) {
       usage(argv[0], op_desc);
-      err = EINVAL;
-      goto done;
+      return EINVAL;
     }
 
     if (dstart > dstop) {
       std::cerr << "error: 'start' version (value: " << dstart << ") "
                 << " is greater than 'stop' version (value: " << dstop << ")"
                 << std::endl;
-      err = EINVAL;
-      goto done;
+      return EINVAL;
     }
 
     TraceIter iter(outpath.c_str());
@@ -1168,20 +1160,17 @@ int main(int argc, char **argv) {
       po::notify(op_vm);
     } catch (po::error &e) {
       std::cerr << "error: " << e.what() << std::endl;
-      err = EINVAL;
-      goto done;
+      return EINVAL;
     }
 
     if (op_vm.count("help")) {
       usage(argv[0], op_desc);
-      err = 0;
-      goto done;
+      return 0;
     }
 
     if (inpath.empty()) {
       usage(argv[0], op_desc);
-      err = EINVAL;
-      goto done;
+      return EINVAL;
     }
 
     unsigned num = 0;
@@ -1221,14 +1210,12 @@ int main(int argc, char **argv) {
       po::notify(op_vm);
     } catch (po::error &e) {
       std::cerr << "error: " << e.what() << std::endl;
-      err = EINVAL;
-      goto done;
+      return EINVAL;
     }
 
     if (op_vm.count("help")) {
       usage(argv[0], op_desc);
-      err = 0;
-      goto done;
+      return 0;
     }
 
     unsigned num = 0;
@@ -1251,8 +1238,7 @@ int main(int argc, char **argv) {
   } else if (cmd == "store-copy") {
     if (subcmds.size() < 1 || subcmds[0].empty()) {
       usage(argv[0], desc);
-      err = EINVAL;
-      goto done;
+      return EINVAL;
     }
 
     string out_path = subcmds[0];
@@ -1263,7 +1249,7 @@ int main(int argc, char **argv) {
       int r = out_store.create_and_open(ss);
       if (r < 0) {
         std::cerr << ss.str() << std::endl;
-        goto done;
+        return err;
       }
     }
 
@@ -1312,10 +1298,6 @@ int main(int argc, char **argv) {
   } else {
     std::cerr << "Unrecognized command: " << cmd << std::endl;
     usage(argv[0], desc);
-    goto done;
+    return err;
   }
-
-  done:
-  st.close();
-  return err;
 }