]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-smtp: smtp-reply - Add smtp_reply_get_message().
authorStephan Bosch <stephan.bosch@dovecot.fi>
Sun, 3 Feb 2019 23:53:36 +0000 (00:53 +0100)
committerVille Savolainen <ville.savolainen@dovecot.fi>
Fri, 28 Jun 2019 07:09:24 +0000 (10:09 +0300)
Returns only the message of the reply without statuses as a single line.

src/lib-smtp/smtp-reply.c
src/lib-smtp/smtp-reply.h

index 3e3c6cac75c8c04f5377754e9d0bb786710fe1c8..5d1ded949e002de90270ef30878c61822662ab16 100644 (file)
@@ -100,10 +100,23 @@ smtp_reply_write(string_t *out, const struct smtp_reply *reply)
        }
 }
 
+static void
+smtp_reply_write_message_one_line(string_t *out, const struct smtp_reply *reply)
+{
+       const char *const *lines;
+
+       lines = reply->text_lines;
+       while (*lines != NULL) {
+               if (str_len(out) > 0)
+                       str_append_c(out, ' ');
+               str_append(out, *lines);
+               lines++;
+       }
+}
+
 void smtp_reply_write_one_line(string_t *out, const struct smtp_reply *reply)
 {
        const char *enh_code = smtp_reply_get_enh_code(reply);
-       const char *const *lines;
 
        i_assert(reply->status < 560);
        i_assert(reply->enhanced_code.x < 6);
@@ -114,17 +127,11 @@ void smtp_reply_write_one_line(string_t *out, const struct smtp_reply *reply)
                str_append(out, enh_code);
        }
 
-       lines = reply->text_lines;
-       while (*lines != NULL) {
-               str_append_c(out, ' ');
-               str_append(out, *lines);
-               lines++;
-       }
+       smtp_reply_write_message_one_line(out, reply);
 }
 
 const char *smtp_reply_log(const struct smtp_reply *reply)
 {
-       const char *const *lines;
        string_t *msg = t_str_new(256);
 
        if (smtp_reply_is_remote(reply)) {
@@ -137,13 +144,15 @@ const char *smtp_reply_log(const struct smtp_reply *reply)
                }
        }
 
-       lines = reply->text_lines;
-       while (*lines != NULL) {
-               if (str_len(msg) > 0)
-                       str_append_c(msg, ' ');
-               str_append(msg, *lines);
-               lines++;
-       }
+       smtp_reply_write_message_one_line(msg, reply);
+       return str_c(msg);
+}
+
+const char *smtp_reply_get_message(const struct smtp_reply *reply)
+{
+       string_t *msg = t_str_new(256);
+
+       smtp_reply_write_message_one_line(msg, reply);
        return str_c(msg);
 }
 
index 1b4c671eb30cad63d96ae32cc40a445eef6311c9..83d06b1f88134ccd5ce0ac220fc1cd9c508f0ed7 100644 (file)
@@ -65,6 +65,10 @@ void smtp_reply_write_one_line(string_t *out, const struct smtp_reply *reply);
 /* Create a log line from the SMTP reply. This also properly handles internal
    client error replies (status_code >= 560). */
 const char *smtp_reply_log(const struct smtp_reply *reply);
+/* Returns the message of the reply as a single line without status codes and
+   without CRLF.
+ */
+const char *smtp_reply_get_message(const struct smtp_reply *reply);
 
 void smtp_reply_copy(pool_t pool, struct smtp_reply *dst,
        const struct smtp_reply *src);