From: Stephan Bosch Date: Fri, 2 Nov 2018 09:14:57 +0000 (+0100) Subject: lib-smtp: reply: Add smtp_reply_get_text_lines_omit_prefix(). X-Git-Tag: 2.3.9~1095 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=978448a41c3a7fff5bbc3c5909196b9eea06bb44;p=thirdparty%2Fdovecot%2Fcore.git lib-smtp: reply: Add smtp_reply_get_text_lines_omit_prefix(). This returns a string array of the lines in the reply, omitting the prefix (the first word), which is usually a "" value. --- diff --git a/src/lib-smtp/smtp-reply.c b/src/lib-smtp/smtp-reply.c index 5daa2aa01c..3e3c6cac75 100644 --- a/src/lib-smtp/smtp-reply.c +++ b/src/lib-smtp/smtp-reply.c @@ -41,6 +41,26 @@ smtp_reply_get_enh_code(const struct smtp_reply *reply) reply->enhanced_code.x, reply->enhanced_code.y, reply->enhanced_code.z); } +const char *const * +smtp_reply_get_text_lines_omit_prefix(const struct smtp_reply *reply) +{ + unsigned int lines_count, i; + const char **lines; + const char *p; + + if ((p=strchr(reply->text_lines[0], ' ')) == NULL) + return reply->text_lines; + + lines_count = str_array_length(reply->text_lines); + lines = t_new(const char *, lines_count + 1); + + lines[0] = p + 1; + for (i = 1; i < lines_count; i++) + lines[i] = reply->text_lines[i]; + + return lines; +} + void smtp_reply_write(string_t *out, const struct smtp_reply *reply) { diff --git a/src/lib-smtp/smtp-reply.h b/src/lib-smtp/smtp-reply.h index 4e7d6f99ac..1b4c671eb3 100644 --- a/src/lib-smtp/smtp-reply.h +++ b/src/lib-smtp/smtp-reply.h @@ -52,6 +52,8 @@ void smtp_reply_printf(struct smtp_reply *reply, unsigned int status, const char * smtp_reply_get_enh_code(const struct smtp_reply *reply); +const char *const * +smtp_reply_get_text_lines_omit_prefix(const struct smtp_reply *reply); /* Write the SMTP reply as a sequence of lines according to the SMTP syntax, each terminated by CRLF. */