From 10288765588673645c1cc0a6e3d2245aff3f9080 Mon Sep 17 00:00:00 2001 From: sanine Date: Tue, 1 Mar 2022 22:42:10 -0600 Subject: add basic window functions, option parsing, and main loop --- src/options/honey_options.c | 55 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 src/options/honey_options.c (limited to 'src/options/honey_options.c') diff --git a/src/options/honey_options.c b/src/options/honey_options.c new file mode 100644 index 0000000..cf93588 --- /dev/null +++ b/src/options/honey_options.c @@ -0,0 +1,55 @@ +#include +#include /* todo: create windows-compatible alternative */ + +#include "options/honey_options.h" + + +static void print_usage(const char *program_name) +{ + printf("Usage: %s [OPTIONS]\n" + " -v Increase output verbosity (-vvv displays every log message)\n" + " -q Decrease output verbosity (-qqq suppresses even fatal errors)\n" + " -h Print this help message and exit\n" + " -s SCRIPT Load SCRIPT as the entry point instead of 'main.lua'\n", + program_name); +} + + +int parse_options(struct honey_options *opts, int argc, char **argv) +{ + opts->main_script = "main.lua"; + opts->log_level = WARN; + opts->display_help = 0; + + int opt; + const char *flags = "hqvs:"; + while ((opt = getopt(argc, argv, flags)) != -1) { + switch (opt) { + case 'q': + opts->log_level -= 1; + break; + + case 'v': + opts->log_level += 1; + break; + + case 'h': + print_usage(argv[0]); + opts->display_help = 1; + return 1; + + case 's': + opts->main_script = optarg; + break; + + default: + print_usage(argv[0]); + return 0; + } + } + + honey_log_set_level(opts->log_level); + honey_log_set_file(stderr); + + return 1; +} -- cgit v1.2.1