How can I remove the socket dependency from vmime library to use our own socket implementation.

53 views
Skip to first unread message

appap...@gmail.com

unread,
Dec 18, 2014, 8:46:06 AM12/18/14
to vm...@googlegroups.com
I am currently working on vmime library for my other project.
So I am getting hands dirty with vmime.
Is there any easy way to remove the socket support from vmime?
I have tried it by disabling the macro:
VMIME_HAVE_MESSAGING_FEATURES and left with lot of below compilation errors
Any further idea how to achieve this work?.

#############
vmime\src\vmime/net/messageSet.hpp(58): error C2504: 'object' : base class undefined
vmime\src\vmime/net/messageSet.hpp(143): error C2653: 'message' : is not a class or namespace name
vmime\src\vmime/net/messageSet.hpp(143): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
vmime\src\vmime/net/messageSet.hpp(143): error C2143: syntax error : missing ',' before '&'
vmime\src\vmime/net/messageSet.hpp(151): error C2653: 'message' : is not a class or namespace name
vmime\src\vmime/net/messageSet.hpp(151): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
vmime\src\vmime/net/messageSet.hpp(151): error C2143: syntax error : missing ',' before '&'
vmime\src\vmime/net/messageSet.hpp(151): error C2535: 'vmime::net::UIDMessageRange::UIDMessageRange(const int)' : member function already defined or declared
1> C:\Users\rappapurapu\Desktop\mingleClient\visualStudioProject\mobileclient\fgmsp\external\vmime\src\vmime/net/messageSet.hpp(143) : see declaration of 'vmime::net::UIDMessageRange::UIDMessageRange'
vmime\src\vmime/net/messageSet.hpp(163): error C2653: 'message' : is not a class or namespace name
vmime\src\vmime/net/messageSet.hpp(163): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
vmime\src\vmime/net/messageSet.hpp(163): error C2146: syntax error : missing ';' before identifier 'getFirst'
vmime\src\vmime/net/messageSet.hpp(163): warning C4183: 'getFirst': missing return type; assumed to be a member function returning 'int'
vmime\src\vmime/net/messageSet.hpp(170): error C2653: 'message' : is not a class or namespace name
vmime\src\vmime/net/messageSet.hpp(170): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
vmime\src\vmime/net/messageSet.hpp(170): error C2146: syntax error : missing ';' before identifier 'getLast'
vmime\src\vmime/net/messageSet.hpp(170): error C2086: 'const int vmime::net::UIDMessageRange::uid' : redefinition
1> C:\Users\rappapurapu\Desktop\mingleClient\visualStudioProject\mobileclient\fgmsp\external\vmime\src\vmime/net/messageSet.hpp(163) : see declaration of 'vmime::net::UIDMessageRange::uid'
vmime\src\vmime/net/messageSet.hpp(170): warning C4183: 'getLast': missing return type; assumed to be a member function returning 'int'
vmime\src\vmime/net/messageSet.hpp(178): error C2653: 'message' : is not a class or namespace name
vmime\src\vmime/net/messageSet.hpp(178): error C2146: syntax error : missing ';' before identifier 'm_first'
vmime\src\vmime/net/messageSet.hpp(178): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
vmime\src\vmime/net/messageSet.hpp(178): error C2143: syntax error : missing ';' before ','
vmime\src\vmime/net/messageSet.hpp(178): error C2238: unexpected token(s) preceding ';'
vmime\src\vmime/net/messageSet.hpp(210): error C2504: 'object' : base class undefined
vmime\src\vmime/net/messageSet.hpp(255): error C2039: 'vector' : is not a member of 'std'
vmime\src\vmime/net/messageSet.hpp(255): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
vmime\src\vmime/net/messageSet.hpp(255): error C2143: syntax error : missing ',' before '<'
vmime\src\vmime/net/messageSet.hpp(255): error C2535: 'vmime::net::messageSet vmime::net::messageSet::byNumber(const int)' : member function already defined or declared
1> C:\Users\rappapurapu\Desktop\mingleClient\visualStudioProject\mobileclient\fgmsp\external\vmime\src\vmime/net/messageSet.hpp(229) : see declaration of 'vmime::net::messageSet::byNumber'
vmime\src\vmime/net/messageSet.hpp(263): error C2653: 'message' : is not a class or namespace name
vmime\src\vmime/net/messageSet.hpp(263): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
vmime\src\vmime/net/messageSet.hpp(263): error C2143: syntax error : missing ',' before '&'
vmime\src\vmime/net/messageSet.hpp(273): error C2653: 'message' : is not a class or namespace name
vmime\src\vmime/net/messageSet.hpp(273): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
vmime\src\vmime/net/messageSet.hpp(273): error C2143: syntax error : missing ',' before '&'
vmime\src\vmime/net/messageSet.hpp(273): error C2535: 'vmime::net::messageSet vmime::net::messageSet::byUID(const int)' : member function already defined or declared
1> C:\Users\rappapurapu\Desktop\mingleClient\visualStudioProject\mobileclient\fgmsp\external\vmime\src\vmime/net/messageSet.hpp(263) : see declaration of 'vmime::net::messageSet::byUID'
vmime\src\vmime/net/messageSet.hpp(288): error C2039: 'vector' : is not a member of 'std'
vmime\src\vmime/net/messageSet.hpp(288): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
vmime\src\vmime/net/messageSet.hpp(288): error C2143: syntax error : missing ',' before '<'
vmime\src\vmime/net/messageSet.hpp(288): error C2535: 'vmime::net::messageSet vmime::net::messageSet::byUID(const int)' : member function already defined or declared
1> C:\Users\rappapurapu\Desktop\mingleClient\visualStudioProject\mobileclient\fgmsp\external\vmime\src\vmime/net/messageSet.hpp(263) : see declaration of 'vmime::net::messageSet::byUID'
vmime\src\vmime/net/messageSet.hpp(346): error C2039: 'vector' : is not a member of 'std'
vmime\src\vmime/net/messageSet.hpp(346): error C2143: syntax error : missing ';' before '<'
vmime\src\vmime/net/messageSet.hpp(346): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
vmime\src\vmime/net/messageSet.hpp(346): error C2238: unexpected token(s) preceding ';'
vmime\src\vmime\net\messageSet.cpp(99): error C2653: 'message' : is not a class or namespace name
vmime\src\vmime\net\messageSet.cpp(99): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
vmime\src\vmime\net\messageSet.cpp(99): error C2143: syntax error : missing ',' before '&'
vmime\src\vmime\net\messageSet.cpp(101): error C2758: 'vmime::net::UIDMessageRange::uid' : a member of reference type must be initialized
1> C:\Users\rappapurapu\Desktop\mingleClient\visualStudioProject\mobileclient\fgmsp\external\vmime\src\vmime/net/messageSet.hpp(163) : see declaration of 'vmime::net::UIDMessageRange::uid'
vmime\src\vmime\net\messageSet.cpp(101): error C2614: 'vmime::net::UIDMessageRange' : illegal member initialization: 'm_first' is not a base or member
vmime\src\vmime\net\messageSet.cpp(101): error C2614: 'vmime::net::UIDMessageRange' : illegal member initialization: 'm_last' is not a base or member
vmime\src\vmime\net\messageSet.cpp(105): error C2653: 'message' : is not a class or namespace name
vmime\src\vmime\net\messageSet.cpp(105): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
vmime\src\vmime\net\messageSet.cpp(105): error C2143: syntax error : missing ',' before '&'
vmime\src\vmime\net\messageSet.cpp(106): error C2084: function 'vmime::net::UIDMessageRange::UIDMessageRange(const int)' already has a body
1> C:\Users\rappapurapu\Desktop\mingleClient\visualStudioProject\mobileclient\fgmsp\external\vmime\src\vmime/net/messageSet.hpp(143) : see previous definition of '{ctor}'
vmime\src\vmime\net\messageSet.cpp(106): error C2065: 'first' : undeclared identifier
vmime\src\vmime\net\messageSet.cpp(106): error C2065: 'last' : undeclared identifier
vmime\src\vmime\net\messageSet.cpp(107): error C2758: 'vmime::net::UIDMessageRange::uid' : a member of reference type must be initialized
1> C:\Users\rappapurapu\Desktop\mingleClient\visualStudioProject\mobileclient\fgmsp\external\vmime\src\vmime/net/messageSet.hpp(163) : see declaration of 'vmime::net::UIDMessageRange::uid'
vmime\src\vmime\net\messageSet.cpp(107): error C2614: 'vmime::net::UIDMessageRange' : illegal member initialization: 'm_first' is not a base or member
vmime\src\vmime\net\messageSet.cpp(107): error C2614: 'vmime::net::UIDMessageRange' : illegal member initialization: 'm_last' is not a base or member
vmime\src\vmime\net\messageSet.cpp(112): error C2039: 'm_first' : is not a member of 'vmime::net::UIDMessageRange'
1> C:\Users\rappapurapu\Desktop\mingleClient\visualStudioProject\mobileclient\fgmsp\external\vmime\src\vmime/net/messageSet.hpp(135) : see declaration of 'vmime::net::UIDMessageRange'
vmime\src\vmime\net\messageSet.cpp(112): error C2039: 'm_last' : is not a member of 'vmime::net::UIDMessageRange'
1> C:\Users\rappapurapu\Desktop\mingleClient\visualStudioProject\mobileclient\fgmsp\external\vmime\src\vmime/net/messageSet.hpp(135) : see declaration of 'vmime::net::UIDMessageRange'
vmime\src\vmime\net\messageSet.cpp(113): error C2758: 'vmime::net::UIDMessageRange::uid' : a member of reference type must be initialized
1> C:\Users\rappapurapu\Desktop\mingleClient\visualStudioProject\mobileclient\fgmsp\external\vmime\src\vmime/net/messageSet.hpp(163) : see declaration of 'vmime::net::UIDMessageRange::uid'
vmime\src\vmime\net\messageSet.cpp(113): error C2614: 'vmime::net::UIDMessageRange' : illegal member initialization: 'm_first' is not a base or member
vmime\src\vmime\net\messageSet.cpp(113): error C2614: 'vmime::net::UIDMessageRange' : illegal member initialization: 'm_last' is not a base or member
vmime\src\vmime\net\messageSet.cpp(117): error C2653: 'message' : is not a class or namespace name
vmime\src\vmime\net\messageSet.cpp(117): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
vmime\src\vmime\net\messageSet.cpp(117): error C2143: syntax error : missing ';' before 'vmime::net::UIDMessageRange::getFirst'
vmime\src\vmime\net\messageSet.cpp(118): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
vmime\src\vmime\net\messageSet.cpp(119): error C2065: 'm_first' : undeclared identifier
vmime\src\vmime\net\messageSet.cpp(123): error C2653: 'message' : is not a class or namespace name
vmime\src\vmime\net\messageSet.cpp(123): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
vmime\src\vmime\net\messageSet.cpp(123): error C2143: syntax error : missing ';' before 'vmime::net::UIDMessageRange::getLast'
vmime\src\vmime\net\messageSet.cpp(123): error C2086: 'const int vmime::net::uid' : redefinition
1> C:\Users\rappapurapu\Desktop\mingleClient\visualStudioProject\mobileclient\fgmsp\external\vmime\src\vmime\net\messageSet.cpp(117) : see declaration of 'vmime::net::uid'
vmime\src\vmime\net\messageSet.cpp(124): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
vmime\src\vmime\net\messageSet.cpp(125): error C2065: 'm_last' : undeclared identifier
vmime\src\vmime\net\messageSet.cpp(151): error C2614: 'vmime::net::messageSet' : illegal member initialization: 'object' is not a base or member
vmime\src\vmime\net\messageSet.cpp(152): error C2065: 'm_ranges' : undeclared identifier
vmime\src\vmime\net\messageSet.cpp(152): error C2228: left of '.resize' must have class/struct/union
1> type is 'unknown-type'
vmime\src\vmime\net\messageSet.cpp(152): error C2039: 'm_ranges' : is not a member of 'vmime::net::messageSet'
1> C:\Users\rappapurapu\Desktop\mingleClient\visualStudioProject\mobileclient\fgmsp\external\vmime\src\vmime/net/messageSet.hpp(209) : see declaration of 'vmime::net::messageSet'
vmime\src\vmime\net\messageSet.cpp(152): error C2228: left of '.size' must have class/struct/union
vmime\src\vmime\net\messageSet.cpp(154): error C2039: 'm_ranges' : is not a member of 'vmime::net::messageSet'
1> C:\Users\rappapurapu\Desktop\mingleClient\visualStudioProject\mobileclient\fgmsp\external\vmime\src\vmime/net/messageSet.hpp(209) : see declaration of 'vmime::net::messageSet'
vmime\src\vmime\net\messageSet.cpp(154): error C2228: left of '.size' must have class/struct/union
vmime\src\vmime\net\messageSet.cpp(155): error C2065: 'm_ranges' : undeclared identifier
vmime\src\vmime\net\messageSet.cpp(155): error C2039: 'm_ranges' : is not a member of 'vmime::net::messageSet'
1> C:\Users\rappapurapu\Desktop\mingleClient\visualStudioProject\mobileclient\fgmsp\external\vmime\src\vmime/net/messageSet.hpp(209) : see declaration of 'vmime::net::messageSet'
vmime\src\vmime\net\messageSet.cpp(155): error C2227: left of '->clone' must point to class/struct/union/generic type
vmime\src\vmime\net\messageSet.cpp(161): error C2065: 'm_ranges' : undeclared identifier
vmime\src\vmime\net\messageSet.cpp(161): error C2228: left of '.size' must have class/struct/union
1> type is 'unknown-type'
vmime\src\vmime\net\messageSet.cpp(162): error C2065: 'm_ranges' : undeclared identifier
vmime\src\vmime\net\messageSet.cpp(177): error C2039: 'm_ranges' : is not a member of 'vmime::net::messageSet'
1> C:\Users\rappapurapu\Desktop\mingleClient\visualStudioProject\mobileclient\fgmsp\external\vmime\src\vmime/net/messageSet.hpp(209) : see declaration of 'vmime::net::messageSet'
vmime\src\vmime\net\messageSet.cpp(177): error C2228: left of '.push_back' must have class/struct/union
vmime\src\vmime\net\messageSet.cpp(187): error C2039: 'm_ranges' : is not a member of 'vmime::net::messageSet'
1> C:\Users\rappapurapu\Desktop\mingleClient\visualStudioProject\mobileclient\fgmsp\external\vmime\src\vmime/net/messageSet.hpp(209) : see declaration of 'vmime::net::messageSet'
vmime\src\vmime\net\messageSet.cpp(187): error C2228: left of '.push_back' must have class/struct/union
vmime\src\vmime\net\messageSet.cpp(194): error C2039: 'vector' : is not a member of 'std'
vmime\src\vmime\net\messageSet.cpp(194): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
vmime\src\vmime\net\messageSet.cpp(194): error C2143: syntax error : missing ',' before '<'
vmime\src\vmime\net\messageSet.cpp(195): error C2084: function 'vmime::net::messageSet vmime::net::messageSet::byNumber(const int)' already has a body
1> C:\Users\rappapurapu\Desktop\mingleClient\visualStudioProject\mobileclient\fgmsp\external\vmime\src\vmime/net/messageSet.hpp(229) : see previous definition of 'byNumber'
vmime\src\vmime\net\messageSet.cpp(197): error C2039: 'vector' : is not a member of 'std'
vmime\src\vmime\net\messageSet.cpp(197): error C2062: type 'int' unexpected
vmime\src\vmime\net\messageSet.cpp(199): error C2065: 'sortedNumbers' : undeclared identifier
vmime\src\vmime\net\messageSet.cpp(199): error C2228: left of '.resize' must have class/struct/union
1> type is 'unknown-type'
vmime\src\vmime\net\messageSet.cpp(199): error C2065: 'numbers' : undeclared identifier
vmime\src\vmime\net\messageSet.cpp(199): error C2228: left of '.size' must have class/struct/union
1> type is 'unknown-type'
vmime\src\vmime\net\messageSet.cpp(201): error C2065: 'numbers' : undeclared identifier
vmime\src\vmime\net\messageSet.cpp(201): error C2228: left of '.begin' must have class/struct/union
1> type is 'unknown-type'
vmime\src\vmime\net\messageSet.cpp(201): error C2228: left of '.end' must have class/struct/union
1> type is 'unknown-type'
vmime\src\vmime\net\messageSet.cpp(201): error C2065: 'sortedNumbers' : undeclared identifier
vmime\src\vmime\net\messageSet.cpp(201): error C2780: '_OutTy *std::copy(_InIt,_InIt,_OutTy (&)[_OutSize])' : expects 3 arguments - 1 provided
1> C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\xutility(2140) : see declaration of 'std::copy'
vmime\src\vmime\net\messageSet.cpp(201): error C2780: '_OutIt std::copy(_InIt,_InIt,_OutIt)' : expects 3 arguments - 1 provided
1> C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\xutility(2122) : see declaration of 'std::copy'
vmime\src\vmime\net\messageSet.cpp(202): error C2065: 'sortedNumbers' : undeclared identifier
vmime\src\vmime\net\messageSet.cpp(202): error C2228: left of '.begin' must have class/struct/union
1> type is 'unknown-type'
vmime\src\vmime\net\messageSet.cpp(202): error C2228: left of '.end' must have class/struct/union
1> type is 'unknown-type'
vmime\src\vmime\net\messageSet.cpp(202): error C2780: 'void std::sort(_RanIt,_RanIt)' : expects 2 arguments - 1 provided
1> C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\algorithm(3162) : see declaration of 'std::sort'
vmime\src\vmime\net\messageSet.cpp(202): error C2780: 'void std::sort(_RanIt,_RanIt,_Pr)' : expects 3 arguments - 1 provided
1> C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\algorithm(3153) : see declaration of 'std::sort'
vmime\src\vmime\net\messageSet.cpp(208): error C2039: 'vector' : is not a member of 'std'
vmime\src\vmime\net\messageSet.cpp(208): error C2062: type 'int' unexpected
vmime\src\vmime\net\messageSet.cpp(208): error C2039: 'const_iterator' : is not a member of '`global namespace''
vmime\src\vmime\net\messageSet.cpp(209): error C2065: 'it' : undeclared identifier
vmime\src\vmime\net\messageSet.cpp(209): error C2065: 'sortedNumbers' : undeclared identifier
vmime\src\vmime\net\messageSet.cpp(209): error C2228: left of '.end' must have class/struct/union
1> type is 'unknown-type'
vmime\src\vmime\net\messageSet.cpp(209): error C2143: syntax error : missing ';' before ')'
vmime\src\vmime\net\messageSet.cpp(210): error C2143: syntax error : missing ';' before '{'
vmime\src\vmime\net\messageSet.cpp(211): error C2065: 'it' : undeclared identifier
vmime\src\vmime\net\messageSet.cpp(211): fatal error C1003: error count exceeds 100; stopping compilation
#############

Also I am not able to disable the FILESYSTEM FEATURES by disabling the macro VMIME_HAVE_FILESYSTEM_FEATURES.

Thanks in advance.

Raja

Vincent Richard

unread,
Jan 1, 2015, 6:56:27 AM1/1/15
to
Hi!

I just fixed an issue when building with filesystem and messaging support disabled:
https://github.com/kisli/vmime/commit/d13e1133f0066bb01cb6f6e900579a8a059d0cdf
https://github.com/kisli/vmime/commit/3806122a350c441b1dc32d7a629eb16068e3c5d4

Note that you have to disable the "maildir" and "sendmail" protocols, which rely on filesystem features:

   cmake [...] -DVMIME_HAVE_MESSAGING_PROTO_MAILDIR=NO -DVMIME_HAVE_MESSAGING_PROTO_SENDMAIL=NO -DVMIME_HAVE_FILESYSTEM_FEATURES=NO

EDIT: updated my answer, as there was another issue.

Vincent
Reply all
Reply to author
Forward
0 new messages