From 4bbe9618851270eaf5a169b67bff139a65ffbbe4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kacper=20Michaj=C5=82ow?= Date: Fri, 1 Sep 2023 03:07:28 +0200 Subject: m_property: add read_sub_validate to check if should be processed In many cases it makes sense to early exit instead of preparing all the data only to return type or not implemented. --- options/m_property.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'options/m_property.c') diff --git a/options/m_property.c b/options/m_property.c index fa91fd1162..7667dd6161 100644 --- a/options/m_property.c +++ b/options/m_property.c @@ -432,6 +432,23 @@ int m_property_strdup_ro(int action, void* arg, const char *var) return M_PROPERTY_NOT_IMPLEMENTED; } +int m_property_read_sub_validate(void *ctx, struct m_property *prop, + int action, void *arg) +{ + m_property_unkey(&action, &arg); + switch (action) { + case M_PROPERTY_GET_TYPE: + *(struct m_option *)arg = (struct m_option){.type = CONF_TYPE_NODE}; + return M_PROPERTY_OK; + case M_PROPERTY_GET: + case M_PROPERTY_PRINT: + case M_PROPERTY_KEY_ACTION: + return M_PROPERTY_VALID; + default: + return M_PROPERTY_NOT_IMPLEMENTED; + }; +} + // This allows you to make a list of values (like from a struct) available // as a number of sub-properties. The property list is set up with the current // property values on the stack before calling this function. -- cgit v1.2.3