/* Set variable NAME to VALUE in SECT, with associated flags F.
*
* The names are null-terminated. The flags are variable flags: see `struct
- * config_var' for details.
+ * config_var' for details. Returns the variable.
*
* If the variable is already set and has the `CF_OVERRIDE' flag, then this
* function does nothing unless `CF_OVERRIDE' is /also/ set in F.
*/
-void config_set_var(struct config *conf, struct config_section *sect,
- unsigned f, const char *name, const char *value)
+struct config_var *config_set_var(struct config *conf,
+ struct config_section *sect,
+ unsigned f,
+ const char *name, const char *value)
{
- config_set_var_n(conf, sect, f,
- name, strlen(name),
- value, strlen(value));
+ return (config_set_var_n(conf, sect, f,
+ name, strlen(name),
+ value, strlen(value)));
}
/* As `config_set_var', except that the variable NAME and VALUE have explicit
* lengths (NAMELEN and VALUELEN, respectively) rather than being null-
* terminated.
*/
-void config_set_var_n(struct config *conf, struct config_section *sect,
- unsigned f,
- const char *name, size_t namelen,
- const char *value, size_t valuelen)
+struct config_var *config_set_var_n(struct config *conf,
+ struct config_section *sect,
+ unsigned f,
+ const char *name, size_t namelen,
+ const char *value, size_t valuelen)
{
struct config_var *var =
config_find_var_n(conf, sect, CF_CREAT, name, namelen);
if (var->f&~f&CF_OVERRIDE) return;
free(var->val); var->val = xstrndup(value, valuelen); var->n = valuelen;
var->f = f;
+ return (var);
}
/* Initialize I to iterate over the variables directly defined in SECT. */