Merge remote-tracking branch 'upstream/develop' into develop

This commit is contained in:
Cristian Thiago Moecke 2014-03-13 04:31:34 -07:00
commit 56786d9e27
24 changed files with 139 additions and 44 deletions

View File

@ -4,7 +4,7 @@ compiler:
- clang - clang
before_install: before_install:
- sudo apt-get update -qq - sudo apt-get update -qq
- sudo DEBIAN_FRONTEND=noninteractive apt-get -qq -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade # - sudo DEBIAN_FRONTEND=noninteractive apt-get -qq -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade
- sudo apt-get install -qq -y unixodbc-dev libmysqlclient-dev - sudo apt-get install -qq -y unixodbc-dev libmysqlclient-dev
script: ./configure && make -s -j2 script: ./configure && make -s -j2

View File

@ -1,6 +1,6 @@
This is the changelog file for the POCO C++ Libraries. This is the changelog file for the POCO C++ Libraries.
Release 1.5.3 (2014-02-xx) Release 1.5.3 (2014-05-xx)
========================== ==========================
- fixed GH# 316: Poco::DateTimeFormatter::append() gives wrong result for - fixed GH# 316: Poco::DateTimeFormatter::append() gives wrong result for
@ -16,6 +16,26 @@ Release 1.5.3 (2014-02-xx)
have been changed to use Poco::Clock instead of Poco::Timestamp and are now have been changed to use Poco::Clock instead of Poco::Timestamp and are now
unaffected by system realtime clock changes. unaffected by system realtime clock changes.
- fixed GH# 350: Memory leak in Data/ODBC with BLOB - fixed GH# 350: Memory leak in Data/ODBC with BLOB
- Correctly set MySQL time_type for Poco::Data::Date.
- fixed GH #352: Removed redundant #includes and fixed spelling mistakes.
- fixed setting of MYSQL_BIND is_unsigned value.
- fixed GH #360: CMakeLists foundation: add Clock.cpp in the list of source files
- Add extern "C" around <net/if.h> on HPUX platform.
- added runtests.sh
- fixed CPPUNIT_IGNORE parsing
- fixed Glob from start path, for platforms not alowing transverse from root (Android)
- added NTPClient (Rangel Reale)
- added PowerShell build script
- added SmartOS build support
- fix warnings in headers
- XMLWriter: removed unnecessary apostrophe escaping (&apos)
- MongoDB: use Int32 for messageLength
- fixed GH #380: SecureSocket+DialogSocket crashes with SIGSEGV when timeout occours
- Improve RSADigestEngine, using Poco::Crypto::DigestEngine to calculate hash before signing
- added Poco::PBKDF2Engine
- added support for a 'Priority' attribute on cookies.
- GH #386: fixed bug in MailMessage without content-transfer-encoding header
- GH #384: ew hash algorithms support for RSADigestEngine
Release 1.5.2 (2013-09-16) Release 1.5.2 (2013-09-16)

View File

@ -36,6 +36,11 @@ Matej Knopp
Patrice Tarabbia Patrice Tarabbia
Lucas Clemente Lucas Clemente
Karl Reid Karl Reid
Pascal Bach
Cristian Thiago Moecke
Sergei Nikulov
Aaron Kaluszka
Iyed Bennour
-- --
$Id$ $Id$

View File

@ -78,6 +78,22 @@ void DigestEngineTest::testMD5()
assert (DigestEngine::digestToHex(engine.digest()) == "57edf4a22be3c955ac49da2e2107b67a"); assert (DigestEngine::digestToHex(engine.digest()) == "57edf4a22be3c955ac49da2e2107b67a");
} }
void DigestEngineTest::testSHA1()
{
DigestEngine engine("SHA1");
// test vectors from FIPS 180-1
engine.update("abc");
assert (DigestEngine::digestToHex(engine.digest()) == "a9993e364706816aba3e25717850c26c9cd0d89d");
engine.update("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq");
assert (DigestEngine::digestToHex(engine.digest()) == "84983e441c3bd26ebaae4aa1f95129e5e54670f1");
for (int i = 0; i < 1000000; ++i)
engine.update('a');
assert (DigestEngine::digestToHex(engine.digest()) == "34aa973cd4c4daa4f61eeb2bdbad27316534016f");
}
void DigestEngineTest::setUp() void DigestEngineTest::setUp()
{ {
@ -94,6 +110,7 @@ CppUnit::Test* DigestEngineTest::suite()
CppUnit::TestSuite* pSuite = new CppUnit::TestSuite("DigestEngineTest"); CppUnit::TestSuite* pSuite = new CppUnit::TestSuite("DigestEngineTest");
CppUnit_addTest(pSuite, DigestEngineTest, testMD5); CppUnit_addTest(pSuite, DigestEngineTest, testMD5);
CppUnit_addTest(pSuite, DigestEngineTest, testSHA1);
return pSuite; return pSuite;
} }

