summaryrefslogtreecommitdiffstats
path: root/options
diff options
context:
space:
mode:
Diffstat (limited to 'options')
-rw-r--r--options/m_option.c6
-rw-r--r--options/m_option.h3
2 files changed, 8 insertions, 1 deletions
diff --git a/options/m_option.c b/options/m_option.c
index 892016c935..d0f5e7a418 100644
--- a/options/m_option.c
+++ b/options/m_option.c
@@ -3021,7 +3021,11 @@ static int parse_obj_settings(struct mp_log *log, struct bstr opt, int op,
mp_warn(log, "Driver '%s' has been replaced with '%s'!\n",
desc.replaced_name, desc.name);
} else {
- if (!list->allow_unknown_entries) {
+ char name[80];
+ snprintf(name, sizeof(name), "%.*s", BSTR_P(str));
+ if (!list->allow_unknown_entries ||
+ (list->check_unknown_entry && !list->check_unknown_entry(name)))
+ {
mp_err(log, "Option %.*s: %.*s doesn't exist.\n",
BSTR_P(opt), BSTR_P(str));
return M_OPT_INVALID;
diff --git a/options/m_option.h b/options/m_option.h
index 4289fa5a2e..a5f9618462 100644
--- a/options/m_option.h
+++ b/options/m_option.h
@@ -149,6 +149,9 @@ struct m_obj_list {
// Allow unknown entries, for which a dummy entry is inserted, and whose
// options are skipped and ignored.
bool allow_unknown_entries;
+ // Callback to test whether an unknown entry should be allowed. (This can
+ // be useful if adding them as explicit entries is too much work.)
+ bool (*check_unknown_entry)(const char *name);
// Allow syntax for disabling entries.
bool allow_disable_entries;
// This helps with confusing error messages if unknown flag options are used.