From 2c610490fbeb67974c34c84c3d355dab95cf61a6 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Sun, 20 Apr 2014 23:16:16 -0400 Subject: also allow command line arguments --- src/config.c | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/src/config.c b/src/config.c index a7f9163..1b63923 100644 --- a/src/config.c +++ b/src/config.c @@ -7,6 +7,7 @@ static void runes_config_set_defaults(RunesTerm *t); static FILE *runes_config_get_config_file(); static void runes_config_process_config_file(RunesTerm *t, FILE *config_file); +static void runes_config_process_args(RunesTerm *t, int argc, char *argv[]); static void runes_config_set(RunesTerm *t, char *key, char *value); static char runes_config_parse_bool(char *val); static int runes_config_parse_uint(char *val); @@ -15,13 +16,11 @@ static cairo_pattern_t *runes_config_parse_color(char *val); void runes_config_init(RunesTerm *t, int argc, char *argv[]) { - UNUSED(argc); - UNUSED(argv); - memset((void *)t, 0, sizeof(*t)); runes_config_set_defaults(t); runes_config_process_config_file(t, runes_config_get_config_file()); + runes_config_process_args(t, argc, argv); } static void runes_config_set_defaults(RunesTerm *t) @@ -144,6 +143,27 @@ static void runes_config_process_config_file(RunesTerm *t, FILE *config_file) } } +static void runes_config_process_args(RunesTerm *t, int argc, char *argv[]) +{ + int i; + + for (i = 1; i < argc; ++i) { + if (!strncmp(argv[i], "--", 2)) { + if (i + 1 < argc) { + runes_config_set(t, &argv[i][2], argv[i + 1]); + i++; + } + else { + fprintf( + stderr, "option found with no argument: '%s'\n", argv[i]); + } + } + else { + fprintf(stderr, "unknown argument: '%s'\n", argv[i]); + } + } +} + static void runes_config_set(RunesTerm *t, char *key, char *val) { if (!strcmp(key, "font")) { -- cgit v1.2.3-54-g00ecf