public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Andreas Sturmlechner" <asturm@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: net-libs/libtorrent-rasterbar/files/, net-libs/libtorrent-rasterbar/
Date: Thu, 22 Feb 2018 21:49:02 +0000 (UTC)	[thread overview]
Message-ID: <1519336121.57d52572cbe8d2586523a66b0f6bbc6254f7edc0.asturm@gentoo> (raw)

commit:     57d52572cbe8d2586523a66b0f6bbc6254f7edc0
Author:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Thu Feb 22 21:47:44 2018 +0000
Commit:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Thu Feb 22 21:48:41 2018 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=57d52572

net-libs/libtorrent-rasterbar: Cleanup vulnerable

Closes: https://bugs.gentoo.org/623152

 net-libs/libtorrent-rasterbar/Manifest             |   1 -
 ...rent-rasterbar-1.0.11-boost-config-header.patch |  31 ----
 ...libtorrent-rasterbar-1.0.11-fix-abicompat.patch | 157 ---------------------
 .../libtorrent-rasterbar-1.0.11-fix-test_ssl.patch |  21 ---
 .../libtorrent-rasterbar-1.0.11-move-header.patch  |  34 -----
 ...orrent-rasterbar-1.0.9-test_torrent_parse.patch |  41 ------
 .../libtorrent-rasterbar-1.0.11-r1.ebuild          | 117 ---------------
 7 files changed, 402 deletions(-)

diff --git a/net-libs/libtorrent-rasterbar/Manifest b/net-libs/libtorrent-rasterbar/Manifest
index 0bcb190e818..38db164ee52 100644
--- a/net-libs/libtorrent-rasterbar/Manifest
+++ b/net-libs/libtorrent-rasterbar/Manifest
@@ -1,2 +1 @@
-DIST libtorrent-rasterbar-1.0.11.tar.gz 3325786 BLAKE2B ef49c3242f520e222da2724385a41944fb752f09eab45fe60588df999d69832a82ed6b7b7494a0bf303cd6f05b28679f4d7776e6dd66e41cd22b1038f3391800 SHA512 770d16b241174ae4b121af9b2ac7bcde8b14c6ed99352b827b760a3cbdc2c0ebd0d505319762897720c5f72acdff506ee9948ac1140e6d4591805eca5439b184
 DIST libtorrent-rasterbar-1.1.5.tar.gz 3942894 BLAKE2B 0a1102e1b74049c1f5d8980363a6b92a3378339349609d64d3b7a38a58baf6c2898a26f70e92b0de0d6a1f4b6725a576a850aacaa5764fe7d96fa0b541dfa2d7 SHA512 d0e7fe944c8a396aaf79ce80c7513be07a855bc8a9eee3bca46ed83d5e190aaa5ea4dc9a8a7208e27e18ae8f15733e6e34eabd375f0bde43d4dc4607840782e7

diff --git a/net-libs/libtorrent-rasterbar/files/libtorrent-rasterbar-1.0.11-boost-config-header.patch b/net-libs/libtorrent-rasterbar/files/libtorrent-rasterbar-1.0.11-boost-config-header.patch
deleted file mode 100644
index f3a81c381d8..00000000000
--- a/net-libs/libtorrent-rasterbar/files/libtorrent-rasterbar-1.0.11-boost-config-header.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-commit 7eb3cf6bc6dbada3fa7bb7ff4d5981182813a0e2
-Author: arvidn <arvid@cs.umu.se>
-Date:   Tue Jul 11 23:16:50 2017 -0700
-
-    use the official boost.config header
-
-diff --git a/include/libtorrent/export.hpp b/include/libtorrent/export.hpp
-index 87536af2a..503afe27a 100644
---- a/include/libtorrent/export.hpp
-+++ b/include/libtorrent/export.hpp
-@@ -33,19 +33,7 @@ POSSIBILITY OF SUCH DAMAGE.
- #ifndef TORRENT_EXPORT_HPP_INCLUDED
- #define TORRENT_EXPORT_HPP_INCLUDED
- 
--#if !defined(BOOST_COMPILER_CONFIG) && !defined(BOOST_NO_COMPILER_CONFIG)
--#  include <boost/config/select_compiler_config.hpp>
--#endif
--#ifdef BOOST_COMPILER_CONFIG
--#  include BOOST_COMPILER_CONFIG
--#endif
--
--#if !defined(BOOST_PLATFORM_CONFIG) && !defined(BOOST_NO_PLATFORM_CONFIG)
--#  include <boost/config/select_platform_config.hpp>
--#endif
--#ifdef BOOST_PLATFORM_CONFIG
--#  include BOOST_PLATFORM_CONFIG
--#endif
-+#include <boost/config.hpp>
- 
- // backwards compatibility with older versions of boost
- #if !defined BOOST_SYMBOL_EXPORT && !defined BOOST_SYMBOL_IMPORT

