commit:     2fa577ac669729cbad4233e54d97185b2705e4d1
Author:     Peter Levine <plevine457 <AT> gmail <DOT> com>
AuthorDate: Sun May 21 19:23:33 2017 +0000
Commit:     David Seifert <soap <AT> gentoo <DOT> org>
CommitDate: Fri May 26 20:58:17 2017 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=2fa577ac

mail-filter/mapson: Fix building with GCC-6

Bug: https://bugs.gentoo.org/show_bug.cgi?id=594382
Package-Manager: Portage-2.3.5, Repoman-2.3.2
Closes: https://github.com/gentoo/gentoo/pull/4690

 mail-filter/mapson/files/mapson-3.3-gcc6.patch | 287 +++++++++++++++++++++++++
 mail-filter/mapson/mapson-3.3.ebuild           |   6 +-
 2 files changed, 292 insertions(+), 1 deletion(-)

diff --git a/mail-filter/mapson/files/mapson-3.3-gcc6.patch 
b/mail-filter/mapson/files/mapson-3.3-gcc6.patch
new file mode 100644
index 00000000000..d43c2cb95ea
--- /dev/null
+++ b/mail-filter/mapson/files/mapson-3.3-gcc6.patch
@@ -0,0 +1,287 @@
+--- a/accept-confirmation.cpp
++++ b/accept-confirmation.cpp
+@@ -52,7 +52,7 @@
+     for (rc = read(fd, tmp, sizeof(tmp)); rc > 0; rc = read(fd, tmp, 
sizeof(tmp)))
+       mail.append(tmp, rc);
+     if (rc < 0)
+-      throw system_error(string("Failed to read mail file '") + filename + 
"'");
++      throw mapson_system_error(string("Failed to read mail file '") + 
filename + "'");
+     deliver(mail);
+     unlink(filename.c_str());
+   }
+--- a/address-db.cpp
++++ b/address-db.cpp
+@@ -26,7 +26,7 @@
+ 
+   fd = open(filename.c_str(), O_RDWR | O_CREAT, S_IRUSR | S_IWUSR);
+   if (fd < 0)
+-    throw system_error(string("Can't open address db '") +
++    throw mapson_system_error(string("Can't open address db '") +
+                       filename + "' for reading");
+   fd_sentry sentry(fd);
+ 
+@@ -36,7 +36,7 @@
+   lock.l_start  = 0;
+   lock.l_len    = 0;
+   if (fcntl(fd, F_SETLKW, &lock) != 0)
+-    throw system_error(string("Can't lock file '") + filename + "'");
++    throw mapson_system_error(string("Can't lock file '") + filename + "'");
+ 
+   // Read the file into memory.
+ 
+@@ -47,7 +47,7 @@
+        rc = read(fd, buffer, sizeof(buffer)))
+     data.append(buffer, rc);
+   if (rc < 0)
+-    throw system_error(string("Failed to read address db '") +
++    throw mapson_system_error(string("Failed to read address db '") +
+                       filename + "' into memory");
+ 
+   // Success. Don't close the file descriptor.
+@@ -107,7 +107,7 @@
+   {
+     ssize_t rc = write(fd, data.data()+len, data.size()-len);
+     if (rc < 0)
+-      throw system_error(string("Failed writing to the address db '") + 
filename + "'");
++      throw mapson_system_error(string("Failed writing to the address db '") 
+ filename + "'");
+     else
+       len += rc;
+   }
+--- a/config.cpp
++++ b/config.cpp
+@@ -70,9 +70,9 @@
+     string tmp = string(name) + "=" + value;
+     char* env = strdup(tmp.c_str());
+     if (env == 0)
+-      throw system_error("strdup() failed");
++      throw mapson_system_error("strdup() failed");
+     if (putenv(env) != 0)
+-      throw system_error("putenv() failed");
++      throw mapson_system_error("putenv() failed");
+   }
+ }
+ 
+@@ -84,7 +84,7 @@
+ 
+   pwd_sentry sentry(getpwuid(getuid()));
+   if (sentry.pwd == 0)
+-    throw system_error("Can't get my user name");
++    throw mapson_system_error("Can't get my user name");
+   log_file.assign(sentry.pwd->pw_dir).append("/.mapson/log");
+   spool_dir.assign(sentry.pwd->pw_dir).append("/.mapson/spool");
+   address_db.assign(sentry.pwd->pw_dir).append("/.mapson/address-db");
+--- a/deliver.cpp
++++ b/deliver.cpp
+@@ -31,11 +31,11 @@
+ 
+     FILE* fh = popen(config->mailbox.c_str()+1, "w");
+     if (fh == NULL)
+-      throw system_error(string("Can't start delivery pipe '") + 
config->mailbox + "'");
++      throw mapson_system_error(string("Can't start delivery pipe '") + 
config->mailbox + "'");
+     int len = fwrite(mail.data(), mail.size(), 1, fh);
+     pclose(fh);
+     if (len != 1)
+-      throw system_error(string("Failed to pipe to MTA process '") + 
config->mailbox + "'");
++      throw mapson_system_error(string("Failed to pipe to MTA process '") + 
config->mailbox + "'");
+   }
+   else
+   {
+@@ -43,7 +43,7 @@
+ 
+     int fd = open(config->mailbox.c_str(), O_WRONLY | O_CREAT | O_APPEND, 
S_IRUSR | S_IWUSR);
+     if (fd < 0)
+-      throw system_error(string("Can't open mailbox file '") + 
config->mailbox + "' for writing");
++      throw mapson_system_error(string("Can't open mailbox file '") + 
config->mailbox + "' for writing");
+     fd_sentry sentry(fd);
+ 
+     struct flock lock;
+@@ -52,13 +52,13 @@
+     lock.l_start  = 0;
+     lock.l_len    = 0;
+     if (fcntl(fd, F_SETLKW, &lock) != 0)
+-      throw system_error(string("Can't lock file '") + config->mailbox + "'");
++      throw mapson_system_error(string("Can't lock file '") + config->mailbox 
+ "'");
+ 
+     for (size_t len = 0; len < mail.size(); )
+     {
+       ssize_t rc = write(fd, mail.data()+len, mail.size()-len);
+       if (rc < 0)
+-        throw system_error(string("Failed writing to the mailbox file '") + 
config->mailbox + "'");
++        throw mapson_system_error(string("Failed writing to the mailbox file 
'") + config->mailbox + "'");
+       else
+         len += rc;
+     }
+--- a/lines2regex.cpp
++++ b/lines2regex.cpp
+@@ -29,7 +29,7 @@
+     if (errno == ENOENT)
+       return "";
+     else
+-      throw system_error(string("Can't open regex db '") +
++      throw mapson_system_error(string("Can't open regex db '") +
+                         filename + "' for reading");
+   }
+   fd_sentry sentry(fd);
+@@ -40,7 +40,7 @@
+   lock.l_start  = 0;
+   lock.l_len    = 0;
+   if (fcntl(fd, F_SETLKW, &lock) != 0)
+-    throw system_error(string("Can't lock file '") + filename + "'");
++    throw mapson_system_error(string("Can't lock file '") + filename + "'");
+ 
+   // Read the file into memory.
+ 
+@@ -52,7 +52,7 @@
+        rc = read(fd, buffer, sizeof(buffer)))
+     data.append(buffer, rc);
+   if (rc < 0)
+-    throw system_error(string("Failed to read regex db '") +
++    throw mapson_system_error(string("Failed to read regex db '") +
+                       filename + "' into memory");
+ 
+   // Walk through the lines and compile the regexes.
+--- a/log.cpp
++++ b/log.cpp
+@@ -30,10 +30,10 @@
+   char buf[64];
+   time_t tstamp = time(0);
+   if (tstamp == static_cast<time_t>(-1))
+-    throw system_error("time(2) failed");
++    throw mapson_system_error("time(2) failed");
+   struct tm* tmtime = localtime(&tstamp);
+   if (tmtime == 0)
+-    throw system_error("localtime(3) failed");
++    throw mapson_system_error("localtime(3) failed");
+   strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", tmtime);
+   return buf;
+ }
+@@ -42,7 +42,7 @@
+ {
+   fileh.file = fopen(file, "a");
+   if (fileh.file == 0)
+-    throw system_error(string("Could not open log file ") + file);
++    throw mapson_system_error(string("Could not open log file ") + file);
+ 
+   struct flock lock;
+   lock.l_type = F_WRLCK;
+@@ -50,7 +50,7 @@
+   lock.l_start  = 0;
+   lock.l_len    = 0;
+   if (fcntl(fileno(fileh.file), F_SETLKW, &lock) != 0)
+-    throw system_error(string("Can't lock file '") + file + "'");
++    throw mapson_system_error(string("Can't lock file '") + file + "'");
+ }
+ 
+ void _debug(const char* fmt, ...)
+--- a/mapson.cpp
++++ b/mapson.cpp
+@@ -62,7 +62,7 @@
+ 
+       fd = open(argv[i], O_RDONLY, 0);
+       if (fd < 0)
+-        throw system_error("Can't open file for reading");
++        throw mapson_system_error("Can't open file for reading");
+       fd_sentry sentry(fd);
+       string mail;
+       for (rc = read(fd, buffer, sizeof(buffer));
+@@ -72,7 +72,7 @@
+         mail.append(buffer, rc);
+       }
+       if (rc < 0)
+-        throw system_error("Failed to read from file");
++        throw mapson_system_error("Failed to read from file");
+ 
+       // Extract the mail addresses.
+ 
+@@ -196,7 +196,7 @@
+     mail.append(buffer, rc);
+   }
+   if (rc < 0)
+-    throw system_error("Failed to read mail from standard input");
++    throw mapson_system_error("Failed to read mail from standard input");
+ 
+   // Check whether the mail contains a valid cookie. If it does,
+   // mail will be replaced with the original e-mail, that was
+--- a/parse-config-file.cpp
++++ b/parse-config-file.cpp
+@@ -55,7 +55,7 @@
+ 
+   std::ifstream file(filename);
+   if (!file)
+-    throw system_error(std::string("parse_config_file() failed to open '") + 
filename + "'");
++    throw mapson_system_error(std::string("parse_config_file() failed to open 
'") + filename + "'");
+ 
+   // Now we read line by line and process each one seperately.
+ 
+--- a/request-confirmation.cpp
++++ b/request-confirmation.cpp
+@@ -157,7 +157,7 @@
+   string filename = config->request_for_confirmation_file;
+   int fd = multi_open(filename, O_RDONLY, S_IRUSR | S_IWUSR);
+   if (fd < 0)
+-    throw system_error(string("Can't open request-mail template file '") + 
filename + "' for reading");
++    throw mapson_system_error(string("Can't open request-mail template file 
'") + filename + "' for reading");
+   fd_sentry sentry(fd);
+ 
+   // Read the file into memory.
+@@ -167,7 +167,7 @@
+   for (rc = read(fd, buffer, sizeof(buffer)); rc > 0; rc = read(fd, buffer, 
sizeof(buffer)))
+     mail_template.append(buffer, rc);
+   if (rc < 0)
+-    throw system_error(string("Failed to read request-mail template file '") 
+ filename + "' into memory");
++    throw mapson_system_error(string("Failed to read request-mail template 
file '") + filename + "' into memory");
+ 
+   // Expand variables in the template.
+ 
+@@ -180,11 +180,11 @@
+   debug(("Executing mail transport agent '%s'.", config->mta.c_str()));
+   FILE* fh = popen(config->mta.c_str(), "w");
+   if (fh == NULL)
+-    throw system_error(string("Can't start MTA '") + config->mta + "'");
++    throw mapson_system_error(string("Can't start MTA '") + config->mta + 
"'");
+   if (fwrite(mail_template.data(), mail_template.size(), 1, fh) != 1)
+   {
+     pclose(fh);
+-    throw system_error(string("Failed to pipe to MTA process '") + 
config->mta + "'");
++    throw mapson_system_error(string("Failed to pipe to MTA process '") + 
config->mta + "'");
+   }
+   pclose(fh);
+ }
+--- a/spool.cpp
++++ b/spool.cpp
+@@ -44,13 +44,13 @@
+   info("Spooling e-mail '%s' as '%s'.", config->message_id.c_str(), 
filename.c_str());
+   int fd = open(filename.c_str(), O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | 
S_IWUSR);
+   if (fd < 0)
+-    throw system_error(string("Can't open spool file '") + filename + "' for 
writing");
++    throw mapson_system_error(string("Can't open spool file '") + filename + 
"' for writing");
+   fd_sentry sentry(fd);
+   for (size_t len = 0; len < mail.size(); )
+   {
+     ssize_t rc = write(fd, mail.data()+len, mail.size()-len);
+     if (rc < 0)
+-      throw system_error(string("Failed writing to the spool file '") + 
filename + "'");
++      throw mapson_system_error(string("Failed writing to the spool file '") 
+ filename + "'");
+     else
+       len += rc;
+   }
+--- a/system-error.hpp
++++ b/system-error.hpp
+@@ -23,14 +23,14 @@
+ #include <string>
+ #include <cstring>
+ 
+-class system_error : public std::runtime_error
++class mapson_system_error : public std::runtime_error
+ {
+ public:
+-  system_error() : runtime_error(str())
++  mapson_system_error() : runtime_error(str())
+   {
+   }
+ 
+-  explicit system_error(std::string const & msg)
++  explicit mapson_system_error(std::string const & msg)
+     : runtime_error(msg + ": " + str())
+   {
+   }

diff --git a/mail-filter/mapson/mapson-3.3.ebuild 
b/mail-filter/mapson/mapson-3.3.ebuild
index 99a0464b6fb..5c6ce7bac66 100644
--- a/mail-filter/mapson/mapson-3.3.ebuild
+++ b/mail-filter/mapson/mapson-3.3.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2013 Gentoo Foundation
+# Copyright 1999-2017 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=4
@@ -16,6 +16,10 @@ IUSE="debug"
 RDEPEND="virtual/mta"
 DEPEND="${RDEPEND}"
 
+src_prepare() {
+       epatch "${FILESDIR}"/${P}-gcc6.patch
+}
+
 src_configure() {
        econf $(use_with debug)
 }

Reply via email to