View File

@ -47,6 +47,7 @@ public:
~DigestEngineTest(); ~DigestEngineTest();
void testMD5(); void testMD5();
void testSHA1();
void setUp(); void setUp();
void tearDown(); void tearDown();

View File

@ -53,6 +53,7 @@ set( BASE_SRCS
src/DigestEngine.cpp src/DigestEngine.cpp
src/DigestStream.cpp src/DigestStream.cpp
src/DirectoryIterator.cpp src/DirectoryIterator.cpp
src/DirectoryIteratorStrategy.cpp
src/DirectoryWatcher.cpp src/DirectoryWatcher.cpp
src/Environment.cpp src/Environment.cpp
src/Error.cpp src/Error.cpp

View File

@ -120,6 +120,11 @@
#endif #endif
// Define to disable compilation of DirectoryWatcher
// on platforms with no inotify.
// #define POCO_NO_INOTIFY
// Following are options to remove certain features // Following are options to remove certain features
// to reduce library/executable size for smaller // to reduce library/executable size for smaller
// embedded platforms. By enabling these options, // embedded platforms. By enabling these options,

View File

@ -41,6 +41,11 @@
#include "Poco/Foundation.h" #include "Poco/Foundation.h"
#ifndef POCO_NO_INOTIFY
#include "Poco/File.h" #include "Poco/File.h"
#include "Poco/BasicEvent.h" #include "Poco/BasicEvent.h"
#include "Poco/Runnable.h" #include "Poco/Runnable.h"
@ -242,4 +247,8 @@ inline const File& DirectoryWatcher::directory() const
} // namespace Poco } // namespace Poco
#endif // POCO_NO_INOTIFY
#endif // Foundation_DirectoryWatcher_INCLUDED #endif // Foundation_DirectoryWatcher_INCLUDED

View File

@ -35,6 +35,11 @@
#include "Poco/DirectoryWatcher.h" #include "Poco/DirectoryWatcher.h"
#ifndef POCO_NO_INOTIFY
#include "Poco/Path.h" #include "Poco/Path.h"
#include "Poco/Glob.h" #include "Poco/Glob.h"
#include "Poco/DirectoryIterator.h" #include "Poco/DirectoryIterator.h"
@ -616,3 +621,6 @@ bool DirectoryWatcher::supportsMoveEvents() const
} // namespace Poco } // namespace Poco
#endif // POCO_NO_INOTIFY

View File

@ -53,6 +53,7 @@ src/HexBinaryTest.cpp
src/LRUCacheTest.cpp src/LRUCacheTest.cpp
src/LineEndingConverterTest.cpp src/LineEndingConverterTest.cpp
src/LinearHashTableTest.cpp src/LinearHashTableTest.cpp
src/ListMapTest.cpp
src/LocalDateTimeTest.cpp src/LocalDateTimeTest.cpp
src/LogStreamTest.cpp src/LogStreamTest.cpp
src/LoggerTest.cpp src/LoggerTest.cpp
@ -79,6 +80,7 @@ src/NumberFormatterTest.cpp
src/NumberParserTest.cpp src/NumberParserTest.cpp
src/PathTest.cpp src/PathTest.cpp
src/PatternFormatterTest.cpp src/PatternFormatterTest.cpp
src/PBKDF2EngineTest.cpp
src/PriorityEventTest.cpp src/PriorityEventTest.cpp
src/ProcessTest.cpp src/ProcessTest.cpp
src/ProcessesTestSuite.cpp src/ProcessesTestSuite.cpp

View File

@ -31,6 +31,11 @@
#include "DirectoryWatcherTest.h" #include "DirectoryWatcherTest.h"
#ifndef POCO_NO_INOTIFY
#include "CppUnit/TestCaller.h" #include "CppUnit/TestCaller.h"
#include "CppUnit/TestSuite.h" #include "CppUnit/TestSuite.h"
#include "Poco/DirectoryWatcher.h" #include "Poco/DirectoryWatcher.h"
@ -312,3 +317,6 @@ CppUnit::Test* DirectoryWatcherTest::suite()
return pSuite; return pSuite;
} }
#endif // POCO_NO_INOTIFY

View File

@ -37,6 +37,11 @@
#include "Poco/Foundation.h" #include "Poco/Foundation.h"
#ifndef POCO_NO_INOTIFY
#include "Poco/DirectoryWatcher.h" #include "Poco/DirectoryWatcher.h"
#include "Poco/Path.h" #include "Poco/Path.h"
#include "CppUnit/TestCase.h" #include "CppUnit/TestCase.h"
@ -80,4 +85,9 @@ private:
}; };
#endif // POCO_NO_INOTIFY
#endif // DirectoryWatcherTest_INCLUDED #endif // DirectoryWatcherTest_INCLUDED

