summaryrefslogtreecommitdiff
path: root/net
diff options
context:
space:
mode:
authorhasso <hasso>2009-09-16 11:34:23 +0000
committerhasso <hasso>2009-09-16 11:34:23 +0000
commit3889e4d194e1b7494fe421604f9838aab1309f87 (patch)
treed282424560978551c23c2d6062bc52e6cfd6eb24 /net
parent040bc4f65576efa114761c487ede380a543d16ff (diff)
downloadpkgsrc-3889e4d194e1b7494fe421604f9838aab1309f87.tar.gz
Sane fix from upstream to fix the problem with connecting to UTF8 capable
ftp sites.
Diffstat (limited to 'net')
-rw-r--r--net/lftp/distinfo4
-rw-r--r--net/lftp/patches/patch-ai73
2 files changed, 61 insertions, 16 deletions
diff --git a/net/lftp/distinfo b/net/lftp/distinfo
index 424d40f2da1..f333a78b91d 100644
--- a/net/lftp/distinfo
+++ b/net/lftp/distinfo
@@ -1,4 +1,4 @@
-$NetBSD: distinfo,v 1.47 2009/09/16 07:13:20 hasso Exp $
+$NetBSD: distinfo,v 1.48 2009/09/16 11:34:23 hasso Exp $
SHA1 (lftp-4.0.0.tar.bz2) = 908397b581a68e6206ade4f798a68d8390aebf42
RMD160 (lftp-4.0.0.tar.bz2) = 7ca6ee013733180bc3b45db13dda1b1eb2cd9acc
@@ -11,4 +11,4 @@ SHA1 (patch-ae) = 3ee418b94cc1afb7b2db5bc550fd966d346368a4
SHA1 (patch-af) = 69c414ab28cbdfb86e4981fb7eaa7985b8384838
SHA1 (patch-ag) = 9eda126e106cee0cae6be691ad8bece921c9c0a9
SHA1 (patch-ah) = 0fe8a0d179cca0d747d5b43e0db1617d22e0cc3a
-SHA1 (patch-ai) = 6c791df94400c74475de977daf38078080209231
+SHA1 (patch-ai) = cd6720e86c8809fe1606c534519ce2797afc84c9
diff --git a/net/lftp/patches/patch-ai b/net/lftp/patches/patch-ai
index 79b3a76dd0c..c3e5f316b78 100644
--- a/net/lftp/patches/patch-ai
+++ b/net/lftp/patches/patch-ai
@@ -1,20 +1,65 @@
-$NetBSD: patch-ai,v 1.1 2009/09/16 07:13:20 hasso Exp $
+$NetBSD: patch-ai,v 1.2 2009/09/16 11:34:23 hasso Exp $
---- src/buffer.cc.orig 2009-09-16 09:56:27 +0300
-+++ src/buffer.cc 2009-09-16 09:57:15 +0300
-@@ -313,6 +313,7 @@ DataRecoder::~DataRecoder()
+--- src/buffer.cc.orig
++++ src/buffer.cc
+@@ -247,11 +247,6 @@ void DataTranslator::AppendTranslated(Bu
+ #ifdef HAVE_ICONV
+ void DataRecoder::PutTranslated(Buffer *target,const char *put_buf,int size)
+ {
+- if(!backend_translate)
+- {
+- target->Put(put_buf,size);
+- return;
+- }
+ bool from_untranslated=false;
+ if(Size()>0)
+ {
+@@ -261,6 +256,13 @@ void DataRecoder::PutTranslated(Buffer *
+ }
+ if(size<=0)
+ return;
++ if(!backend_translate)
++ {
++ target->Put(put_buf,size);
++ if(from_untranslated)
++ Skip(size);
++ return;
++ }
+ size_t put_size=size;
+
+ int size_coeff=6;
+@@ -313,20 +315,23 @@ DataRecoder::~DataRecoder()
}
DataRecoder::DataRecoder(const char *from_code,const char *to_code,bool translit)
{
-+#if !defined(__NetBSD__) && !defined(__DragonFly__)
- if(translit)
- {
- const char *add="//TRANSLIT";
-@@ -320,6 +321,7 @@ DataRecoder::DataRecoder(const char *fro
- strcat(tmp_enc,add);
- to_code=tmp_enc;
+- if(translit)
+- {
+- const char *add="//TRANSLIT";
+- char *tmp_enc=alloca_strdup2(to_code,strlen(add));
+- strcat(tmp_enc,add);
+- to_code=tmp_enc;
++ backend_translate=0;
++
++ if(translit) {
++ const char *to_code_translit=xstring::cat(to_code,"//TRANSLIT",NULL);
++ backend_translate=iconv_open(to_code_translit,from_code);
++ if(backend_translate!=(iconv_t)-1)
++ return;
++ backend_translate=0;
}
-+#endif
++
backend_translate=iconv_open(to_code,from_code);
- if(backend_translate==(iconv_t)-1)
- {
+- if(backend_translate==(iconv_t)-1)
+- {
+- Log::global->Format(0,"iconv_open(%s,%s) failed: %s\n",
++ if(backend_translate!=(iconv_t)-1)
++ return;
++
++ Log::global->Format(0,"iconv_open(%s,%s) failed: %s\n",
+ to_code,from_code,strerror(errno));
+- backend_translate=0;
+- }
++ backend_translate=0;
+ }
+
+ void DirectedBuffer::SetTranslation(const char *enc,bool translit)