diff options
author | Volker Lendecke <vl@samba.org> | 2022-11-17 10:40:36 +0100 |
---|---|---|
committer | Ralph Boehme <slow@samba.org> | 2023-03-29 17:55:50 +0000 |
commit | 443572ce4204c338a0e92417a9d0539a9ec2ddfa (patch) | |
tree | 8106d6d92310f294f9f375e978646d9ea43717be | |
parent | ffdfb78da7f5cdabeb06036d0851c83f920e99ea (diff) | |
download | samba-443572ce4204c338a0e92417a9d0539a9ec2ddfa.tar.gz |
winbind: Factor out idmap_config_name()
3 times is enough, next patch will add a 4th one.
Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
-rw-r--r-- | source3/winbindd/idmap.c | 49 |
1 files changed, 19 insertions, 30 deletions
diff --git a/source3/winbindd/idmap.c b/source3/winbindd/idmap.c index eee28992929..f3c6ca12e73 100644 --- a/source3/winbindd/idmap.c +++ b/source3/winbindd/idmap.c @@ -177,50 +177,39 @@ static bool idmap_init(void) return true; } +static int idmap_config_name(const char *domname, char *buf, size_t buflen) +{ + int len = snprintf(buf, buflen, "idmap config %s", domname); + SMB_ASSERT(len > 0); + return len + 1; +} + const char *idmap_config_const_string(const char *domname, const char *option, const char *def) { - int len = snprintf(NULL, 0, "idmap config %s", domname); + int len = idmap_config_name(domname, NULL, 0); + char config_option[len]; + idmap_config_name(domname, config_option, sizeof(config_option)); - if (len == -1) { - return NULL; - } - { - char config_option[len+1]; - snprintf(config_option, sizeof(config_option), - "idmap config %s", domname); - return lp_parm_const_string(-1, config_option, option, def); - } + return lp_parm_const_string(-1, config_option, option, def); } bool idmap_config_bool(const char *domname, const char *option, bool def) { - int len = snprintf(NULL, 0, "idmap config %s", domname); + int len = idmap_config_name(domname, NULL, 0); + char config_option[len]; + idmap_config_name(domname, config_option, sizeof(config_option)); - if (len == -1) { - return def; - } - { - char config_option[len+1]; - snprintf(config_option, sizeof(config_option), - "idmap config %s", domname); - return lp_parm_bool(-1, config_option, option, def); - } + return lp_parm_bool(-1, config_option, option, def); } int idmap_config_int(const char *domname, const char *option, int def) { - int len = snprintf(NULL, 0, "idmap config %s", domname); + int len = idmap_config_name(domname, NULL, 0); + char config_option[len]; + idmap_config_name(domname, config_option, sizeof(config_option)); - if (len == -1) { - return def; - } - { - char config_option[len+1]; - snprintf(config_option, sizeof(config_option), - "idmap config %s", domname); - return lp_parm_int(-1, config_option, option, def); - } + return lp_parm_int(-1, config_option, option, def); } bool domain_has_idmap_config(const char *domname) |