aboutsummaryrefslogtreecommitdiff
path: root/src/readconfig.c
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2009-04-23 10:14:11 +0300
committerSergey Poznyakoff <gray@gnu.org.ua>2009-04-23 10:14:11 +0300
commit0d24087bca70de572cda0e35b91678816c5d9b40 (patch)
tree50ec2497666ec37cd454c09dae2aff292f61c42b /src/readconfig.c
parentfb5b0949c246d03a50a68b77a41f8858bdb28371 (diff)
downloadtagr-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.c56
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 }

Return to:

Send suggestions and report system problems to the System administrator.