From a144f37803d6e86aedd634e971d8a76b0d8ac5fa Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Sun, 27 Nov 2005 21:47:30 +0000 Subject: [PATCH] Added --help option and arranged to print usage information when this is used and in (almost) all cases of bad usage. --- webdvd.cpp | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/webdvd.cpp b/webdvd.cpp index a6064b2..94ab121 100644 --- a/webdvd.cpp +++ b/webdvd.cpp @@ -867,23 +867,40 @@ namespace std::string("Invalid video standard: ").append(str)); } + void print_usage(std::ostream & stream, const char * command_name) + { + stream << "Usage: " << command_name + << (" [gtk-options] [--video-std std-name]" + " front-page-url output-dir\n"); + } + } // namespace int main(int argc, char ** argv) { try { - // Determine video frame parameters. + // Do initial argument parsing. We have to do this before + // letting Gtk parse the arguments since we need to spawn Xvfb + // first and that's currently dependent on the frame + // parameters (though we could just make it large enough for + // any frame) and also an unnecessary expense in some cases. video::frame_params frame_params = video::pal_params; for (int argi = 1; argi != argc; ++argi) { if (std::strcmp(argv[argi], "--") == 0) break; + if (std::strcmp(argv[argi], "--help") == 0) + { + print_usage(std::cout, argv[0]); + return EXIT_SUCCESS; + } if (std::strcmp(argv[argi], "--video-std") == 0) { if (argi + 1 == argc) { std::cerr << "Missing argument to --video-std\n"; + print_usage(std::cerr, argv[0]); return EXIT_FAILURE; } frame_params = lookup_frame_params(argv[argi + 1]); @@ -901,9 +918,7 @@ int main(int argc, char ** argv) // Initialise Gtk Gtk::Main kit(argc, argv); - // Check we have the right number of arguments. We can't - // do this earlier because we need to let Gtk read and remove - // any of the many options it understands. + // Complete argument parsing with Gtk's options out of the way. int argi = 1; while (argi != argc) { @@ -919,6 +934,7 @@ int main(int argc, char ** argv) else if (argv[argi][0] == '-') { std::cerr << "Invalid option: " << argv[argi] << "\n"; + print_usage(std::cerr, argv[0]); return EXIT_FAILURE; } else @@ -926,9 +942,7 @@ int main(int argc, char ** argv) } if (argi != argc - 2) { - std::cerr << "Usage: " << argv[0] - << (" [gtk-options] [--video-std std-name]" - "front-page-url output-dir\n"); + print_usage(std::cerr, argv[0]); return EXIT_FAILURE; } -- 2.39.5