Skip to content

Commit 0770d91

Browse files
author
aothms
committed
IfcConvert: Handle invalid command line options gracefully and notify user
1 parent f353127 commit 0770d91

1 file changed

Lines changed: 8 additions & 4 deletions

File tree

src/ifcconvert/IfcConvert.cpp

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -122,8 +122,13 @@ int main(int argc, char** argv) {
122122
positional_options.add("output-file", 1);
123123

124124
boost::program_options::variables_map vmap;
125-
boost::program_options::store(boost::program_options::command_line_parser(argc, argv).
126-
options(cmdline_options).positional(positional_options).run(), vmap);
125+
try {
126+
boost::program_options::store(boost::program_options::command_line_parser(argc, argv).
127+
options(cmdline_options).positional(positional_options).run(), vmap);
128+
} catch (const boost::program_options::unknown_option& e) {
129+
std::cerr << "[Error] Unknown option '" << e.get_option_name() << "'" << std::endl << std::endl;
130+
// Usage information will be emitted below
131+
}
127132
boost::program_options::notify(vmap);
128133

129134
if (vmap.count("version")) {
@@ -184,6 +189,7 @@ int main(int argc, char** argv) {
184189
}
185190

186191
Logger::SetOutput(&std::cout, &log_stream);
192+
Logger::Verbosity(verbose ? Logger::LOG_NOTICE : Logger::LOG_ERROR);
187193

188194
GeometrySerializer* serializer;
189195
if (output_extension == ".obj") {
@@ -211,8 +217,6 @@ int main(int argc, char** argv) {
211217
return 1;
212218
}
213219

214-
Logger::Verbosity(verbose ? Logger::LOG_NOTICE : Logger::LOG_ERROR);
215-
216220
if (!serializer->ready()) {
217221
Logger::Message(Logger::LOG_ERROR, "Unable to open output file for writing");
218222
write_log();

0 commit comments

Comments
 (0)