X-Git-Url: http://git.maemo.org/git/?p=browser-switch;a=blobdiff_plain;f=config-ui%2Fbrowser-switchboard-config.c;h=ec1e50984974452bac72f14fcbe3567c1abc1390;hp=c14b80fdd9b5a05e6327b94f07338716100a08b8;hb=667d7d137083b1d65c167ee4b29f88361802247c;hpb=6ac42ed781a7735221de8aaa28a6647b32608049 diff --git a/config-ui/browser-switchboard-config.c b/config-ui/browser-switchboard-config.c index c14b80f..ec1e509 100644 --- a/config-ui/browser-switchboard-config.c +++ b/config-ui/browser-switchboard-config.c @@ -22,6 +22,7 @@ #include +#include #include #include #include @@ -32,8 +33,8 @@ extern struct swb_config_option swb_config_options[]; static int get_config_value(char *name) { struct swb_config cfg; - int i; - struct swb_config_option optinfo; + struct swb_config_option *optinfo; + ptrdiff_t i; int retval = 1; swb_config_init(&cfg); @@ -41,14 +42,15 @@ static int get_config_value(char *name) { if (!swb_config_load(&cfg)) return 1; - for (i = 0; swb_config_options[i].name; ++i) { - optinfo = swb_config_options[i]; - if (strcmp(name, optinfo.name)) + for (optinfo = swb_config_options; optinfo->name; ++optinfo) { + if (strcmp(name, optinfo->name)) continue; - switch (optinfo.type) { + i = optinfo - swb_config_options; + switch (optinfo->type) { case SWB_CONFIG_OPT_STRING: - printf("%s\n", *(char **)cfg.entries[i]); + if (*(char **)cfg.entries[i]) + printf("%s\n", *(char **)cfg.entries[i]); break; case SWB_CONFIG_OPT_INT: printf("%d\n", *(int *)cfg.entries[i]); @@ -67,8 +69,8 @@ static int get_config_value(char *name) { static int set_config_value(char *name, char *value) { struct swb_config cfg; - int i; - struct swb_config_option optinfo; + struct swb_config_option *optinfo; + ptrdiff_t i; int retval = 1; swb_config_init(&cfg); @@ -76,39 +78,39 @@ static int set_config_value(char *name, char *value) { if (!swb_config_load(&cfg)) return 1; - for (i = 0; swb_config_options[i].name; ++i) { - optinfo = swb_config_options[i]; - if (strcmp(name, optinfo.name)) + for (optinfo = swb_config_options; optinfo->name; ++optinfo) { + if (strcmp(name, optinfo->name)) continue; - switch (optinfo.type) { + i = optinfo - swb_config_options; + switch (optinfo->type) { case SWB_CONFIG_OPT_STRING: /* Free any existing string */ - if (cfg.flags & optinfo.set_mask) + if (cfg.flags & optinfo->set_mask) free(*(char **)cfg.entries[i]); if (strlen(value) == 0) { /* If the new value is empty, clear the config setting */ *(char **)cfg.entries[i] = NULL; - cfg.flags &= ~optinfo.set_mask; + cfg.flags &= ~optinfo->set_mask; } else { /* Make a copy of the string -- it's not safe to free value, which comes from argv */ if (!(*(char **)cfg.entries[i] = strdup(value))) exit(1); - cfg.flags |= optinfo.set_mask; + cfg.flags |= optinfo->set_mask; } break; case SWB_CONFIG_OPT_INT: if (strlen(value) == 0) { /* If the new value is empty, clear the config setting */ - cfg.flags &= ~optinfo.set_mask; + cfg.flags &= ~optinfo->set_mask; } else { *(int *)cfg.entries[i] = atoi(value); - cfg.flags |= optinfo.set_mask; + cfg.flags |= optinfo->set_mask; } break; }