View File

@ -45,7 +45,9 @@ CppUnit::Test* FilesystemTestSuite::suite()
pSuite->addTest(PathTest::suite()); pSuite->addTest(PathTest::suite());
pSuite->addTest(FileTest::suite()); pSuite->addTest(FileTest::suite());
pSuite->addTest(GlobTest::suite()); pSuite->addTest(GlobTest::suite());
#ifndef POCO_NO_INOTIFY
pSuite->addTest(DirectoryWatcherTest::suite()); pSuite->addTest(DirectoryWatcherTest::suite());
#endif // POCO_NO_INOTIFY
pSuite->addTest(DirectoryIteratorsTest::suite()); pSuite->addTest(DirectoryIteratorsTest::suite());
return pSuite; return pSuite;

View File

@ -92,41 +92,41 @@ void Stringifier::formatString(const std::string& value, std::ostream& out)
out << '"'; out << '"';
for (std::string::const_iterator it = value.begin(); it != value.end(); ++it) for (std::string::const_iterator it = value.begin(); it != value.end(); ++it)
{ {
switch (*it) if (*it == 0x20 ||
{ *it == 0x21 ||
case '"': (*it >= 0x23 && *it <= 0x2E) ||
(*it >= 0x30 && *it <= 0x5B) ||
(*it >= 0x5D && *it <= 0xFF))
out << *it;
else if (*it == '"')
out << "\\\""; out << "\\\"";
break; else if (*it == '\\')
case '\\':
out << "\\\\"; out << "\\\\";
break; else if (*it == '\b')
case '\b':
out << "\\b"; out << "\\b";
break; else if (*it == '\f')
case '\f':
out << "\\f"; out << "\\f";
break; else if (*it == '\n')
case '\n':
out << "\\n"; out << "\\n";
break; else if (*it == '\r')
case '\r':
out << "\\r"; out << "\\r";
break; else if (*it == '\t')
case '\t':
out << "\\t"; out << "\\t";
break; else if ( *it == '\0' )
default: out << "\\u0000";
{
if ( *it > 0 && *it <= 0x1F )
{
out << "\\u" << std::hex << std::uppercase << std::setfill('0') << std::setw(4) << static_cast<int>(*it);
}
else else
{ {
out << *it; const char *hexdigits = "0123456789ABCDEF";
} unsigned long u = (std::min)(static_cast<unsigned long>(static_cast<unsigned char>(*it)), 0xFFFFul);
break; int d1 = u / 4096; u -= d1 * 4096;
} int d2 = u / 256; u -= d2 * 256;
int d3 = u / 16; u -= d3 * 16;
int d4 = u;
out << "\\u";
out << hexdigits[d1];
out << hexdigits[d2];
out << hexdigits[d3];
out << hexdigits[d4];
} }
} }
out << '"'; out << '"';

View File

@ -76,7 +76,7 @@ public:
void write(BinaryWriter& writer); void write(BinaryWriter& writer);
/// Writes the header /// Writes the header
std::size_t getMessageLength() const; Int32 getMessageLength() const;
/// Returns the message length /// Returns the message length
OpCode opCode() const; OpCode opCode() const;
@ -95,10 +95,10 @@ private:
MessageHeader(OpCode opcode); MessageHeader(OpCode opcode);
/// Constructor. /// Constructor.
void setMessageLength(std::size_t length); void setMessageLength(Int32 length);
/// Sets the message length /// Sets the message length
std::size_t _messageLength; Int32 _messageLength;
Int32 _requestID; Int32 _requestID;
Int32 _responseTo; Int32 _responseTo;
OpCode _opCode; OpCode _opCode;
@ -113,14 +113,15 @@ inline MessageHeader::OpCode MessageHeader::opCode() const
} }
inline std::size_t MessageHeader::getMessageLength() const inline Int32 MessageHeader::getMessageLength() const
{ {
return _messageLength; return _messageLength;
} }
inline void MessageHeader::setMessageLength(std::size_t length) inline void MessageHeader::setMessageLength(Int32 length)
{ {
poco_assert (_messageLength >= 0);
_messageLength = MSG_HEADER_SIZE + length; _messageLength = MSG_HEADER_SIZE + length;
} }

View File

