From: Kefu Chai Date: Thu, 10 Jun 2021 08:49:27 +0000 (+0800) Subject: tools/ceph_monstore_tool: use make_scope_guard() for cleanup X-Git-Tag: v17.1.0~1639^2~3 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=99af14fab0caf32b99e540d45ecaf7662ca28245;p=ceph.git tools/ceph_monstore_tool: use make_scope_guard() for cleanup for better readability Signed-off-by: Kefu Chai --- diff --git a/src/tools/ceph_monstore_tool.cc b/src/tools/ceph_monstore_tool.cc index b4cff055320..a1384708904 100644 --- a/src/tools/ceph_monstore_tool.cc +++ b/src/tools/ceph_monstore_tool.cc @@ -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; }