array_append(¶ms->extra_params, ¶m, 1);
}
+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;
+}
+
/* write */
static void
array_append(¶ms->extra_params, ¶m, 1);
}
+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;
+}
+
/* write */
static void
* MAIL parameters
*/
+/* parse */
+
int smtp_params_mail_parse(pool_t pool, const char *args,
enum smtp_capability caps,
const char *const *param_extensions,
enum smtp_param_parse_error *error_code_r,
const char **error_r) ATTR_NULL(4, 5);
+/* manipulate */
+
void smtp_params_mail_copy(pool_t pool,
struct smtp_params_mail *dst, const struct smtp_params_mail *src)
ATTR_NULL(3);
void smtp_params_mail_add_extra(struct smtp_params_mail *params, pool_t pool,
const char *keyword, const char *value);
+bool smtp_params_mail_drop_extra(struct smtp_params_mail *params,
+ const char *keyword, const char **value_r)
+ ATTR_NULL(3);
/* write */
enum smtp_capability caps,
const struct smtp_params_mail *params);
+/* evaluate */
+
const struct smtp_param *
smtp_params_mail_get_extra(const struct smtp_params_mail *params,
const char *keyword);
* RCPT parameters
*/
+/* parse */
+
int smtp_params_rcpt_parse(pool_t pool, const char *args,
enum smtp_capability caps,
const char *const *param_extensions,
enum smtp_param_parse_error *error_code_r,
const char **error_r) ATTR_NULL(4);
+/* manipulate */
+
void smtp_params_rcpt_copy(pool_t pool,
struct smtp_params_rcpt *dst, const struct smtp_params_rcpt *src)
ATTR_NULL(3);
void smtp_params_rcpt_add_extra(struct smtp_params_rcpt *params, pool_t pool,
const char *keyword, const char *value);
+bool smtp_params_rcpt_drop_extra(struct smtp_params_rcpt *params,
+ const char *keyword, const char **value_r)
+ ATTR_NULL(3);
/* write */
enum smtp_capability caps,
const struct smtp_params_rcpt *params);
+/* evaluate */
+
const struct smtp_param *
smtp_params_rcpt_get_extra(const struct smtp_params_rcpt *params,
const char *keyword);