@ -62,9 +62,13 @@ set( BASE_SRCS
src/Net.cpp src/Net.cpp
src/NetException.cpp src/NetException.cpp
src/NetworkInterface.cpp src/NetworkInterface.cpp
src/NTPClient.cpp
src/NTPEventArgs.cpp
src/NTPPacket.cpp
src/NullPartHandler.cpp src/NullPartHandler.cpp
src/PartHandler.cpp src/PartHandler.cpp
src/PartSource.cpp src/PartSource.cpp
src/PartStore.cpp
src/POP3ClientSession.cpp src/POP3ClientSession.cpp
src/QuotedPrintableDecoder.cpp src/QuotedPrintableDecoder.cpp
src/QuotedPrintableEncoder.cpp src/QuotedPrintableEncoder.cpp

View File

@ -39,6 +39,8 @@ src/NameValueCollectionTest.cpp
src/NetCoreTestSuite.cpp src/NetCoreTestSuite.cpp
src/NetTestSuite.cpp src/NetTestSuite.cpp
src/NetworkInterfaceTest.cpp src/NetworkInterfaceTest.cpp
src/NTPClientTest.cpp
src/NTPClientTestSuite.cpp
src/POP3ClientSessionTest.cpp src/POP3ClientSessionTest.cpp
src/QuotedPrintableTest.cpp src/QuotedPrintableTest.cpp
src/RawSocketTest.cpp src/RawSocketTest.cpp

View File

@ -21,4 +21,4 @@ shift
dir4=$1 dir4=$1
shift shift
CC -xM1 $@ $source | sed "s#\(.*\.o\)#$dir1/\1 $dir2/\1 $dir3/\1 $dir4/\1#" >$target CC -xM1 $@ $source | sed "s#\(.*\.o$\)#$dir1/\1 $dir2/\1 $dir3/\1 $dir4/\1#" >$target

View File

@ -23,5 +23,5 @@ shift
tmpfile=`basename $target` tmpfile=`basename $target`
aCC -E +maked $@ $source >/dev/null aCC -E +maked $@ $source >/dev/null
sed "s#\(.*\.o\)#$dir1/\1 $dir2/\1 $dir3/\1 $dir4/\1#" <$tmpfile >$target sed "s#\(.*\.o$\)#$dir1/\1 $dir2/\1 $dir3/\1 $dir4/\1#" <$tmpfile >$target
rm $tmpfile rm $tmpfile

View File

@ -28,4 +28,4 @@ else
CLANG=clang++ CLANG=clang++
fi fi
$CLANG -MM $@ $source | sed "s#\(.*\.o\)#$dir1/\1 $dir2/\1 $dir3/\1 $dir4/\1#" >$target $CLANG -MM $@ $source | sed "s#\(.*\.o$\)#$dir1/\1 $dir2/\1 $dir3/\1 $dir4/\1#" >$target

View File

@ -21,4 +21,4 @@ shift
dir4=$1 dir4=$1
shift shift
cxx -M $@ $source | sed "s#\(.*\.o\)#$dir1/\1 $dir2/\1 $dir3/\1 $dir4/\1#" >$target cxx -M $@ $source | sed "s#\(.*\.o$\)#$dir1/\1 $dir2/\1 $dir3/\1 $dir4/\1#" >$target

View File

@ -21,4 +21,4 @@ shift
dir4=$1 dir4=$1
shift shift
$CC -MM $@ $source | sed "s#\(.*\.o\)#$dir1/\1 $dir2/\1 $dir3/\1 $dir4/\1#" >$target $CC -MM $@ $source | sed "s#\(.*\.o$\)#$dir1/\1 $dir2/\1 $dir3/\1 $dir4/\1#" >$target

View File

@ -20,4 +20,4 @@ shift
dir4=$1 dir4=$1
shift shift
$CC -E -Wp,-MM $@ $source | sed "s#\(.*\.o\)#$dir1/\1 $dir2/\1 $dir3/\1 $dir4/\1#" >$target $CC -E -Wp,-MM $@ $source | sed "s#\(.*\.o$\)#$dir1/\1 $dir2/\1 $dir3/\1 $dir4/\1#" >$target

View File

@ -27,5 +27,5 @@ $CXX -qmakedep -E -w $@ $cwd/$source >/dev/null
ufile=`basename $source` ufile=`basename $source`
ufile=`echo $ufile | sed "s#\.cpp#\.u#"` ufile=`echo $ufile | sed "s#\.cpp#\.u#"`
cat $ufile | sort | uniq | grep -v '/usr/include' | grep -v '/usr/vacpp' | sed "s#\(.*\.o\)#$dir1/\1 $dir2/\1 $dir3/\1 $dir4/\1#" >$target cat $ufile | sort | uniq | grep -v '/usr/include' | grep -v '/usr/vacpp' | sed "s#\(.*\.o$\)#$dir1/\1 $dir2/\1 $dir3/\1 $dir4/\1#" >$target