summaryrefslogtreecommitdiff
path: root/src/setup.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/setup.c')
-rw-r--r--src/setup.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/setup.c b/src/setup.c
index d3c3e6d..dfeb4df 100644
--- a/src/setup.c
+++ b/src/setup.c
@@ -30,6 +30,22 @@ int setup_interactively(til_settings_t *settings, int (*setup_func)(const til_se
* validate its value against the description and assign the description if it passes.
*/
if (setting && !setting->desc) {
+ /* Apply override before, or after the spec_check()? unclear.
+ * TODO This probably also needs to move into a til_settings helper
+ */
+ if (desc->spec.override) {
+ const char *o;
+
+ o = desc->spec.override(setting->value);
+ if (!o)
+ return -ENOMEM;
+
+ if (o != setting->value) {
+ free((void *)setting->value);
+ setting->value = o;
+ }
+ }
+
r = til_setting_spec_check(&desc->spec, setting->value);
if (r < 0) {
*res_failed_desc = desc;
© All Rights Reserved