ALT Linux repos
Group :: Development/C
RPM: libetpan
Main Changelog Spec Patches Sources Download Gear Bugs and FR Repocop
Patch: Fix-mailmime_write-add-handler-for-MAILMIME_FIELD_LO.patch
Download
Download
From b4088cb04f47178e8059cd4a0fb0aa66939ddc28 Mon Sep 17 00:00:00 2001
From: Bastian Kummer <basti@politbuero.org>
Date: Mon, 22 Apr 2019 19:29:18 +0200
Subject: [PATCH 2/3] Fix mailmime_write(): add handler for
MAILMIME_FIELD_LOCATION (#329)
---
src/low-level/mime/mailmime_write_generic.c | 34 +++++++++++++++++++++
1 file changed, 34 insertions(+)
diff --git a/src/low-level/mime/mailmime_write_generic.c b/src/low-level/mime/mailmime_write_generic.c
index bb63ab0..ff44e0d 100644
--- a/src/low-level/mime/mailmime_write_generic.c
+++ b/src/low-level/mime/mailmime_write_generic.c
@@ -81,6 +81,9 @@ static int mailmime_version_write_driver(int (* do_write)(void *, const char *,
static int mailmime_encoding_write_driver(int (* do_write)(void *, const char *, size_t), void * data, int * col,
struct mailmime_mechanism * encoding);
+static int mailmime_location_write_driver(int (* do_write)(void *, const char *, size_t), void *data, int *col,
+ char *location);
+
static int mailmime_language_write_driver(int (* do_write)(void *, const char *, size_t), void * data, int * col,
struct mailmime_language * language);
@@ -169,6 +172,10 @@ static int mailmime_field_write_driver(int (* do_write)(void *, const char *, si
r = mailmime_language_write_driver(do_write, data, col, field->fld_data.fld_language);
break;
+ case MAILMIME_FIELD_LOCATION:
+ r = mailmime_location_write_driver(do_write, data, col, field->fld_data.fld_location);
+ break;
+
default:
r = MAILIMF_ERROR_INVAL;
break;
@@ -310,6 +317,33 @@ static int mailmime_encoding_write_driver(int (* do_write)(void *, const char *,
return MAILIMF_NO_ERROR;
}
+static int mailmime_location_write_driver(int (* do_write)(void *, const char *, size_t), void *data, int *col,
+ char *location)
+{
+ int r;
+ int len = strlen(location);
+
+ r = mailimf_string_write_driver(do_write, data, col, "Content-Location: ", 18);
+ if (r != MAILIMF_NO_ERROR)
+ return r;
+
+ if (*col > 1 && *col + len > MAX_MAIL_COL) {
+ r = mailimf_string_write_driver(do_write, data, col, "\r\n ", 3);
+ if (r != MAILIMF_NO_ERROR)
+ return r;
+ }
+
+ r = mailimf_string_write_driver(do_write, data, col, location, len);
+ if (r != MAILIMF_NO_ERROR)
+ return r;
+
+ r = mailimf_string_write_driver(do_write, data, col, "\r\n", 2);
+ if (r != MAILIMF_NO_ERROR)
+ return r;
+
+ return MAILIMF_NO_ERROR;
+}
+
static int mailmime_language_write_driver(int (* do_write)(void *, const char *, size_t), void * data, int * col,
struct mailmime_language * language)
{
--
2.21.0