From 610a5a9f0de5308e617e96910abf0aa3e453a83c Mon Sep 17 00:00:00 2001 From: Marko Kreen Date: Tue, 30 Nov 2010 14:55:17 +0200 Subject: [PATCH] cfparser: silently ignore CF_NO_RELOAD or CF_READONLY updates. --- usual/cfparser.c | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/usual/cfparser.c b/usual/cfparser.c index 9c25a93..9a856a2 100644 --- a/usual/cfparser.c +++ b/usual/cfparser.c @@ -229,8 +229,10 @@ bool cf_set(const struct CfContext *cf, const char *sect, const char *key, const /* find section */ s = find_sect(cf, sect); - if (!s) + if (!s) { + log_error("Unknown section: %s", sect); return false; + } /* find section base */ base = cf->base; @@ -243,15 +245,23 @@ bool cf_set(const struct CfContext *cf, const char *sect, const char *key, const /* set fixed key */ k = find_key(s, key); - if (!k || !k->op.setter) - return false; - if (k->flags & CF_READONLY) - return false; - if ((k->flags & CF_NO_RELOAD) && cf->loaded) + if (!k) { + log_error("Unknown parameter: %s/%s", sect, key); return false; + } + if (!k->op.setter || (k->flags & CF_READONLY)) { + /* silently ignore */ + return true; + } + if ((k->flags & CF_NO_RELOAD) && cf->loaded) { + /* silently ignore */ + return true; + } p = get_dest(base, k); - if (!p) + if (!p) { + log_error("Bug - no base for relative key: %s/%s", sect, key); return false; + } cv.key_name = k->key_name; cv.extra = k->op.op_extra; cv.value_p = p; -- 2.39.5