@@@ version hash
[runlisp] / lib.c
diff --git a/lib.c b/lib.c
index 36751ab..4f93285 100644 (file)
--- a/lib.c
+++ b/lib.c
@@ -1061,27 +1061,30 @@ struct config_var *config_find_var_n(struct config *conf,
 /* 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);
@@ -1089,6 +1092,7 @@ void config_set_var_n(struct config *conf, struct config_section *sect,
   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. */