mfontanini / libtins

High-level, multiplatform C++ network packet sniffing and crafting library.
http://libtins.github.io/
BSD 2-Clause "Simplified" License
1.91k stars 375 forks source link

Not compiling under uClibc++ #375

Closed neheb closed 4 years ago

neheb commented 4 years ago

-fpermissive is passed to go through

/home/mangix/devstuff/openwrt/staging_dir/toolchain-mips_24kc_gcc-9.2.0_glibc/bin/g++-uc: 22: [: Illegal number: s
/home/mangix/devstuff/openwrt/build_dir/target-mips_24kc_glibc/libtins-4.2/src/dns.cpp: In static member function 'static std::string Tins::DNS::encode_domain_name(const string&)':
/home/mangix/devstuff/openwrt/build_dir/target-mips_24kc_glibc/libtins-4.2/src/dns.cpp:288:63: warning: invalid conversion from 'std::vector<char, std::allocator<char> >::const_iterator' {aka 'const char*'} to 'std::basic_string<char>::size_type' {aka 'unsigned int'} [-fpermissive]
  288 |             output.append(dn.begin() + last_index, dn.begin() + index);
      |                                                    ~~~~~~~~~~~^~~~~~~
      |                                                               |
      |                                                               std::vector<char, std::allocator<char> >::const_iterator {aka const char*}
In file included from /home/mangix/devstuff/openwrt/build_dir/target-mips_24kc_glibc/libtins-4.2/src/../include/tins/dns.h:36,
                 from /home/mangix/devstuff/openwrt/build_dir/target-mips_24kc_glibc/libtins-4.2/src/dns.cpp:32:
/home/mangix/devstuff/openwrt/staging_dir/target-mips_24kc_glibc/usr/include/uClibc++/string:171:58: note:   initializing argument 2 of 'std::basic_string<Ch, Tr, A>& std::basic_string<Ch, Tr, A>::append(const Ch*, std::basic_string<Ch, Tr, A>::size_type) [with Ch = char; Tr = std::char_traits<char>; A = std::allocator<char>; std::basic_string<Ch, Tr, A>::size_type = unsigned int]'
  171 |  _UCXXEXPORT basic_string& append(const Ch* s, size_type n){
      |                                                ~~~~~~~~~~^
/home/mangix/devstuff/openwrt/build_dir/target-mips_24kc_glibc/libtins-4.2/src/dns.cpp:292:54: warning: invalid conversion from 'std::vector<char, std::allocator<char> >::const_iterator' {aka 'const char*'} to 'std::basic_string<char>::size_type' {aka 'unsigned int'} [-fpermissive]
  292 |         output.append(dn.begin() + last_index, dn.end());
      |                                                ~~~~~~^~
      |                                                      |
      |                                                      std::vector<char, std::allocator<char> >::const_iterator {aka const char*}
In file included from /home/mangix/devstuff/openwrt/build_dir/target-mips_24kc_glibc/libtins-4.2/src/../include/tins/dns.h:36,
                 from /home/mangix/devstuff/openwrt/build_dir/target-mips_24kc_glibc/libtins-4.2/src/dns.cpp:32:
/home/mangix/devstuff/openwrt/staging_dir/target-mips_24kc_glibc/usr/include/uClibc++/string:171:58: note:   initializing argument 2 of 'std::basic_string<Ch, Tr, A>& std::basic_string<Ch, Tr, A>::append(const Ch*, std::basic_string<Ch, Tr, A>::size_type) [with Ch = char; Tr = std::char_traits<char>; A = std::allocator<char>; std::basic_string<Ch, Tr, A>::size_type = unsigned int]'
  171 |  _UCXXEXPORT basic_string& append(const Ch* s, size_type n){

There's also some missing iterator:

/home/mangix/devstuff/openwrt/build_dir/target-mips_24kc_glibc/libtins-4.2/src/utils/routing_utils.cpp:340:18: error: no match for 'operator>>' (operand types are 'std::ifstream' {aka 'std::basic_ifstream<char>'} and 'std::string' {aka 'std::basic_string<char>'})
  340 |     while (input >> entry.interface >> destination >> gw) {
      |            ~~~~~ ^~ ~~~~~~~~~~~~~~~
      |            |              |
      |            |              std::string {aka std::basic_string<char>}
      |            std::ifstream {aka std::basic_ifstream<char>}
neheb commented 4 years ago

First two issues are solved by a simple reinterpret_cast. No idea about the second.

neheb commented 4 years ago

uClibc++ is pretty much abandoned. This is also a fairly pointless bug fix.