Skip to content

Commit 686e31b

Browse files
use return istead of exit --> destructors are called
1 parent 5314e40 commit 686e31b

File tree

1 file changed

+15
-15
lines changed

1 file changed

+15
-15
lines changed

src/main.cpp

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ int main(int argc, char **argv) {
4545

4646
auto exit_usage = [&exe_name]() {
4747
std::cerr << "Use '" << exe_name << " --help' for more information." << std::endl;
48-
exit(EX_USAGE);
48+
return EX_USAGE;
4949
};
5050

5151
auto euid = geteuid();
@@ -54,12 +54,12 @@ int main(int argc, char **argv) {
5454
// establish signal handler
5555
if (signal(SIGINT, sig_term_handler) || signal(SIGTERM, sig_term_handler)) {
5656
perror("Failed to establish signal handler");
57-
exit(EX_OSERR);
57+
return EX_OSERR;
5858
}
5959

6060
if (signal(SIGALRM, [](int) { exit(EX_OK); })) {
6161
perror("Failed to establish signal handler");
62-
exit(EX_OSERR);
62+
return EX_OSERR;
6363
}
6464

6565
// all command line arguments
@@ -126,7 +126,7 @@ int main(int argc, char **argv) {
126126
args = options.parse(argc, argv);
127127
} catch (cxxopts::OptionParseException &e) {
128128
std::cerr << "Failed to parse arguments: " << e.what() << '.' << std::endl;
129-
exit_usage();
129+
return exit_usage();
130130
}
131131

132132
// print usage
@@ -145,7 +145,7 @@ int main(int argc, char **argv) {
145145
std::cout << "This application uses the following libraries:" << std::endl;
146146
std::cout << " - cxxopts by jarro2783 (https://github.com/jarro2783/cxxopts)" << std::endl;
147147
std::cout << " - libmodbus by Stéphane Raimbault (https://github.com/stephane/libmodbus)" << std::endl;
148-
exit(EX_OK);
148+
return EX_OK;
149149
}
150150

151151
// print usage
@@ -155,34 +155,34 @@ int main(int argc, char **argv) {
155155
<< "-nonlinux"
156156
#endif
157157
<< std::endl;
158-
exit(EX_OK);
158+
return EX_OK;
159159
}
160160

161161
// print licenses
162162
if (args.count("license")) {
163163
print_licenses(std::cout);
164-
exit(EX_OK);
164+
return EX_OK;
165165
}
166166

167167
// check arguments
168168
if (args["do-registers"].as<std::size_t>() > MODBUS_MAX_REGS) {
169169
std::cerr << "to many do-registers (maximum: " << MODBUS_MAX_REGS << ")." << std::endl;
170-
exit_usage();
170+
return exit_usage();
171171
}
172172

173173
if (args["di-registers"].as<std::size_t>() > MODBUS_MAX_REGS) {
174174
std::cerr << "to many di-registers (maximum: " << MODBUS_MAX_REGS << ")." << std::endl;
175-
exit_usage();
175+
return exit_usage();
176176
}
177177

178178
if (args["ao-registers"].as<std::size_t>() > MODBUS_MAX_REGS) {
179179
std::cerr << "to many ao-registers (maximum: " << MODBUS_MAX_REGS << ")." << std::endl;
180-
exit_usage();
180+
return exit_usage();
181181
}
182182

183183
if (args["ai-registers"].as<std::size_t>() > MODBUS_MAX_REGS) {
184184
std::cerr << "to many ai-registers (maximum: " << MODBUS_MAX_REGS << ")." << std::endl;
185-
exit_usage();
185+
return exit_usage();
186186
}
187187

188188
// create shared memory object for modbus registers
@@ -196,7 +196,7 @@ int main(int argc, char **argv) {
196196
args.count("force") > 0);
197197
} catch (const std::system_error &e) {
198198
std::cerr << e.what() << std::endl;
199-
exit(EX_OSERR);
199+
return EX_OSERR;
200200
}
201201

202202
// create slave
@@ -213,7 +213,7 @@ int main(int argc, char **argv) {
213213
slave->set_debug(args.count("monitor"));
214214
} catch (const std::runtime_error &e) {
215215
std::cerr << e.what() << std::endl;
216-
exit(EX_SOFTWARE);
216+
return EX_SOFTWARE;
217217
}
218218
socket = slave->get_socket();
219219

@@ -224,7 +224,7 @@ int main(int argc, char **argv) {
224224
if (args.count("byte-timeout")) { slave->set_byte_timeout(args["byte-timeout"].as<double>()); }
225225
} catch (const std::runtime_error &e) {
226226
std::cerr << e.what() << std::endl;
227-
exit(EX_SOFTWARE);
227+
return EX_SOFTWARE;
228228
}
229229

230230
// connection loop
@@ -237,7 +237,7 @@ int main(int argc, char **argv) {
237237
} catch (const std::runtime_error &e) {
238238
if (!terminate) {
239239
std::cerr << e.what() << std::endl;
240-
exit(EX_SOFTWARE);
240+
return EX_SOFTWARE;
241241
}
242242
break;
243243
}

0 commit comments

Comments
 (0)