conf: move duplicate check to _read_name_value()

config_add_block_param() cannot fail, which makes it easier to use.
This commit is contained in:
Max Kellermann 2011-09-09 21:16:46 +02:00
parent e3eca82cc3
commit bc0fec0afe
3 changed files with 16 additions and 17 deletions

View File

@ -223,20 +223,13 @@ void config_global_check(void)
} }
} }
bool void
config_add_block_param(struct config_param * param, const char *name, config_add_block_param(struct config_param * param, const char *name,
const char *value, int line, GError **error_r) const char *value, int line)
{ {
struct block_param *bp; struct block_param *bp;
bp = config_get_block_param(param, name); assert(config_get_block_param(param, name) == NULL);
if (bp != NULL) {
g_set_error(error_r, config_quark(), 0,
"\"%s\" first defined on line %i, and "
"redefined on line %i\n", name,
bp->line, line);
return false;
}
param->num_block_params++; param->num_block_params++;
@ -250,8 +243,6 @@ config_add_block_param(struct config_param * param, const char *name,
bp->value = g_strdup(value); bp->value = g_strdup(value);
bp->line = line; bp->line = line;
bp->used = false; bp->used = false;
return true;
} }
static bool static bool
@ -283,8 +274,16 @@ config_read_name_value(struct config_param *param, char *input, unsigned line,
return false; return false;
} }
return config_add_block_param(param, name, value, line, const struct block_param *bp = config_get_block_param(param, name);
error_r); if (bp != NULL) {
g_set_error(error_r, config_quark(), 0,
"\"%s\" is duplicate, first defined on line %i",
name, bp->line);
return false;
}
config_add_block_param(param, name, value, line);
return true;
} }
static struct config_param * static struct config_param *

View File

@ -210,8 +210,8 @@ G_GNUC_MALLOC
struct config_param * struct config_param *
config_new_param(const char *value, int line); config_new_param(const char *value, int line);
bool void
config_add_block_param(struct config_param * param, const char *name, config_add_block_param(struct config_param * param, const char *name,
const char *value, int line, GError **error_r); const char *value, int line);
#endif #endif

View File

@ -75,7 +75,7 @@ int main(int argc, char **argv)
} }
param = config_new_param(NULL, -1); param = config_new_param(NULL, -1);
config_add_block_param(param, "quality", "5.0", -1, NULL); config_add_block_param(param, "quality", "5.0", -1);
encoder = encoder_init(plugin, param, &error); encoder = encoder_init(plugin, param, &error);
if (encoder == NULL) { if (encoder == NULL) {