diff options
author | wiz <wiz@pkgsrc.org> | 2016-04-29 14:14:16 +0000 |
---|---|---|
committer | wiz <wiz@pkgsrc.org> | 2016-04-29 14:14:16 +0000 |
commit | 5dbcbeebf3ad601a8610d555e7e5e0fe1c570fc7 (patch) | |
tree | b4bde9d5bc0950fecfe1f316444e3905146d0411 /net/libfilezilla | |
parent | 61af3753aeda67ae9cc2277b14cc3105d06b41c9 (diff) | |
download | pkgsrc-5dbcbeebf3ad601a8610d555e7e5e0fe1c570fc7.tar.gz |
Use upstream version of patch.
Diffstat (limited to 'net/libfilezilla')
-rw-r--r-- | net/libfilezilla/distinfo | 4 | ||||
-rw-r--r-- | net/libfilezilla/patches/patch-lib_string.cpp | 56 |
2 files changed, 42 insertions, 18 deletions
diff --git a/net/libfilezilla/distinfo b/net/libfilezilla/distinfo index 50f72534b22..463061c5224 100644 --- a/net/libfilezilla/distinfo +++ b/net/libfilezilla/distinfo @@ -1,7 +1,7 @@ -$NetBSD: distinfo,v 1.1 2016/04/29 11:54:06 wiz Exp $ +$NetBSD: distinfo,v 1.2 2016/04/29 14:14:16 wiz Exp $ SHA1 (libfilezilla-0.5.0.tar.bz2) = dadd4c7a45ad913ed1820d6cd5e8d72d559c1212 RMD160 (libfilezilla-0.5.0.tar.bz2) = bf92d8f127271482b189cd544108ff1eb16848f9 SHA512 (libfilezilla-0.5.0.tar.bz2) = 24116fc6808f4d62fad1fc3ba15d3fc51261a2dc13ac6c5c6de71fa0cfce4bd328cc885974689f7f6549843167ba3ecee3febff64f9aba1ca71498b89ec93342 Size (libfilezilla-0.5.0.tar.bz2) = 374549 bytes -SHA1 (patch-lib_string.cpp) = 20e08651670e7b754ff71ba5fce8ce328e47b115 +SHA1 (patch-lib_string.cpp) = 92c0827d3259855eb5176afcf6f3567b6ddd3a2c diff --git a/net/libfilezilla/patches/patch-lib_string.cpp b/net/libfilezilla/patches/patch-lib_string.cpp index 4cd175961e3..8f10e67d619 100644 --- a/net/libfilezilla/patches/patch-lib_string.cpp +++ b/net/libfilezilla/patches/patch-lib_string.cpp @@ -1,24 +1,48 @@ -$NetBSD: patch-lib_string.cpp,v 1.1 2016/04/29 11:54:06 wiz Exp $ +$NetBSD: patch-lib_string.cpp,v 1.2 2016/04/29 14:14:16 wiz Exp $ -Fix build on NetBSD with iconv's second argument being const char **. +Fix build with different types of iconv(). +https://svn.filezilla-project.org/filezilla/libfilezilla/trunk/lib/string.cpp?view=patch&r1=7361&r2=7464&pathrev=7464 --- lib/string.cpp.orig 2016-04-15 07:52:15.000000000 +0000 +++ lib/string.cpp -@@ -111,7 +111,7 @@ std::wstring to_wstring_from_utf8(std::s - char* out_buf = new char[out_len]; - char* out_p = out_buf; +@@ -7,6 +7,8 @@ + #else + #include <iconv.h> + #include <strings.h> ++ ++#include <type_traits> + #endif -- size_t r = iconv(cd, &in_p, &in_len, &out_p, &out_len); -+ size_t r = iconv(cd, (const char **)&in_p, &in_len, &out_p, &out_len); + #include <cstdlib> +@@ -88,6 +90,13 @@ std::wstring to_wstring(std::string cons + return ret; + } - if (r != static_cast<size_t>(-1)) { - ret.assign(reinterpret_cast<wchar_t*>(out_buf), reinterpret_cast<wchar_t*>(out_p)); -@@ -175,7 +175,7 @@ std::string FZ_PUBLIC_SYMBOL to_utf8(std - char* out_buf = new char[out_len]; - char* out_p = out_buf; ++#ifndef FZ_WINDOWS ++// On some platforms, e.g. NetBSD, the second argument to iconv is const. ++// Depending which one is used, declare iconv_second_arg_type as either char* or char const* ++extern "C" typedef size_t (*iconv_prototype_with_const)(iconv_t, char const**, size_t *, char**, size_t *); ++typedef std::conditional<std::is_same<decltype(&iconv), iconv_prototype_with_const>::value, char const*, char*>::type iconv_second_arg_type; ++#endif ++ + std::wstring to_wstring_from_utf8(std::string const& in) + { + std::wstring ret; +@@ -104,7 +113,7 @@ std::wstring to_wstring_from_utf8(std::s + #else + iconv_t cd = iconv_open("WCHAR_T", "UTF-8"); + if (cd != reinterpret_cast<iconv_t>(-1)) { +- char * in_p = const_cast<char*>(in.c_str()); ++ auto in_p = const_cast<iconv_second_arg_type>(in.c_str()); + size_t in_len = in.size(); -- size_t r = iconv(cd, &in_p, &in_len, &out_p, &out_len); -+ size_t r = iconv(cd, (const char **)&in_p, &in_len, &out_p, &out_len); + size_t out_len = in_len * sizeof(wchar_t) * 2; +@@ -168,7 +177,7 @@ std::string FZ_PUBLIC_SYMBOL to_utf8(std + #else + iconv_t cd = iconv_open("UTF-8", "WCHAR_T"); + if (cd != reinterpret_cast<iconv_t>(-1)) { +- char * in_p = reinterpret_cast<char*>(const_cast<wchar_t*>(in.c_str())); ++ auto in_p = reinterpret_cast<iconv_second_arg_type>(const_cast<wchar_t*>(in.c_str())); + size_t in_len = in.size() * sizeof(wchar_t); - if (r != static_cast<size_t>(-1)) { - ret.assign(out_buf, out_p); + size_t out_len = in.size() * 4; |