diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2009-04-23 10:14:11 +0300 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2009-04-23 10:14:11 +0300 |
commit | 0d24087bca70de572cda0e35b91678816c5d9b40 (patch) | |
tree | 50ec2497666ec37cd454c09dae2aff292f61c42b /src/readconfig.c | |
parent | fb5b0949c246d03a50a68b77a41f8858bdb28371 (diff) | |
download | tagr-0d24087bca70de572cda0e35b91678816c5d9b40.tar.gz tagr-0d24087bca70de572cda0e35b91678816c5d9b40.tar.bz2 |
Bugfixes
* src/main.c (read_input): Open and close the database. Fix scanf spec.
Set log_to_stderr before opening the socket.
* src/readconfig.c: Use callback for reading color specs.
* src/tagr.h (use_stderr): Remove extern.
Diffstat (limited to 'src/readconfig.c')
-rw-r--r-- | src/readconfig.c | 56 |
1 files changed, 46 insertions, 10 deletions
diff --git a/src/readconfig.c b/src/readconfig.c index e38c295..4f35be5 100644 --- a/src/readconfig.c +++ b/src/readconfig.c @@ -187,6 +187,42 @@ cb_number_suffixes (enum grecs_callback_command cmd, } +static int +cb_color (enum grecs_callback_command cmd, + grecs_locus_t *locus, + void *varptr, + grecs_value_t *value, + void *cb_data) +{ + unsigned n; + char *p; + int *array = varptr; + + if (cmd != grecs_callback_set_value) + { + grecs_error (locus, 0, _("unexpected block statement")); + return 1; + } + if (!value || value->type != GCONF_TYPE_STRING) + { + grecs_error (locus, 0, _("expected scalar value")); + return 1; + } + + /* FIXME: allow to use some predefined color names */ + n = strtoul (value->v.string, &p, 0); + if (*p) + { + grecs_error (locus, 0, _("invalid number")); + return 1; + } + array[0] = (n >> 16) & 0xff; + array[1] = (n >> 8) & 0xff; + array[2] = n & 0xff; + return 0; +} + + static struct grecs_keyword tagr_kw[] = { { "basedir", NULL, N_("Set base directory name"), @@ -217,25 +253,25 @@ static struct grecs_keyword tagr_kw[] = { grecs_type_bool, &fill_incoming_option }, { "color-background", NULL, N_("Set background color"), - grecs_type_int, &color_background }, + grecs_type_int, color_background, 0, cb_color }, { "color-light", NULL, NULL /* FIXME: descr */, - grecs_type_int, &color_light }, + grecs_type_int, color_light, 0, cb_color }, { "color-dark", NULL, NULL /* FIXME: descr */, - grecs_type_int, &color_dark }, + grecs_type_int, color_dark, 0, cb_color }, { "color-major", NULL, NULL /* FIXME: descr */, - grecs_type_int, &color_major }, + grecs_type_int, color_major, 0, cb_color }, { "color-in", NULL, NULL /* FIXME: descr */, - grecs_type_int, &color_in }, + grecs_type_int, color_in, 0, cb_color }, { "color-out", NULL, NULL /* FIXME: descr */, - grecs_type_int, &color_out }, + grecs_type_int, color_out, 0, cb_color }, { "color-grid", NULL, NULL /* FIXME: descr */, - grecs_type_int, &color_grid }, + grecs_type_int, color_grid, 0, cb_color }, { "color-in-max", NULL, NULL /* FIXME: descr */, - grecs_type_int, &color_in_max }, + grecs_type_int, color_in_max, 0, cb_color }, { "color-out-max", NULL, NULL /* FIXME: descr */, - grecs_type_int, &color_out_max }, + grecs_type_int, color_out_max, 0, cb_color }, { "color-percent", NULL, NULL /* FIXME: descr */, - grecs_type_int, &color_percent }, + grecs_type_int, color_percent, 0, cb_color }, /* FIXME */ { NULL } |