You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/net-analyzer/postal/files/03_postal-0.70-c++0x-integr...

271 lines
7.0 KiB

diff -NrU5 postal-0.69.orig/bhm.cpp postal-0.69/bhm.cpp
--- postal-0.69.orig/bhm.cpp 2008-04-23 22:39:01.000000000 +0200
+++ postal-0.69/bhm.cpp 2008-04-24 01:31:54.000000000 +0200
@@ -7,10 +7,11 @@
#include <ctype.h>
#include <unistd.h>
#include <sys/wait.h>
#include <signal.h>
#include <stdio.h>
+#include <cstdlib>
#include <sys/poll.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <netinet/ip.h>
diff -NrU5 postal-0.69.orig/bhmusers.cpp postal-0.69/bhmusers.cpp
--- postal-0.69.orig/bhmusers.cpp 2008-04-10 03:36:27.000000000 +0200
+++ postal-0.69/bhmusers.cpp 2008-04-24 00:04:07.000000000 +0200
@@ -1,9 +1,10 @@
#include "bhmusers.h"
#include <stdio.h>
#include <cstring>
#include "expand.h"
+#include <cstdlib>
BHMUsers::BHMUsers(const char *userListFile)
{
char buf[1024];
FILE *fp = fopen(userListFile, "r");
diff -NrU5 postal-0.69.orig/bhmusers.h postal-0.69/bhmusers.h
--- postal-0.69.orig/bhmusers.h 2006-09-28 17:20:28.000000000 +0200
+++ postal-0.69/bhmusers.h 2008-04-24 00:14:05.000000000 +0200
@@ -4,16 +4,21 @@
using namespace std;
#include <string>
#include "conf.h"
+#ifdef HAVE_STDCXX_0X
+#include <unordered_map>
+#include <tr1/functional_hash.h>
+#else
#ifdef HAVE_EXT_HASH_MAP
using namespace __gnu_cxx;
#include <ext/hash_map>
#else
#include <hash_map.h>
#endif
+#endif
#include "postal.h"
typedef enum { eNone = 0, eDefer, eReject, eBounce, eGrey } USER_SMTP_ACTION;
@@ -21,10 +26,13 @@
{
USER_SMTP_ACTION action;
int sync_time;
} BHM_DATA;
+#ifdef HAVE_STDCXX_0X
+typedef unordered_map<string, BHM_DATA , hash<string> > NAME_MAP;
+#else
namespace __gnu_cxx
{
template<> struct hash< std::string >
{
size_t operator() ( const std::string &x ) const
@@ -33,10 +41,11 @@
}
};
}
typedef hash_map<string, BHM_DATA , hash<string> > NAME_MAP;
+#endif
class BHMUsers
{
public:
BHMUsers(const char *userListFile);
diff -NrU5 postal-0.69.orig/configure.in postal-0.69/configure.in
--- postal-0.69.orig/configure.in 2008-04-23 22:39:01.000000000 +0200
+++ postal-0.69/configure.in 2008-04-24 01:20:35.000000000 +0200
@@ -155,6 +155,98 @@
AC_CHECK_HEADERS(vector ext/hash_map)
dnl Checks for library functions.
+AC_DEFUN([AC_COMPILE_STDCXX_0X], [
+ AC_CACHE_CHECK(if g++ supports C++0x features without additional flags,
+ ac_cv_cxx_compile_cxx0x_native,
+ [AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ AC_TRY_COMPILE([
+ template <typename T>
+ struct check
+ {
+ static_assert(sizeof(int) <= sizeof(T), "not big enough");
+ };
+
+ typedef check<check<bool>> right_angle_brackets;
+
+ int a;
+ decltype(a) b;
+
+ typedef check<int> check_type;
+ check_type c;
+ check_type&& cr = c;],,
+ ac_cv_cxx_compile_cxx0x_native=yes, ac_cv_cxx_compile_cxx0x_native=no)
+ AC_LANG_RESTORE
+ ])
+
+ AC_CACHE_CHECK(if g++ supports C++0x features with -std=c++0x,
+ ac_cv_cxx_compile_cxx0x_cxx,
+ [AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ ac_save_CXXFLAGS="$CXXFLAGS"
+ CXXFLAGS="$CXXFLAGS -std=c++0x"
+ AC_TRY_COMPILE([
+ template <typename T>
+ struct check
+ {
+ static_assert(sizeof(int) <= sizeof(T), "not big enough");
+ };
+
+ typedef check<check<bool>> right_angle_brackets;
+
+ int a;
+ decltype(a) b;
+
+ typedef check<int> check_type;
+ check_type c;
+ check_type&& cr = c;],,
+ ac_cv_cxx_compile_cxx0x_cxx=yes, ac_cv_cxx_compile_cxx0x_cxx=no)
+ CXXFLAGS="$ac_save_CXXFLAGS"
+ AC_LANG_RESTORE
+ ])
+
+ AC_CACHE_CHECK(if g++ supports C++0x features with -std=gnu++0x,
+ ac_cv_cxx_compile_cxx0x_gxx,
+ [AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ ac_save_CXXFLAGS="$CXXFLAGS"
+ CXXFLAGS="$CXXFLAGS -std=gnu++0x"
+ AC_TRY_COMPILE([
+ template <typename T>
+ struct check
+ {
+ static_assert(sizeof(int) <= sizeof(T), "not big enough");
+ };
+
+ typedef check<check<bool>> right_angle_brackets;
+
+ int a;
+ decltype(a) b;
+
+ typedef check<int> check_type;
+ check_type c;
+ check_type&& cr = c;],,
+ ac_cv_cxx_compile_cxx0x_gxx=yes, ac_cv_cxx_compile_cxx0x_gxx=no)
+ CXXFLAGS="$ac_save_CXXFLAGS"
+ AC_LANG_RESTORE
+ ])
+
+ if test "$ac_cv_cxx_compile_cxx0x_native" = yes ||
+ test "$ac_cv_cxx_compile_cxx0x_cxx" = yes ||
+ test "$ac_cv_cxx_compile_cxx0x_gxx" = yes; then
+ AC_DEFINE(HAVE_STDCXX_0X,,[Define if g++ supports C++0x features. ])
+ fi
+])
+
+AC_COMPILE_STDCXX_0X
+
+AC_SUBST(cstd)
+cstd=
+if test "$ac_cv_cxx_compile_cxx0x_cxx" = yes; then
+ cstd=-std=c++0x
+fi
+
AC_OUTPUT(Makefile postal.h port.h postal.spec sun/pkginfo)
+
diff -NrU5 postal-0.69.orig/Makefile.in postal-0.69/Makefile.in
--- postal-0.69.orig/Makefile.in 2008-04-23 22:39:01.000000000 +0200
+++ postal-0.69/Makefile.in 2008-04-24 00:29:40.000000000 +0200
@@ -8,12 +8,12 @@
prefix=@prefix@
eprefix=@exec_prefix@
WFLAGS=-Wall -W -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -Wcast-qual -pedantic
WPLUS=-Woverloaded-virtual -ffor-scope
-CXX=@CXX@ $(CFLAGS) -O2 -g $(WFLAGS) $(WPLUS)
-CC=@CC@ $(CFLAGS) -O2 -g $(WFLAGS)
+CXX=@CXX@ @cstd@ $(CFLAGS) $(WFLAGS) $(WPLUS)
+CC=@CC@ $(CFLAGS) $(WFLAGS)
INSTALL=@INSTALL@
TESTEXE=ex-test
BASEOBJS=userlist.o thread.o results.o address.o tcp.o cmd5.o mutex.o logit.o expand.o @extra_objs@
diff -NrU5 postal-0.69.orig/postal.cpp postal-0.69/postal.cpp
--- postal-0.69.orig/postal.cpp 2007-01-14 05:40:23.000000000 +0100
+++ postal-0.69/postal.cpp 2008-04-24 01:30:49.000000000 +0200
@@ -6,10 +6,11 @@
#include "smtp.h"
#include <unistd.h>
#include <sys/wait.h>
#include <signal.h>
#include <stdio.h>
+#include <cstdlib>
#include "postal.h"
#include "logit.h"
#ifdef USE_GNUTLS
#include <errno.h>
#include <gcrypt.h>
diff -NrU5 postal-0.69.orig/smtp.cpp postal-0.69/smtp.cpp
--- postal-0.69.orig/smtp.cpp 2008-04-19 00:01:39.000000000 +0200
+++ postal-0.69/smtp.cpp 2008-04-24 00:14:49.000000000 +0200
@@ -7,10 +7,11 @@
#include <time.h>
#include "userlist.h"
#include "logit.h"
#include "results.h"
#include <cstring>
+#include <cstdlib>
smtpData::smtpData()
: m_quit("QUIT\r\n")
, m_randomLetters("abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ 1234567890 `~!@#$%^&*()-_=+[]{};:'\"|/?<>,")
, m_randomLen(strlen(m_randomLetters))
diff -NrU5 postal-0.69.orig/smtp.h postal-0.69/smtp.h
--- postal-0.69.orig/smtp.h 2008-04-19 00:01:23.000000000 +0200
+++ postal-0.69/smtp.h 2008-04-24 00:18:03.000000000 +0200
@@ -4,16 +4,20 @@
using namespace std;
#include <string>
#include <cstring>
#include <time.h>
#include "conf.h"
+#ifdef HAVE_STDCXX_0X
+#include <unordered_map>
+#else
#ifdef HAVE_EXT_HASH_MAP
using namespace __gnu_cxx;
#include <ext/hash_map>
#else
#include <hash_map.h>
#endif
+#endif
#include "tcp.h"
#include "mutex.h"
class results;
@@ -28,11 +32,15 @@
{
return (l1 == l2);
}
};
+#ifdef HAVE_STDCXX_0X
+typedef unordered_map<unsigned long, string *, hash<unsigned long>, eqlng> NAME_MAP;
+#else
typedef hash_map<unsigned long, string *, hash<unsigned long>, eqlng> NAME_MAP;
+#endif
class smtpData
{
public:
smtpData();