diff --git a/net-libs/libtorrent-rasterbar/files/libtorrent-rasterbar-1.0.11-fix-abicompat.patch b/net-libs/libtorrent-rasterbar/files/libtorrent-rasterbar-1.0.11-fix-abicompat.patch
deleted file mode 100644
index eebee122551..00000000000
--- a/net-libs/libtorrent-rasterbar/files/libtorrent-rasterbar-1.0.11-fix-abicompat.patch
+++ /dev/null
@@ -1,157 +0,0 @@
-From 76381835be19da2f8f1fc501445e31d32e6d83e4 Mon Sep 17 00:00:00 2001
-From: Arvid Norberg <arvid.norberg@gmail.com>
-Date: Sun, 12 Feb 2017 21:05:22 -0500
-Subject: [PATCH] fix ABI compatibility issue introduced with preformatted
- entry type (#1702)
-
-fix ABI compatibility issue introduced with preformatted entry type
----
- ChangeLog                              |  2 ++
- bindings/python/src/create_torrent.cpp |  2 +-
- include/libtorrent/create_torrent.hpp  |  6 ++++++
- src/create_torrent.cpp                 | 31 ++++++++++++++++++++++++++++---
- src/torrent.cpp                        | 11 ++++++++---
- test/test_create_torrent.cpp           |  2 +-
- 6 files changed, 46 insertions(+), 8 deletions(-)
-
-diff --git a/ChangeLog b/ChangeLog
-index 9b501ce..9defe7c 100644
---- a/ChangeLog
-+++ b/ChangeLog
-@@ -1,3 +1,5 @@
-+	* fix ABI compatibility issue introduced with preformatted entry type
-+
- 1.0.11 release
- 
- 	* updating super seeding would include the torrent in state_update_alert
-diff --git a/bindings/python/src/create_torrent.cpp b/bindings/python/src/create_torrent.cpp
-index 55b6b51..31abb07 100644
---- a/bindings/python/src/create_torrent.cpp
-+++ b/bindings/python/src/create_torrent.cpp
-@@ -127,7 +127,7 @@ void bind_create_torrent()
- 
-     class_<create_torrent>("create_torrent", no_init)
-         .def(init<file_storage&>())
--        .def(init<torrent_info const&>(arg("ti")))
-+        .def(init<torrent_info const&, int>((arg("ti"), arg("version") = LIBTORRENT_VERSION_NUM)))
-         .def(init<file_storage&, int, int, int>((arg("storage"), arg("piece_size") = 0
-             , arg("pad_file_limit") = -1, arg("flags") = int(libtorrent::create_torrent::optimize))))
- 
-diff --git a/include/libtorrent/create_torrent.hpp b/include/libtorrent/create_torrent.hpp
-index 05dc6ca..d55e86a 100644
---- a/include/libtorrent/create_torrent.hpp
-+++ b/include/libtorrent/create_torrent.hpp
-@@ -42,6 +42,7 @@ POSSIBILITY OF SUCH DAMAGE.
- #include "libtorrent/utf8.hpp"
- #include "libtorrent/allocator.hpp"
- #include "libtorrent/file.hpp" // for combine_path etc.
-+#include "libtorrent/version.hpp"
- 
- #include <vector>
- #include <string>
-@@ -171,9 +172,12 @@ namespace libtorrent
- 		// ``alignment`` is used when pad files are enabled. This is the size
- 		// eligible files are aligned to. The default is -1, which means the
- 		// piece size of the torrent.
-+		// The ``use_preformatted`` parameter can be set to true to preserve
-+		// invalid encoding of the .torrent file.
- 		create_torrent(file_storage& fs, int piece_size = 0
- 			, int pad_file_limit = -1, int flags = optimize, int alignment = -1);
- 		create_torrent(torrent_info const& ti);
-+		create_torrent(torrent_info const& ti, bool use_preformatted);
- 
- 		// internal
- 		~create_torrent();
-@@ -290,6 +294,8 @@ namespace libtorrent
- 
- 	private:
- 
-+		void load_from_torrent_info(torrent_info const& ti, bool const use_preformatted);
-+
- 		file_storage& m_files;
- 		// if m_info_dict is initialized, it is 
- 		// used instead of m_files to generate
-diff --git a/src/create_torrent.cpp b/src/create_torrent.cpp
-index df4c759..aab5574 100644
---- a/src/create_torrent.cpp
-+++ b/src/create_torrent.cpp
-@@ -330,6 +330,24 @@ namespace libtorrent
- 		, m_include_symlinks(false)
- 		, m_calculate_file_hashes(false)
- 	{
-+		load_from_torrent_info(ti, false);
-+	}
-+
-+	create_torrent::create_torrent(torrent_info const& ti, bool const use_preformatted)
-+		: m_files(const_cast<file_storage&>(ti.files()))
-+		, m_creation_date(time(0))
-+		, m_multifile(ti.num_files() > 1)
-+		, m_private(ti.priv())
-+		, m_merkle_torrent(ti.is_merkle_torrent())
-+		, m_include_mtime(false)
-+		, m_include_symlinks(false)
-+		, m_calculate_file_hashes(false)
-+	{
-+		load_from_torrent_info(ti, use_preformatted);
-+	}
-+
-+	void create_torrent::load_from_torrent_info(torrent_info const& ti, bool const use_preformatted)
-+	{
- 		TORRENT_ASSERT(ti.is_valid());
- 		if (!ti.is_valid()) return;
- 
-@@ -361,9 +379,16 @@ namespace libtorrent
- 		m_piece_hash.resize(m_files.num_pieces());
- 		for (int i = 0; i < num_pieces(); ++i) set_hash(i, ti.hash_for_piece(i));
- 
--		boost::shared_array<char> const info = ti.metadata();
--		int const size = ti.metadata_size();
--		m_info_dict.preformatted().assign(&info[0], &info[0] + size);
-+		if (use_preformatted)
-+		{
-+			boost::shared_array<char> const info = ti.metadata();
-+			int const size = ti.metadata_size();
-+			m_info_dict.preformatted().assign(&info[0], &info[0] + size);
-+		}
-+		else
-+		{
-+			m_info_dict = bdecode(&ti.metadata()[0], &ti.metadata()[0] + ti.metadata_size());
-+		}
- 		m_info_hash = ti.info_hash();
- 	}
- 
-diff --git a/src/torrent.cpp b/src/torrent.cpp
-index 75f0cc7..ef05dfd 100644
---- a/src/torrent.cpp
-+++ b/src/torrent.cpp
-@@ -5601,9 +5601,14 @@ namespace libtorrent
- 		{
- 			if (m_magnet_link || (m_save_resume_flags & torrent_handle::save_info_dict))
- 			{
--				boost::shared_array<char> const info = torrent_file().metadata();
--				int const size = torrent_file().metadata_size();
--				ret["info"].preformatted().assign(&info[0], &info[0] + size);
-+				ret["info"] = bdecode(&torrent_file().metadata()[0]
-+					, &torrent_file().metadata()[0] + torrent_file().metadata_size());
-+// TODO: re-enable this code once there's a non-inlined encoder function. Or
-+// perhaps this should not be used until saving resume_data via
-+// add_torrent_params and a free function, similar to read_resume_data
-+//				boost::shared_array<char> const info = torrent_file().metadata();
-+//				int const size = torrent_file().metadata_size();
-+//				ret["info"].preformatted().assign(&info[0], &info[0] + size);
- 			}
- 		}
- 
-diff --git a/test/test_create_torrent.cpp b/test/test_create_torrent.cpp
-index 0a87c08..33fd3e8 100644
---- a/test/test_create_torrent.cpp
-+++ b/test/test_create_torrent.cpp
-@@ -51,7 +51,7 @@ int test_main()
- 
- 	lt::torrent_info info(test_torrent, sizeof(test_torrent) - 1);
- 
--	lt::create_torrent t(info);
-+	lt::create_torrent t(info, true);
- 
- 	std::vector<char> buffer;
- 	lt::bencode(std::back_inserter(buffer), t.generate());

diff --git a/net-libs/libtorrent-rasterbar/files/libtorrent-rasterbar-1.0.11-fix-test_ssl.patch b/net-libs/libtorrent-rasterbar/files/libtorrent-rasterbar-1.0.11-fix-test_ssl.patch
deleted file mode 100644
index 2add42c7dd2..00000000000
--- a/net-libs/libtorrent-rasterbar/files/libtorrent-rasterbar-1.0.11-fix-test_ssl.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-From 7f060e4a70b21974bcf154cf1a93c7b68c5a9aa8 Mon Sep 17 00:00:00 2001
-From: Alden Torres <aldenml@gmail.com>
-Date: Sat, 8 Oct 2016 01:12:15 -0400
-Subject: [PATCH] fix openssl compilation with boost 1.62 (#1193)
-
----
- test/test_ssl.cpp | 1 -
- 1 file changed, 1 deletion(-)
-
-diff --git a/test/test_ssl.cpp b/test/test_ssl.cpp
-index 659973c..5aa6b15 100644
---- a/test/test_ssl.cpp
-+++ b/test/test_ssl.cpp
-@@ -47,7 +47,6 @@ POSSIBILITY OF SUCH DAMAGE.
- #include <boost/asio/connect.hpp>
- 
- #ifdef TORRENT_USE_OPENSSL
--#include <boost/asio/ssl/error.hpp> // for asio::error::get_ssl_category()
- #include <boost/asio/ssl.hpp>
- 
- using namespace libtorrent;

diff --git a/net-libs/libtorrent-rasterbar/files/libtorrent-rasterbar-1.0.11-move-header.patch b/net-libs/libtorrent-rasterbar/files/libtorrent-rasterbar-1.0.11-move-header.patch
deleted file mode 100644
index 589998b7fb3..00000000000
--- a/net-libs/libtorrent-rasterbar/files/libtorrent-rasterbar-1.0.11-move-header.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From ecd20f15cb3fa5a0ebabd647b1f57f3cd62cb4b7 Mon Sep 17 00:00:00 2001
-From: sledgehammer_999 <hammered999@gmail.com>
-Date: Mon, 20 Feb 2017 01:22:27 +0200
-Subject: [PATCH] Move include into implementation instead(from #1702).
-
----
- bindings/python/src/create_torrent.cpp | 1 +
- include/libtorrent/create_torrent.hpp  | 1 -
- 2 files changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/bindings/python/src/create_torrent.cpp b/bindings/python/src/create_torrent.cpp
-index 31abb07..e856d85 100644
---- a/bindings/python/src/create_torrent.cpp
-+++ b/bindings/python/src/create_torrent.cpp
-@@ -6,6 +6,7 @@
- #include <libtorrent/create_torrent.hpp>
- #include <libtorrent/file_storage.hpp>
- #include "libtorrent/intrusive_ptr_base.hpp"
-+#include <libtorrent/version.hpp>
- #include "bytes.hpp"
- 
- using namespace boost::python;
-diff --git a/include/libtorrent/create_torrent.hpp b/include/libtorrent/create_torrent.hpp
-index d55e86a..8d2c680 100644
---- a/include/libtorrent/create_torrent.hpp
-+++ b/include/libtorrent/create_torrent.hpp
-@@ -42,7 +42,6 @@ POSSIBILITY OF SUCH DAMAGE.
- #include "libtorrent/utf8.hpp"
- #include "libtorrent/allocator.hpp"
- #include "libtorrent/file.hpp" // for combine_path etc.
--#include "libtorrent/version.hpp"
- 
- #include <vector>
- #include <string>

diff --git a/net-libs/libtorrent-rasterbar/files/libtorrent-rasterbar-1.0.9-test_torrent_parse.patch b/net-libs/libtorrent-rasterbar/files/libtorrent-rasterbar-1.0.9-test_torrent_parse.patch
deleted file mode 100644
index 658c0aa5715..00000000000
--- a/net-libs/libtorrent-rasterbar/files/libtorrent-rasterbar-1.0.9-test_torrent_parse.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From bdd91e29225b44a1a13e670dc4cecfb58f241d28 Mon Sep 17 00:00:00 2001
-From: Davide Pesavento <pesa@gentoo.org>
-Date: Sun, 7 Aug 2016 12:14:57 +0200
-Subject: [PATCH] Disable failing torrent_parse tests
-
-For unknown reasons, some test torrents are missing from the tarball.
-Skip the corresponding test cases to avoid spurious failures.
----
- test/test_torrent_parse.cpp | 5 -----
- 1 file changed, 5 deletions(-)
-
-diff --git a/test/test_torrent_parse.cpp b/test/test_torrent_parse.cpp
-index 663f341..2de6fb5 100644
---- a/test/test_torrent_parse.cpp
-+++ b/test/test_torrent_parse.cpp
-@@ -49,13 +49,10 @@ using namespace libtorrent;
- test_torrent_t test_torrents[] =
- {
- 	{ "base.torrent" },
--	{ "empty_path.torrent" },
- 	{ "parent_path.torrent" },
- 	{ "hidden_parent_path.torrent" },
- 	{ "single_multi_file.torrent" },
- 	{ "slash_path.torrent" },
--	{ "slash_path2.torrent" },
--	{ "slash_path3.torrent" },
- 	{ "backslash_path.torrent" },
- 	{ "url_list.torrent" },
- 	{ "url_list2.torrent" },
-@@ -75,8 +72,6 @@ test_torrent_t test_torrents[] =
- 	{ "root_hash.torrent" },
- 	{ "empty_path_multi.torrent" },
- 	{ "duplicate_web_seeds.torrent" },
--	{ "invalid_name3.torrent" },
--	{ "symlink1.torrent" },
- };
- 
- struct test_failing_torrent_t
--- 
-2.9.2
-

diff --git a/net-libs/libtorrent-rasterbar/libtorrent-rasterbar-1.0.11-r1.ebuild b/net-libs/libtorrent-rasterbar/libtorrent-rasterbar-1.0.11-r1.ebuild
deleted file mode 100644
index 77e5c5b9b40..00000000000
--- a/net-libs/libtorrent-rasterbar/libtorrent-rasterbar-1.0.11-r1.ebuild
+++ /dev/null
@@ -1,117 +0,0 @@
-# Copyright 1999-2018 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=6
-
-PYTHON_COMPAT=( python2_7 python3_{4,5} )
-PYTHON_REQ_USE="threads"
-DISTUTILS_OPTIONAL=true
-DISTUTILS_IN_SOURCE_BUILD=true
-
-inherit distutils-r1 versionator
-
-MY_PV=$(replace_all_version_separators _)
-
-DESCRIPTION="C++ BitTorrent implementation focusing on efficiency and scalability"
-HOMEPAGE="http://libtorrent.org"
-SRC_URI="https://github.com/arvidn/libtorrent/releases/download/libtorrent-${MY_PV}/${P}.tar.gz"
-
-LICENSE="BSD"
-SLOT="0/8"
-KEYWORDS="amd64 arm ppc ppc64 ~sparc x86 ~x86-fbsd"
-IUSE="debug +dht doc examples +geoip libressl python +ssl static-libs test"
-
-REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )"
-
-COMMON_DEPEND="
-	dev-libs/boost:=[threads]
-	virtual/libiconv
-	geoip? ( dev-libs/geoip )
-	python? (
-		${PYTHON_DEPS}
-		dev-libs/boost:=[python,${PYTHON_USEDEP}]
-	)
-	ssl? (
-		!libressl? ( dev-libs/openssl:0= )
-		libressl? ( dev-libs/libressl:= )
-	)
-"
-DEPEND="${COMMON_DEPEND}
-	sys-devel/libtool
-"
-RDEPEND="${COMMON_DEPEND}
-	examples? ( !net-p2p/mldonkey )
-"
-
-PATCHES=(
-	"${FILESDIR}/${PN}-1.0.9-test_torrent_parse.patch"
-	# RC_1_0 branch
-	"${FILESDIR}/${P}-fix-abicompat.patch"
-	"${FILESDIR}/${P}-move-header.patch"
-	# master branch
-	"${FILESDIR}/${P}-fix-test_ssl.patch"
-	"${FILESDIR}/${P}-boost-config-header.patch"
-)
-
-src_prepare() {
-	default
-
-	# bug 578026
-	# prepend -L${S}/... to ensure bindings link against the lib we just built
-	sed -i -e "s|^|-L${S}/src/.libs |" bindings/python/compile_flags.in || die
-
-	use python && distutils-r1_src_prepare
-}
-
-src_configure() {
-	local myeconfargs=(
-		$(use_enable debug)
-		$(use_enable debug logging)
-		$(use_enable debug statistics)
-		$(use_enable debug disk-stats)
-		$(use_enable dht dht $(usex debug logging yes))
-		$(use_enable examples)
-		$(use_enable geoip)
-		$(use_with   geoip libgeoip)
-		$(use_enable ssl encryption)
-		$(use_enable static-libs static)
-		$(use_enable test tests)
-		--with-libiconv
-	)
-	econf "${myeconfargs[@]}"
-
-	if use python; then
-		myeconfargs+=(
-			--enable-python-binding
-			--with-boost-python
-		)
-		python_configure() {
-			econf "${myeconfargs[@]}"
-		}
-		distutils-r1_src_configure
-	fi
-}
-
-src_compile() {
-	default
-
-	python_compile() {
-		cd "${BUILD_DIR}/../bindings/python" || die
-		distutils-r1_python_compile
-	}
-	use python && distutils-r1_src_compile
-}
-
-src_install() {
-	use doc && HTML_DOCS+=( "${S}"/docs )
-
-	default
-
-	python_install() {
-		cd "${BUILD_DIR}/../bindings/python" || die
-		distutils-r1_python_install
-	}
-	use python && distutils-r1_src_install
-
-	find "${D}" -name '*.la' -delete || die
-}


             reply	other threads:[~2018-02-22 21:49 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-02-22 21:49 Andreas Sturmlechner [this message]
  -- strict thread matches above, loose matches on Subject: below --
2019-05-02 19:16 [gentoo-commits] repo/gentoo:master commit in: net-libs/libtorrent-rasterbar/files/, net-libs/libtorrent-rasterbar/ Mikle Kolyada
2019-12-20 10:43 Mikle Kolyada
2021-08-27  0:36 Sam James
2021-10-31  4:22 Sam James
2021-10-31  4:33 Sam James
2021-12-13  0:23 Nick Sarnie
2022-06-25 21:18 David Seifert

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1519336121.57d52572cbe8d2586523a66b0f6bbc6254f7edc0.asturm@gentoo \
    --to=asturm@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox