--- /dev/null
+diff --git a/src/ChangeLog b/src/ChangeLog
+index 7d65003..e804bc4 100644
+--- a/src/ChangeLog
++++ b/src/ChangeLog
+@@ -1,3 +1,18 @@
++2013-07-04 Alexander V. Lukyanov <lav@yars.free.net>
++
++ * network.cc: don't use IPV6_V6ONLY if not defined.
++ (from y-iida@secom.co.jp).
++ * FileSet.cc: (FileInfo::Merge) copy size properly.
++
++2013-07-04 Alexander V. Lukyanov <lav@yars.free.net>
++
++ * FileSet.cc: recognize and ignore human readable sizes.
++
++2013-05-30 Alexander V. Lukyanov <lav@yars.free.net>
++
++ * lftp_tinfo.cc: fixed segfault when there is no TERM env var.
++ * buffer_zlib.cc: fixed compilation with older zlib.
++
+ 2013-05-28 Alexander V. Lukyanov <lav@yars.free.net>
+
+ * buffer_zlib.cc, buffer_zlib.h: implement inflator.
+diff --git a/src/FileSet.cc b/src/FileSet.cc
+index 49c9df4..4c93ea1 100644
+--- a/src/FileSet.cc
++++ b/src/FileSet.cc
+@@ -56,6 +56,8 @@ void FileInfo::Merge(const FileInfo& f)
+ SetMode(f.mode);
+ if(dif&DATE || (defined&DATE && f.defined&DATE && f.date.ts_prec<date.ts_prec))
+ SetDate(f.date,f.date.ts_prec);
++ if(dif&SIZE)
++ SetSize(f.size);
+ if(dif&TYPE)
+ SetType(f.filetype);
+ if(dif&SYMLINK)
+@@ -792,7 +794,8 @@ FileInfo *FileInfo::parse_ls_line(const char *line_c,const char *tz)
+ // it's size, so the previous was group:
+ fi->SetGroup(group_or_size);
+ long long size;
+- if(sscanf(t,"%lld",&size)==1)
++ int n;
++ if(sscanf(t,"%lld%n",&size,&n)==1 && t[n]==0)
+ fi->SetSize(size);
+ t = NEXT_TOKEN;
+ if(!t)
+@@ -802,7 +805,8 @@ FileInfo *FileInfo::parse_ls_line(const char *line_c,const char *tz)
+ {
+ // it was month, so the previous was size:
+ long long size;
+- if(sscanf(group_or_size,"%lld",&size)==1)
++ int n;
++ if(sscanf(group_or_size,"%lld%n",&size,&n)==1 && group_or_size[n]==0)
+ fi->SetSize(size);
+ }
+
+diff --git a/src/buffer_zlib.cc b/src/buffer_zlib.cc
+index 2ceaee9..ef79e6f 100644
+--- a/src/buffer_zlib.cc
++++ b/src/buffer_zlib.cc
+@@ -87,5 +87,5 @@ DataInflator::~DataInflator()
+ }
+ void DataInflator::ResetTranslation()
+ {
+- z_err = inflateReset2(&z, 16+MAX_WBITS);
++ z_err = inflateReset(&z);
+ }
+diff --git a/src/lftp_tinfo.cc b/src/lftp_tinfo.cc
+index 714d50d..0368497 100644
+--- a/src/lftp_tinfo.cc
++++ b/src/lftp_tinfo.cc
+@@ -54,7 +54,8 @@ static void init_terminfo()
+ terminfo_ok = false;
+ #elif defined(HAVE_TGETSTR)
+ static char buf[2048];
+- if(tgetent(buf,getenv("TERM")) == -1)
++ const char *term=getenv("TERM");
++ if(!term || tgetent(buf,term) == -1)
+ terminfo_ok = false;
+ #endif
+ }
+diff --git a/src/network.cc b/src/network.cc
+index cbffaac..36fe88e 100644
+--- a/src/network.cc
++++ b/src/network.cc
+@@ -362,7 +362,7 @@ int Networker::SocketAccept(int fd,sockaddr_u *u,const char *hostname)
+
+ void Networker::SocketSinglePF(int s,int pf)
+ {
+-#if INET6
++#if INET6 && defined(IPV6_V6ONLY)
+ if(pf==PF_INET6) {
+ int on = 1;
+ if(-1==setsockopt(s, IPPROTO_IPV6, IPV6_V6ONLY, (char *)&on, sizeof(on)))