diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/vmime/contentDispositionField.cpp | 10 | ||||
-rw-r--r-- | src/vmime/contentTypeField.cpp | 6 | ||||
-rw-r--r-- | src/vmime/platforms/posix/posixHandler.cpp | 6 | ||||
-rw-r--r-- | src/vmime/platforms/windows/windowsSocket.cpp | 15 | ||||
-rw-r--r-- | src/vmime/platforms/windows/windowsSocket.hpp | 11 | ||||
-rw-r--r-- | src/vmime/utility/path.cpp | 9 | ||||
-rw-r--r-- | src/vmime/word.cpp | 9 | ||||
-rw-r--r-- | src/vmime/word.hpp | 8 |
8 files changed, 44 insertions, 30 deletions
diff --git a/src/vmime/contentDispositionField.cpp b/src/vmime/contentDispositionField.cpp index 33234be8..2331b606 100644 --- a/src/vmime/contentDispositionField.cpp +++ b/src/vmime/contentDispositionField.cpp @@ -42,7 +42,7 @@ contentDispositionField::contentDispositionField(contentDispositionField&) bool contentDispositionField::hasCreationDate() const { - return bool(findParameter("creation-date")); + return hasParameter("creation-date"); } @@ -65,7 +65,7 @@ void contentDispositionField::setCreationDate(const datetime& creationDate) bool contentDispositionField::hasModificationDate() const { - return bool(findParameter("modification-date")); + return hasParameter("modification-date"); } @@ -88,7 +88,7 @@ void contentDispositionField::setModificationDate(const datetime& modificationDa bool contentDispositionField::hasReadDate() const { - return bool(findParameter("read-date")); + return hasParameter("read-date"); } @@ -111,7 +111,7 @@ void contentDispositionField::setReadDate(const datetime& readDate) bool contentDispositionField::hasFilename() const { - return bool(findParameter("filename")); + return hasParameter("filename"); } @@ -134,7 +134,7 @@ void contentDispositionField::setFilename(const word& filename) bool contentDispositionField::hasSize() const { - return bool(findParameter("size")); + return hasParameter("size"); } diff --git a/src/vmime/contentTypeField.cpp b/src/vmime/contentTypeField.cpp index c36535f3..e15608cc 100644 --- a/src/vmime/contentTypeField.cpp +++ b/src/vmime/contentTypeField.cpp @@ -42,7 +42,7 @@ contentTypeField::contentTypeField(contentTypeField&) bool contentTypeField::hasBoundary() const { - return bool(findParameter("boundary")); + return hasParameter("boundary"); } @@ -65,7 +65,7 @@ void contentTypeField::setBoundary(const string& boundary) bool contentTypeField::hasCharset() const { - return bool(findParameter("charset")); + return hasParameter("charset"); } @@ -88,7 +88,7 @@ void contentTypeField::setCharset(const charset& ch) bool contentTypeField::hasReportType() const { - return bool(findParameter("report-type")); + return hasParameter("report-type"); } diff --git a/src/vmime/platforms/posix/posixHandler.cpp b/src/vmime/platforms/posix/posixHandler.cpp index 7ab0341a..e0bfd27f 100644 --- a/src/vmime/platforms/posix/posixHandler.cpp +++ b/src/vmime/platforms/posix/posixHandler.cpp @@ -168,11 +168,7 @@ const vmime::charset posixHandler::getLocalCharset() const { const PLockHelper lock; - const char* prevLocale = ::setlocale(LC_ALL, ""); - vmime::charset ch(::nl_langinfo(CODESET)); - ::setlocale(LC_ALL, prevLocale); - - return (ch); + return vmime::charset(::nl_langinfo(CODESET)); } diff --git a/src/vmime/platforms/windows/windowsSocket.cpp b/src/vmime/platforms/windows/windowsSocket.cpp index 40e69363..cb96481a 100644 --- a/src/vmime/platforms/windows/windowsSocket.cpp +++ b/src/vmime/platforms/windows/windowsSocket.cpp @@ -31,6 +31,7 @@ #include "vmime/platforms/windows/windowsSocket.hpp" +#include "vmime/utility/stringUtils.hpp" #include "vmime/exception.hpp" #include <ws2tcpip.h> @@ -239,11 +240,11 @@ size_t windowsSocket::getBlockSize() const void windowsSocket::receive(vmime::string& buffer) { const size_t size = receiveRaw(m_buffer, sizeof(m_buffer)); - buffer = vmime::string(m_buffer, size); + buffer = utility::stringUtils::makeStringFromBytes(m_buffer, size); } -size_t windowsSocket::receiveRaw(char* buffer, const size_t count) +size_t windowsSocket::receiveRaw(byte_t* buffer, const size_t count) { m_status &= ~STATUS_WOULDBLOCK; @@ -275,7 +276,7 @@ size_t windowsSocket::receiveRaw(char* buffer, const size_t count) } // Read available data - int ret = ::recv(m_desc, buffer, count, 0); + int ret = ::recv(m_desc, reinterpret_cast <char*>(buffer), count, 0); if (ret == SOCKET_ERROR) { @@ -317,7 +318,7 @@ void windowsSocket::send(const char* str) } -void windowsSocket::sendRaw(const char* buffer, const size_t count) +void windowsSocket::sendRaw(const byte_t* buffer, const size_t count) { m_status &= ~STATUS_WOULDBLOCK; @@ -325,7 +326,7 @@ void windowsSocket::sendRaw(const char* buffer, const size_t count) while (size > 0) { - const int ret = ::send(m_desc, buffer, size, 0); + const int ret = ::send(m_desc, reinterpret_cast <const char*>(buffer), size, 0); if (ret == SOCKET_ERROR) { @@ -350,11 +351,11 @@ void windowsSocket::sendRaw(const char* buffer, const size_t count) } -size_t windowsSocket::sendRawNonBlocking(const char* buffer, const size_t count) +size_t windowsSocket::sendRawNonBlocking(const byte_t* buffer, const size_t count) { m_status &= ~STATUS_WOULDBLOCK; - const int ret = ::send(m_desc, buffer, count, 0); + const int ret = ::send(m_desc, reinterpret_cast <const char*>(buffer), count, 0); if (ret == SOCKET_ERROR) { diff --git a/src/vmime/platforms/windows/windowsSocket.hpp b/src/vmime/platforms/windows/windowsSocket.hpp index e3f43b7c..cb8a6e67 100644 --- a/src/vmime/platforms/windows/windowsSocket.hpp +++ b/src/vmime/platforms/windows/windowsSocket.hpp @@ -55,11 +55,12 @@ public: void disconnect(); void receive(vmime::string& buffer); - size_t receiveRaw(char* buffer, const size_t count); - + size_t receiveRaw(byte_t* buffer, const size_t count); + void send(const vmime::string& buffer); - void sendRaw(const char* buffer, const size_t count); - size_t sendRawNonBlocking(const char* buffer, const size_t count); + void send(const char* str); + void sendRaw(const byte_t* buffer, const size_t count); + size_t sendRawNonBlocking(const byte_t* buffer, const size_t count); size_t getBlockSize() const; @@ -85,7 +86,7 @@ private: shared_ptr <vmime::net::timeoutHandler> m_timeoutHandler; - char m_buffer[65536]; + byte_t m_buffer[65536]; SOCKET m_desc; unsigned int m_status; diff --git a/src/vmime/utility/path.cpp b/src/vmime/utility/path.cpp index 9f746d54..59685866 100644 --- a/src/vmime/utility/path.cpp +++ b/src/vmime/utility/path.cpp @@ -134,8 +134,7 @@ bool path::operator==(const path& p) const bool equal = true; for ( ; equal && i != m_list.end() ; ++i, ++j) - //equal = (*i == *j); - equal = ((*i).getBuffer() == (*j).getBuffer()); + equal = ((*i).isEquivalent(*j)); return (equal); } @@ -197,7 +196,7 @@ bool path::isDirectParentOf(const path& p) const bool equal = true; for (list::size_type i = 0 ; equal && i < m_list.size() ; ++i) - equal = (m_list[i] == p.m_list[i]); + equal = (m_list[i].isEquivalent(p.m_list[i])); return (equal); } @@ -211,7 +210,7 @@ bool path::isParentOf(const path& p) const bool equal = true; for (list::size_type i = 0 ; equal && i < m_list.size() ; ++i) - equal = (m_list[i] == p.m_list[i]); + equal = (m_list[i].isEquivalent(p.m_list[i])); return (equal); } @@ -226,7 +225,7 @@ void path::renameParent(const path& oldPath, const path& newPath) list::size_type i; for (i = 0 ; equal && i < oldPath.m_list.size() ; ++i) - equal = (m_list[i] == oldPath.m_list[i]); + equal = (m_list[i].isEquivalent(oldPath.m_list[i])); if (i != oldPath.m_list.size()) return; diff --git a/src/vmime/word.cpp b/src/vmime/word.cpp index 2ee4d3e7..7944fc77 100644 --- a/src/vmime/word.cpp +++ b/src/vmime/word.cpp @@ -723,8 +723,17 @@ bool word::operator!=(const word& w) const } +bool word::isEquivalent(const word& other) const +{ + return getConvertedText(charset(charsets::UTF_8)) == other.getConvertedText(charset(charsets::UTF_8)); +} + + const string word::getConvertedText(const charset& dest, const charsetConverterOptions& opts) const { + if (dest == m_charset) + return m_buffer; // no conversion needed + string out; try diff --git a/src/vmime/word.hpp b/src/vmime/word.hpp index a6e2402e..4122228d 100644 --- a/src/vmime/word.hpp +++ b/src/vmime/word.hpp @@ -85,6 +85,14 @@ public: */ void setCharset(const charset& ch); + /** Returns whether two words actually represent the same text, + * regardless of their charset. + * + * @param other word to compare to + * @return true if the two words represent the same text, or false otherwise + */ + bool isEquivalent(const word& other) const; + word& operator=(const word& w); word& operator=(const string& s); |