diff --git a/backends/swiften/main.cpp b/backends/swiften/main.cpp index a9e3bf362972600fe143fcaaa024cc8f17b88028..65b3fe4f03c4556852c209b170bca8c54b33790f 100644 --- a/backends/swiften/main.cpp +++ b/backends/swiften/main.cpp @@ -264,35 +264,48 @@ int main (int argc, char* argv[]) { } #endif - boost::program_options::options_description desc("Usage: spectrum [OPTIONS] \nAllowed options"); + std::string configFile; + boost::program_options::variables_map vm; + boost::program_options::options_description desc("Usage: spectrum \nAllowed options"); desc.add_options() - ("host,h", value(&host), "host") - ("port,p", value(&port), "port") + ("help", "help") + ("host,h", boost::program_options::value(&host)->default_value(""), "Host to connect to") + ("port,p", boost::program_options::value(&port)->default_value(10000), "Port to connect to") + ("config", boost::program_options::value(&configFile)->default_value(""), "Config file") ; + try { - boost::program_options::variables_map vm; - boost::program_options::store(boost::program_options::parse_command_line(argc, argv, desc), vm); + boost::program_options::positional_options_description p; + p.add("config", -1); + boost::program_options::store(boost::program_options::command_line_parser(argc, argv). + options(desc).positional(p).allow_unregistered().run(), vm); boost::program_options::notify(vm); + + if(vm.count("help")) + { + std::cout << desc << "\n"; + return 1; + } + + if(vm.count("config") == 0) { + std::cout << desc << "\n"; + return 1; + } } catch (std::runtime_error& e) { std::cout << desc << "\n"; - exit(1); + return 1; } catch (...) { std::cout << desc << "\n"; - exit(1); - } - - - if (argc < 5) { return 1; } - Config config; - if (!config.load(argv[5])) { + Config config(argc, argv); + if (!config.load(configFile)) { std::cerr << "Can't open " << argv[1] << " configuration file.\n"; return 1; }