summaryrefslogtreecommitdiff
path: root/net/libfilezilla
diff options
context:
space:
mode:
authorwiz <wiz@pkgsrc.org>2016-04-29 14:14:16 +0000
committerwiz <wiz@pkgsrc.org>2016-04-29 14:14:16 +0000
commit5dbcbeebf3ad601a8610d555e7e5e0fe1c570fc7 (patch)
treeb4bde9d5bc0950fecfe1f316444e3905146d0411 /net/libfilezilla
parent61af3753aeda67ae9cc2277b14cc3105d06b41c9 (diff)
downloadpkgsrc-5dbcbeebf3ad601a8610d555e7e5e0fe1c570fc7.tar.gz
Use upstream version of patch.
Diffstat (limited to 'net/libfilezilla')
-rw-r--r--net/libfilezilla/distinfo4
-rw-r--r--net/libfilezilla/patches/patch-lib_string.cpp56
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;