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 #include #include #include #include +#include #include #include #include #include #include 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 #include #include "expand.h" +#include 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 #include "conf.h" +#ifdef HAVE_STDCXX_0X +#include +#include +#else #ifdef HAVE_EXT_HASH_MAP using namespace __gnu_cxx; #include #else #include #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 > 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 > 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 + struct check + { + static_assert(sizeof(int) <= sizeof(T), "not big enough"); + }; + + typedef check> right_angle_brackets; + + int a; + decltype(a) b; + + typedef check 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 + struct check + { + static_assert(sizeof(int) <= sizeof(T), "not big enough"); + }; + + typedef check> right_angle_brackets; + + int a; + decltype(a) b; + + typedef check 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 + struct check + { + static_assert(sizeof(int) <= sizeof(T), "not big enough"); + }; + + typedef check> right_angle_brackets; + + int a; + decltype(a) b; + + typedef check 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 #include #include #include +#include #include "postal.h" #include "logit.h" #ifdef USE_GNUTLS #include #include 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 #include "userlist.h" #include "logit.h" #include "results.h" #include +#include 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 #include #include #include "conf.h" +#ifdef HAVE_STDCXX_0X +#include +#else #ifdef HAVE_EXT_HASH_MAP using namespace __gnu_cxx; #include #else #include #endif +#endif #include "tcp.h" #include "mutex.h" class results; @@ -28,11 +32,15 @@ { return (l1 == l2); } }; +#ifdef HAVE_STDCXX_0X +typedef unordered_map, eqlng> NAME_MAP; +#else typedef hash_map, eqlng> NAME_MAP; +#endif class smtpData { public: smtpData();