]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-smtp: smtp-params - Remove code duplication between smtp_params_*_copy().
authorStephan Bosch <stephan.bosch@open-xchange.com>
Wed, 22 Apr 2020 20:55:54 +0000 (22:55 +0200)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Wed, 27 May 2020 05:32:15 +0000 (05:32 +0000)
src/lib-smtp/smtp-params.c
src/lib-smtp/smtp-params.h

index b84c02ad66eb9e4d6766366c1663a39fc90de7d1..1942021f259ecbec7f3713c8c3b1648f6bce5eee 100644 (file)
@@ -92,6 +92,24 @@ int smtp_param_parse(pool_t pool, const char *text,
 
 /* manipulate */
 
+void smtp_params_copy(pool_t pool, ARRAY_TYPE(smtp_param) *dst,
+                     const ARRAY_TYPE(smtp_param) *src)
+{
+       const struct smtp_param *param;
+
+       if (!array_is_created(src))
+               return;
+
+       p_array_init(dst, pool, array_count(src));
+       array_foreach(src, param) {
+               struct smtp_param param_new;
+
+               param_new.keyword = p_strdup(pool, param->keyword);
+               param_new.value = p_strdup(pool, param->value);
+               array_push_back(dst, &param_new);
+       }
+}
+
 void smtp_params_add_one(ARRAY_TYPE(smtp_param) *params, pool_t pool,
                         const char *keyword, const char *value)
 {
@@ -503,18 +521,7 @@ void smtp_params_mail_copy(pool_t pool, struct smtp_params_mail *dst,
        dst->ret = src->ret;
        dst->size = src->size;
 
-       if (array_is_created(&src->extra_params)) {
-               const struct smtp_param *param;
-               struct smtp_param param_new;
-
-               p_array_init(&dst->extra_params, pool,
-                            array_count(&src->extra_params));
-               array_foreach(&src->extra_params, param) {
-                       param_new.keyword = p_strdup(pool, param->keyword);
-                       param_new.value = p_strdup(pool, param->value);
-                       array_push_back(&dst->extra_params, &param_new);
-               }
-       }
+       smtp_params_copy(pool, &dst->extra_params, &src->extra_params);
 }
 
 void smtp_params_mail_add_extra(struct smtp_params_mail *params, pool_t pool,
@@ -1071,18 +1078,7 @@ void smtp_params_rcpt_copy(pool_t pool, struct smtp_params_rcpt *dst,
        dst->orcpt.addr_raw = p_strdup(pool, src->orcpt.addr_raw);
        dst->orcpt.addr = smtp_address_clone(pool, src->orcpt.addr);
 
-       if (array_is_created(&src->extra_params)) {
-               const struct smtp_param *param;
-               struct smtp_param param_new;
-
-               p_array_init(&dst->extra_params, pool,
-                       array_count(&src->extra_params));
-               array_foreach(&src->extra_params, param) {
-                       param_new.keyword = p_strdup(pool, param->keyword);
-                       param_new.value = p_strdup(pool, param->value);
-                       array_push_back(&dst->extra_params, &param_new);
-               }
-       }
+       smtp_params_copy(pool, &dst->extra_params, &src->extra_params);
 }
 
 void smtp_params_rcpt_add_extra(struct smtp_params_rcpt *params, pool_t pool,
index f8d81fe464c9904aa04aed57ff90b3f2bb2c97b5..80a5fe3e15dbd675fe3149f1ebd8fa81594e69bc 100644 (file)
@@ -85,6 +85,9 @@ int smtp_param_parse(pool_t pool, const char *text,
 
 /* manipulate */
 
+void smtp_params_copy(pool_t pool, ARRAY_TYPE(smtp_param) *dst,
+                     const ARRAY_TYPE(smtp_param) *src) ATTR_NULL(3);
+
 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,
@@ -117,7 +120,7 @@ int smtp_params_mail_parse(pool_t pool, const char *args,
 /* manipulate */
 
 void smtp_params_mail_copy(pool_t pool, struct smtp_params_mail *dst,
-                          const struct smtp_params_mail *src) ATTR_NULL(3);
+                          const struct smtp_params_mail *src);
 
 void smtp_params_mail_add_extra(struct smtp_params_mail *params, pool_t pool,
                                const char *keyword, const char *value)