From: Stephan Bosch Date: Wed, 22 Apr 2020 20:32:55 +0000 (+0200) Subject: lib-smtp: smtp-params - Remove code duplication between smtp_params_*_drop_extra(). X-Git-Tag: 2.3.13~554 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c86fd10a1883161ba9e16ea60f0209088057ced7;p=thirdparty%2Fdovecot%2Fcore.git lib-smtp: smtp-params - Remove code duplication between smtp_params_*_drop_extra(). --- diff --git a/src/lib-smtp/smtp-params.c b/src/lib-smtp/smtp-params.c index 9b39ae9699..b84c02ad66 100644 --- a/src/lib-smtp/smtp-params.c +++ b/src/lib-smtp/smtp-params.c @@ -106,6 +106,26 @@ void smtp_params_add_one(ARRAY_TYPE(smtp_param) *params, pool_t pool, array_push_back(params, ¶m); } +bool smtp_params_drop_one(ARRAY_TYPE(smtp_param) *params, const char *keyword, + const char **value_r) +{ + const struct smtp_param *param; + + if (!array_is_created(params)) + return FALSE; + + array_foreach(params, param) { + if (strcasecmp(param->keyword, keyword) == 0) { + if (value_r != NULL) + *value_r = param->value; + array_delete(params, + array_foreach_idx(params, param), 1); + return TRUE; + } + } + return FALSE; +} + /* write */ static bool smtp_param_value_valid(const char *value) @@ -506,22 +526,7 @@ void smtp_params_mail_add_extra(struct smtp_params_mail *params, pool_t pool, bool smtp_params_mail_drop_extra(struct smtp_params_mail *params, const char *keyword, const char **value_r) { - const struct smtp_param *param; - - if (!array_is_created(¶ms->extra_params)) - return FALSE; - - array_foreach(¶ms->extra_params, param) { - if (strcasecmp(param->keyword, keyword) == 0) { - if (value_r != NULL) - *value_r = param->value; - array_delete(¶ms->extra_params, - array_foreach_idx(¶ms->extra_params, - param), 1); - return TRUE; - } - } - return FALSE; + return smtp_params_drop_one(¶ms->extra_params, keyword, value_r); } /* write */ @@ -1089,22 +1094,7 @@ void smtp_params_rcpt_add_extra(struct smtp_params_rcpt *params, pool_t pool, bool smtp_params_rcpt_drop_extra(struct smtp_params_rcpt *params, const char *keyword, const char **value_r) { - const struct smtp_param *param; - - if (!array_is_created(¶ms->extra_params)) - return FALSE; - - array_foreach(¶ms->extra_params, param) { - if (strcasecmp(param->keyword, keyword) == 0) { - if (value_r != NULL) - *value_r = param->value; - array_delete(¶ms->extra_params, - array_foreach_idx(¶ms->extra_params, - param), 1); - return TRUE; - } - } - return FALSE; + return smtp_params_drop_one(¶ms->extra_params, keyword, value_r); } void smtp_params_rcpt_set_orcpt(struct smtp_params_rcpt *params, pool_t pool, diff --git a/src/lib-smtp/smtp-params.h b/src/lib-smtp/smtp-params.h index 1052f39d85..f8d81fe464 100644 --- a/src/lib-smtp/smtp-params.h +++ b/src/lib-smtp/smtp-params.h @@ -87,6 +87,8 @@ int smtp_param_parse(pool_t pool, const char *text, void smtp_params_add_one(ARRAY_TYPE(smtp_param) *params, pool_t pool, const char *keyword, const char *value); +bool smtp_params_drop_one(ARRAY_TYPE(smtp_param) *params, const char *keyword, + const char **value_r); /* write */