head 1.3; access; symbols pkgsrc-2013Q2:1.3.0.10 pkgsrc-2013Q2-base:1.3 pkgsrc-2012Q4:1.3.0.8 pkgsrc-2012Q4-base:1.3 pkgsrc-2011Q4:1.3.0.6 pkgsrc-2011Q4-base:1.3 pkgsrc-2011Q2:1.3.0.4 pkgsrc-2011Q2-base:1.3 pkgsrc-2009Q4:1.3.0.2 pkgsrc-2009Q4-base:1.3; locks; strict; comment @# @; 1.3 date 2009.09.18.16.22.18; author hasso; state dead; branches; next 1.2; 1.2 date 2009.09.16.11.34.23; author hasso; state Exp; branches; next 1.1; 1.1 date 2009.09.16.07.13.20; author hasso; state Exp; branches; next ; desc @@ 1.3 log @Version 4.0.1 - 2009-09-17 * ignore `Status of' line in STAT output (ftp). * fixed handling of files starting with a tilde in ftp. * fixed an infinite bind-loop in ftp. * fixed iconv translit usage for NetBSD. @ text @$NetBSD: patch-ai,v 1.2 2009/09/16 11:34:23 hasso Exp $ --- 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(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; } + backend_translate=iconv_open(to_code,from_code); - 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) @ 1.2 log @Sane fix from upstream to fix the problem with connecting to UTF8 capable ftp sites. @ text @d1 1 a1 1 $NetBSD$ @ 1.1 log @Update to 4.0.0. Version 4.0.0 - 2009-09-11 * added torrent client. * automatically set time precision on FAT-like FS (linux only). * fixed timestamps in `mirror --ignore-time'. Add patch-ai which adds a workaround for a problem preventing lftp to connect to the UTF8 capable ftp sites. @ text @d3 29 a31 3 --- 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() d35 14 a48 7 +#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; d50 1 a50 1 +#endif d52 14 a65 2 if(backend_translate==(iconv_t)-1) { @