Hello community,

here is the log from the commit of package bareftp for openSUSE:Factory checked 
in at 2016-02-16 09:18:50
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/bareftp (Old)
 and      /work/SRC/openSUSE:Factory/.bareftp.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "bareftp"

Changes:
--------
--- /work/SRC/openSUSE:Factory/bareftp/bareftp.changes  2015-05-20 
23:54:02.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.bareftp.new/bareftp.changes     2016-02-16 
09:18:53.000000000 +0100
@@ -1,0 +2,14 @@
+Sat Jan 30 12:55:11 UTC 2016 - [email protected]
+
+- Update to version 0.3.11:
+  + Build script fixes.
+- Enable GNOME keyring support:
+  + Remove --with-keyring=no configure parameter
+    (gnome-keyring-sharp was already set as a depency).
+- Remove bareftp-dotnet4.patch: included upstream.
+- Remove libtool BuildRequires: we don't patch the build system
+  anymore.
+- Add bareftp-buildfix.patch: fix compilation errors.
+- Add desktop and icon theme macros.
+
+-------------------------------------------------------------------

Old:
----
  bareftp-0.3.10.tar.gz
  bareftp-dotnet4.patch

New:
----
  bareftp-0.3.11.tar.gz
  bareftp-buildfix.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ bareftp.spec ++++++
--- /var/tmp/diff_new_pack.qiBCCD/_old  2016-02-16 09:18:53.000000000 +0100
+++ /var/tmp/diff_new_pack.qiBCCD/_new  2016-02-16 09:18:53.000000000 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package bareftp
 #
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
 # Copyright (c) 2011 Packman project
 #
 # All modifications and additions to the file contributed by third parties
@@ -18,43 +18,40 @@
 
 
 Name:           bareftp
-Version:        0.3.10
+Version:        0.3.11
 Release:        0
 Summary:        A file transfer client for FTP/FTPS/SFTP
 License:        GPL-2.0
 Group:          Productivity/Networking/Ftp/Clients
 Url:            http://www.bareftp.org/
-Source0:        http://www.bareftp.org/release/%{name}-%{version}.tar.gz
-# PATCH-FIX-OPENSUSE- bareftp-dotnet4.patch [email protected] -- Build for 
.Net 4.0 target. Upstream is 'dead' (busy porting to python).
-Patch0:         bareftp-dotnet4.patch
-Requires:       gconf-sharp2
-Requires:       gnome-keyring-sharp
-Requires:       gtk-sharp2
-Requires:       mono-core
-
-BuildRoot:      %{_tmppath}/%{name}-%{version}-build
-
+Source:         http://www.bareftp.org/release/%{name}-%{version}.tar.gz
+# PATCH-FIX-UPSTREAM bareftp-buildfix.patch [email protected] -- Fix 
obvious typos which cause compilation errors
+Patch0:         bareftp-buildfix.patch
 BuildRequires:  gconf-sharp2
 BuildRequires:  glib2-devel
 BuildRequires:  gnome-keyring-sharp-devel
 BuildRequires:  gnome-sharp2
 BuildRequires:  gnome-vfs-sharp2
 BuildRequires:  gtk-sharp2
+BuildRequires:  hicolor-icon-theme
 BuildRequires:  intltool
-# Needed for patch0
-BuildRequires:  libtool
 BuildRequires:  mono-data
 BuildRequires:  mono-devel
 BuildRequires:  mono-web
 BuildRequires:  perl-XML-Parser
 BuildRequires:  pkgconfig
 BuildRequires:  update-desktop-files
+BuildRoot:      %{_tmppath}/%{name}-%{version}-build
+Requires:       gconf-sharp2
+Requires:       gnome-keyring-sharp
+Requires:       gtk-sharp2
+Requires:       mono-core
 
 %description
 bareFTP is a file transfer client supporting the FTP, FTP over SSL/TLS (FTPS)
 and SSH File Transfer Protocol (SFTP). It is written in C#, targeting the
 Mono framework and the GNOME desktop environment. bareFTP is released under
-the terms of the GPL license. 
+the terms of the GPL. 
 
 
 %prep
@@ -62,9 +59,7 @@
 %patch0 -p1
 
 %build
-# Needed for patch0
-autoreconf -fiv -I m4/shamrock
-%configure --with-keyring=no --disable-static
+%configure --disable-static
 %__make %{?jobs:-j%{jobs}}
 
 %install
@@ -74,6 +69,14 @@
 %suse_update_desktop_file %{name} Network FileTransfer
 %find_lang %{name}
 
+%post
+%desktop_database_post
+%icon_theme_cache_post
+
+%postun
+%desktop_database_postun
+%icon_theme_cache_postun
+
 %files -f %{name}.lang
 %defattr(-,root,root,-)
 %doc COPYING README ChangeLog AUTHORS

++++++ bareftp-0.3.10.tar.gz -> bareftp-0.3.11.tar.gz ++++++
++++ 4710 lines of diff (skipped)
++++    retrying with extended exclude list
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/bareftp-0.3.10/INSTALL new/bareftp-0.3.11/INSTALL
--- old/bareftp-0.3.10/INSTALL  2013-03-23 19:40:57.000000000 +0100
+++ new/bareftp-0.3.11/INSTALL  2014-08-26 01:03:47.000000000 +0200
@@ -1,7 +1,7 @@
 Installation Instructions
 *************************
 
-Copyright (C) 1994-1996, 1999-2002, 2004-2012 Free Software Foundation,
+Copyright (C) 1994-1996, 1999-2002, 2004-2013 Free Software Foundation,
 Inc.
 
    Copying and distribution of this file, with or without modification,
@@ -12,8 +12,8 @@
 Basic Installation
 ==================
 
-   Briefly, the shell commands `./configure; make; make install' should
-configure, build, and install this package.  The following
+   Briefly, the shell command `./configure && make && make install'
+should configure, build, and install this package.  The following
 more-detailed instructions are generic; see the `README' file for
 instructions specific to this package.  Some packages provide this
 `INSTALL' file but do not implement all of the features documented
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/bareftp-0.3.10/Makefile.am new/bareftp-0.3.11/Makefile.am
--- old/bareftp-0.3.10/Makefile.am      2013-01-17 00:05:22.000000000 +0100
+++ new/bareftp-0.3.11/Makefile.am      2013-05-15 19:12:51.000000000 +0200
@@ -11,11 +11,11 @@
        intltool-update.in
 
 SUBDIRS = \
-         data \
-         lib\
-         src \
-         m4 \
-         po
+       data \
+       lib\
+       src \
+       m4 \
+       po
 
 #REWRITE = \
 #        sed -e "s|\@prefix\@|$(prefix)|g"               \
@@ -24,13 +24,13 @@
 #          -e "s|\@MONO\@|$(MONO)|g" 
 
 DISTCLEANFILES = \
-        *.bak \
-        *~ \
-        *.pidb \
-        intltool-extract \
-        intltool-merge \
-        intltool-update \
-        po/.intltool-merge-cache
+       *.bak \
+       *~ \
+       *.pidb \
+       intltool-extract \
+       intltool-merge \
+       intltool-update \
+       po/.intltool-merge-cache
 
 MAINTAINERCLEANFILES = \
        compile \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/bareftp-0.3.10/compile new/bareftp-0.3.11/compile
--- old/bareftp-0.3.10/compile  1970-01-01 01:00:00.000000000 +0100
+++ new/bareftp-0.3.11/compile  2014-08-26 01:03:47.000000000 +0200
@@ -0,0 +1,347 @@
+#! /bin/sh
+# Wrapper for compilers which do not understand '-c -o'.
+
+scriptversion=2012-10-14.11; # UTC
+
+# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+# Written by Tom Tromey <[email protected]>.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <[email protected]> or send patches to
+# <[email protected]>.
+
+nl='
+'
+
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent tools from complaining about whitespace usage.
+IFS=" ""       $nl"
+
+file_conv=
+
+# func_file_conv build_file lazy
+# Convert a $build file to $host form and store it in $file
+# Currently only supports Windows hosts. If the determined conversion
+# type is listed in (the comma separated) LAZY, no conversion will
+# take place.
+func_file_conv ()
+{
+  file=$1
+  case $file in
+    / | /[!/]*) # absolute file, and not a UNC file
+      if test -z "$file_conv"; then
+       # lazily determine how to convert abs files
+       case `uname -s` in
+         MINGW*)
+           file_conv=mingw
+           ;;
+         CYGWIN*)
+           file_conv=cygwin
+           ;;
+         *)
+           file_conv=wine
+           ;;
+       esac
+      fi
+      case $file_conv/,$2, in
+       *,$file_conv,*)
+         ;;
+       mingw/*)
+         file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
+         ;;
+       cygwin/*)
+         file=`cygpath -m "$file" || echo "$file"`
+         ;;
+       wine/*)
+         file=`winepath -w "$file" || echo "$file"`
+         ;;
+      esac
+      ;;
+  esac
+}
+
+# func_cl_dashL linkdir
+# Make cl look for libraries in LINKDIR
+func_cl_dashL ()
+{
+  func_file_conv "$1"
+  if test -z "$lib_path"; then
+    lib_path=$file
+  else
+    lib_path="$lib_path;$file"
+  fi
+  linker_opts="$linker_opts -LIBPATH:$file"
+}
+
+# func_cl_dashl library
+# Do a library search-path lookup for cl
+func_cl_dashl ()
+{
+  lib=$1
+  found=no
+  save_IFS=$IFS
+  IFS=';'
+  for dir in $lib_path $LIB
+  do
+    IFS=$save_IFS
+    if $shared && test -f "$dir/$lib.dll.lib"; then
+      found=yes
+      lib=$dir/$lib.dll.lib
+      break
+    fi
+    if test -f "$dir/$lib.lib"; then
+      found=yes
+      lib=$dir/$lib.lib
+      break
+    fi
+    if test -f "$dir/lib$lib.a"; then
+      found=yes
+      lib=$dir/lib$lib.a
+      break
+    fi
+  done
+  IFS=$save_IFS
+
+  if test "$found" != yes; then
+    lib=$lib.lib
+  fi
+}
+
+# func_cl_wrapper cl arg...
+# Adjust compile command to suit cl
+func_cl_wrapper ()
+{
+  # Assume a capable shell
+  lib_path=
+  shared=:
+  linker_opts=
+  for arg
+  do
+    if test -n "$eat"; then
+      eat=
+    else
+      case $1 in
+       -o)
+         # configure might choose to run compile as 'compile cc -o foo foo.c'.
+         eat=1
+         case $2 in
+           *.o | *.[oO][bB][jJ])
+             func_file_conv "$2"
+             set x "$@" -Fo"$file"
+             shift
+             ;;
+           *)
+             func_file_conv "$2"
+             set x "$@" -Fe"$file"
+             shift
+             ;;
+         esac
+         ;;
+       -I)
+         eat=1
+         func_file_conv "$2" mingw
+         set x "$@" -I"$file"
+         shift
+         ;;
+       -I*)
+         func_file_conv "${1#-I}" mingw
+         set x "$@" -I"$file"
+         shift
+         ;;
+       -l)
+         eat=1
+         func_cl_dashl "$2"
+         set x "$@" "$lib"
+         shift
+         ;;
+       -l*)
+         func_cl_dashl "${1#-l}"
+         set x "$@" "$lib"
+         shift
+         ;;
+       -L)
+         eat=1
+         func_cl_dashL "$2"
+         ;;
+       -L*)
+         func_cl_dashL "${1#-L}"
+         ;;
+       -static)
+         shared=false
+         ;;
+       -Wl,*)
+         arg=${1#-Wl,}
+         save_ifs="$IFS"; IFS=','
+         for flag in $arg; do
+           IFS="$save_ifs"
+           linker_opts="$linker_opts $flag"
+         done
+         IFS="$save_ifs"
+         ;;
+       -Xlinker)
+         eat=1
+         linker_opts="$linker_opts $2"
+         ;;
+       -*)
+         set x "$@" "$1"
+         shift
+         ;;
+       *.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
+         func_file_conv "$1"
+         set x "$@" -Tp"$file"
+         shift
+         ;;
+       *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
+         func_file_conv "$1" mingw
+         set x "$@" "$file"
+         shift
+         ;;
+       *)
+         set x "$@" "$1"
+         shift
+         ;;
+      esac
+    fi
+    shift
+  done
+  if test -n "$linker_opts"; then
+    linker_opts="-link$linker_opts"
+  fi
+  exec "$@" $linker_opts
+  exit 1
+}
+
+eat=
+
+case $1 in
+  '')
+     echo "$0: No command.  Try '$0 --help' for more information." 1>&2
+     exit 1;
+     ;;
+  -h | --h*)
+    cat <<\EOF
+Usage: compile [--help] [--version] PROGRAM [ARGS]
+
+Wrapper for compilers which do not understand '-c -o'.
+Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
+arguments, and rename the output as expected.
+
+If you are trying to build a whole package this is not the
+right script to run: please start by reading the file 'INSTALL'.
+
+Report bugs to <[email protected]>.
+EOF
+    exit $?
+    ;;
+  -v | --v*)
+    echo "compile $scriptversion"
+    exit $?
+    ;;
+  cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
+    func_cl_wrapper "$@"      # Doesn't return...
+    ;;
+esac
+
+ofile=
+cfile=
+
+for arg
+do
+  if test -n "$eat"; then
+    eat=
+  else
+    case $1 in
+      -o)
+       # configure might choose to run compile as 'compile cc -o foo foo.c'.
+       # So we strip '-o arg' only if arg is an object.
+       eat=1
+       case $2 in
+         *.o | *.obj)
+           ofile=$2
+           ;;
+         *)
+           set x "$@" -o "$2"
+           shift
+           ;;
+       esac
+       ;;
+      *.c)
+       cfile=$1
+       set x "$@" "$1"
+       shift
+       ;;
+      *)
+       set x "$@" "$1"
+       shift
+       ;;
+    esac
+  fi
+  shift
+done
+
+if test -z "$ofile" || test -z "$cfile"; then
+  # If no '-o' option was seen then we might have been invoked from a
+  # pattern rule where we don't need one.  That is ok -- this is a
+  # normal compilation that the losing compiler can handle.  If no
+  # '.c' file was seen then we are probably linking.  That is also
+  # ok.
+  exec "$@"
+fi
+
+# Name of file we expect compiler to create.
+cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
+
+# Create the lock directory.
+# Note: use '[/\\:.-]' here to ensure that we don't use the same name
+# that we are using for the .o file.  Also, base the name on the expected
+# object file name, since that is what matters with a parallel build.
+lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
+while true; do
+  if mkdir "$lockdir" >/dev/null 2>&1; then
+    break
+  fi
+  sleep 1
+done
+# FIXME: race condition here if user kills between mkdir and trap.
+trap "rmdir '$lockdir'; exit 1" 1 2 15
+
+# Run the compile.
+"$@"
+ret=$?
+
+if test -f "$cofile"; then
+  test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
+elif test -f "${cofile}bj"; then
+  test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
+fi
+
+rmdir "$lockdir"
+exit $ret
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/bareftp-0.3.10/configure.ac new/bareftp-0.3.11/configure.ac
--- old/bareftp-0.3.10/configure.ac     2013-03-23 19:09:25.000000000 +0100
+++ new/bareftp-0.3.11/configure.ac     2013-10-18 16:36:41.000000000 +0200
@@ -1,4 +1,4 @@
-AC_INIT([bareftp], [0.3.10])
+AC_INIT([bareftp], [0.3.11])
 
 AC_CANONICAL_SYSTEM
 AC_PREREQ(2.69)
@@ -58,8 +58,8 @@
 dnl Check Mono
 dnl SHAMROCK_CHECK_MONO_MODULE(1.1.10)
 
-SHAMROCK_FIND_MONO_2_0_COMPILER   
 SHAMROCK_FIND_MONO_RUNTIME
+SHAMROCK_FIND_MONO_2_0_COMPILER_OR_HIGHER
 
 dnl Check for assemblies
 SHAMROCK_CHECK_MONO_2_0_GAC_ASSEMBLIES([        
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/bareftp-0.3.10/m4/shamrock/mono.m4 new/bareftp-0.3.11/m4/shamrock/mono.m4
--- old/bareftp-0.3.10/m4/shamrock/mono.m4      2013-01-17 00:05:22.000000000 
+0100
+++ new/bareftp-0.3.11/m4/shamrock/mono.m4      2014-08-26 01:01:33.000000000 
+0200
@@ -8,6 +8,21 @@
        SHAMROCK_FIND_PROGRAM_OR_BAIL(MCS, gmcs)
 ])
 
+AC_DEFUN([SHAMROCK_FIND_MONO_2_0_COMPILER_OR_HIGHER],
+[
+       if pkg-config --atleast-version=2.8 mono; then
+               SHAMROCK_FIND_PROGRAM(MCS, dmcs)
+       fi
+
+       if test "x$MCS" = "x" ; then
+               SHAMROCK_FIND_PROGRAM(MCS, gmcs)
+       fi
+
+       if test "x$MCS" = "x" ; then
+               AC_MSG_ERROR([You need to install 'dmcs' or 'gmcs'])
+       fi
+])
+
 AC_DEFUN([SHAMROCK_FIND_MONO_RUNTIME],
 [
        SHAMROCK_FIND_PROGRAM_OR_BAIL(MONO, mono)
@@ -18,6 +33,13 @@
        PKG_CHECK_MODULES(MONO_MODULE, mono >= $1)
 ])
 
+AC_DEFUN([SHAMROCK_CHECK_MONO_MODULE_NOBAIL],
+[
+       PKG_CHECK_MODULES(MONO_MODULE, mono >= $1,
+               HAVE_MONO_MODULE=yes, HAVE_MONO_MODULE=no)
+       AC_SUBST(HAVE_MONO_MODULE)
+])
+
 AC_DEFUN([_SHAMROCK_CHECK_MONO_GAC_ASSEMBLIES],
 [
        for asm in $(echo "$*" | cut -d, -f2- | sed 's/\,/ /g')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/bareftp-0.3.10/missing new/bareftp-0.3.11/missing
--- old/bareftp-0.3.10/missing  2013-03-23 19:40:57.000000000 +0100
+++ new/bareftp-0.3.11/missing  2014-08-26 01:03:47.000000000 +0200
@@ -1,7 +1,7 @@
 #! /bin/sh
 # Common wrapper for a few potentially missing GNU programs.
 
-scriptversion=2012-06-26.16; # UTC
+scriptversion=2013-10-28.13; # UTC
 
 # Copyright (C) 1996-2013 Free Software Foundation, Inc.
 # Originally written by Fran,cois Pinard <[email protected]>, 1996.
@@ -160,7 +160,7 @@
       ;;
    autom4te*)
       echo "You might have modified some maintainer files that require"
-      echo "the 'automa4te' program to be rebuilt."
+      echo "the 'autom4te' program to be rebuilt."
       program_details 'autom4te'
       ;;
     bison*|yacc*)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/bareftp-0.3.10/src/bareFTP/AssemblyInfo.cs 
new/bareftp-0.3.11/src/bareFTP/AssemblyInfo.cs
--- old/bareftp-0.3.10/src/bareFTP/AssemblyInfo.cs      2013-03-23 
19:41:04.000000000 +0100
+++ new/bareftp-0.3.11/src/bareFTP/AssemblyInfo.cs      2014-08-26 
01:03:54.000000000 +0200
@@ -2,7 +2,7 @@
 using System.Reflection;
 using System.Runtime.CompilerServices;
 
-[assembly: AssemblyVersion ("0.3.10")]
+[assembly: AssemblyVersion ("0.3.11")]
 [assembly: AssemblyTitle ("bareFTP")]
 [assembly: AssemblyDescription ("bareFTP File Transfer Client")]
 [assembly: AssemblyCopyright ("Copyright (C) 2006-2010 Christian Eide")]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/bareftp-0.3.10/src/bareFTP.Protocol.Ftp/ftp/FTPClient.cs 
new/bareftp-0.3.11/src/bareFTP.Protocol.Ftp/ftp/FTPClient.cs
--- old/bareftp-0.3.10/src/bareFTP.Protocol.Ftp/ftp/FTPClient.cs        
2013-01-17 00:05:22.000000000 +0100
+++ new/bareftp-0.3.11/src/bareFTP.Protocol.Ftp/ftp/FTPClient.cs        
2013-12-15 21:28:13.000000000 +0100
@@ -30,9 +30,9 @@
 namespace bareFTP.Protocol.Ftp
 {      
        public class FTPClient
-       {
-        internal const string EOL = "\r\n";
-               private static int DATA_PORT_RANGE_FROM = 1500;
+       {
+        internal const string EOL = "\r\n";
+               private static int DATA_PORT_RANGE_FROM = 1500;
                private static int DATA_PORT_RANGE_TO = 65000;
                private static int BLOCK_SIZE = 512;
                private List<string> features;
@@ -82,7 +82,7 @@
                {
                        
tcpClient.Connect(bareFTP.Protocol.HostResolver.GetAddress(remoteHost), 
remotePort);
                        Stream stream = tcpClient.GetStream();
-                       
+                       
             writer = new StreamWriter(stream, System.Text.Encoding.ASCII);
                        reader = new StreamReader(stream, 
System.Text.Encoding.ASCII);
                        
@@ -134,7 +134,7 @@
                                        throw new 
Exception(string.Format("Certificate Error ({0})", ex.Message));
                                }
                                
-                               writer = new StreamWriter(sslstream, 
GetEncoding());
+                               writer = new StreamWriter(sslstream, 
GetEncoding());
                                reader = new StreamReader(sslstream, 
GetEncoding());
                                
                                CheckReply(SendCommand("PBSZ 0"), 200);
@@ -162,7 +162,7 @@
                        SetTransferType(Ftp.FTPFileTransferType.Binary);
                }
                
-               public bool CertificateValidation (object sender, 
X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
+               public bool CertificateValidation (object sender, 
X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
         {
                        if(sslPolicyErrors == SslPolicyErrors.None)
                        {
@@ -179,7 +179,7 @@
                                }                                       
                                else
                                        return true;
-                       }
+                       }
         }
                
                public void Close()
@@ -227,7 +227,7 @@
                public List<FTPReply> SendCommand(string command)
                {
                                
-                       Byte[] cmdBytes = 
GetEncoding().GetBytes((command+EOL).ToCharArray());
+                       Byte[] cmdBytes = 
GetEncoding().GetBytes((command+EOL).ToCharArray());
                        OnLogTextEmitted(new LogTextEmittedArgs(-1, command));
                        try
                        {
@@ -375,25 +375,25 @@
                        
                        file.Status = 
bareFTP.Protocol.DownloadStatus.Downloading;
                        
-                       Stream networkStream = dsocket.GetStream();
-                       Byte[] buffer = new Byte[BLOCK_SIZE];
-                       int bytes = 0;
-
+                       Stream networkStream = dsocket.GetStream();
+                       Byte[] buffer = new Byte[BLOCK_SIZE];
+                       int bytes = 0;
+
                        read = true;
-                       
-                       while(read)
-                       {
+                       
+                       while(read)
+                       {
                                bytes = (int)networkStream.Read(buffer, 0, 
buffer.Length);
                                fstream.Write(buffer, 0, bytes);
                                file.TransferedBytes += (long)bytes;
-
-                               if(bytes == 0)
-                                       read = false;
+
+                               if(bytes == 0)
+                                       read = false;
                        }
-                       
+                       
                        if(abort)
                        {
-                               networkStream.Close();
+                               networkStream.Close();
                                dsocket.Close();
                                file.Status = 
bareFTP.Protocol.DownloadStatus.Aborted;
                                abort = false;
@@ -402,7 +402,7 @@
                        else
                        {
                                file.Status = 
bareFTP.Protocol.DownloadStatus.Finished; 
-                               networkStream.Close();
+                               networkStream.Close();
                                dsocket.Close();
                                CheckReply(GetReply(), 226);
                        }
@@ -440,21 +440,21 @@
                        else
                                CheckReply(SendCommand(string.Format("STOR 
{0}", file.Path.FileNameRemoteAbs)), 125, 150);
                        
-                       Stream networkStream = dsocket.GetStream();
-
-                       Byte[] buffer = new Byte[BLOCK_SIZE];
-                       int bytes = 0;
+                       Stream networkStream = dsocket.GetStream();
+
+                       Byte[] buffer = new Byte[BLOCK_SIZE];
+                       int bytes = 0;
                        
                        file.Status = bareFTP.Protocol.DownloadStatus.Uploading;
-               
-                       while(file.TransferedBytes < fslength && file.Status != 
DownloadStatus.Aborted && !abort)
-                       {
-                               bytes = (int)fstream.Read(buffer, 0, 
BLOCK_SIZE);
+               
+                       while(file.TransferedBytes < fslength && file.Status != 
DownloadStatus.Aborted && !abort)
+                       {
+                               bytes = (int)fstream.Read(buffer, 0, 
BLOCK_SIZE);
                                networkStream.Write(buffer, 0, bytes);
-                               file.TransferedBytes += (long)bytes;
+                               file.TransferedBytes += (long)bytes;
                        }
                        
-                       networkStream.Close();
+                       networkStream.Close();
                        dsocket.Close();
                        
                        if(abort)
@@ -509,61 +509,61 @@
                                
                                while (line != null && line.Length == 0)
                                {                                       
-                                       System.Threading.Thread.Sleep(100);
-                                       line = reader.ReadLine();
-                               }
-                               if (line == null)
-                                       throw new SystemException("Unexpected 
null reply received");
-            
-                               if (line.Length < 3)
-                                       throw new SystemException("Short reply 
received");
+                                       System.Threading.Thread.Sleep(100);
+                                       line = reader.ReadLine();
+                               }
+                               if (line == null)
+                                       throw new SystemException("Unexpected 
null reply received");
+            
+                               if (line.Length < 3)
+                                       throw new SystemException("Short reply 
received");
             
                                string replyCode = line.Substring(0, 3);
-                       
+                       
                                string reply = "";
-                       
-                               if (line.Length > 4)
-                                       reply = line.Substring(4);
-                               
-                               // check for multiline response and build up
-                               // the reply
-                               if (line[3] == '-')
-                               {
+                       
+                               if (line.Length > 4)
+                                       reply = line.Substring(4);
+                               
+                               // check for multiline response and build up
+                               // the reply
+                               if (line[3] == '-')
+                               {
                                        bool complete = false;
-                                       //reply += Environment.NewLine;
-                                       while (!complete && line != null)
-                                       {
-                                               line = reader.ReadLine();
-                                               if (line == null)
-                                                       throw new 
SystemException("Unexpected null reply received");
+                                       //reply += Environment.NewLine;
+                                       while (!complete && line != null)
+                                       {
+                                               line = reader.ReadLine();
+                                               if (line == null)
+                                                       throw new 
SystemException("Unexpected null reply received");
                                        
-                                               if (line.Length == 0)
-                                                       continue;
+                                               if (line.Length == 0)
+                                                       continue;
                     
                                                if(line.Length > 3)
-                                               {
-                                                       if (line.Substring(0,3) 
== replyCode && line[3] == ' ')
+                                               {
+                                                       if (line.Substring(0,3) 
== replyCode && line[3] == ' ')
                                                        {
                                                                complete = true;
                                                                reply += "\r\n" 
+ line.Substring(4);
                                                                
//replies.Add(new FTPReply(Convert.ToInt32(tmpreplyCode), tmpreply));
                                                        }
                                                        else
-                                                               reply += "\r\n" 
+ line;
+                                                               reply += "\r\n" 
+ line;
                                                }
-                                               else
-                                                       reply += "\r\n" + 
line;// + Environment.NewLine;
-                                       }
+                                               else
+                                                       reply += "\r\n" + 
line;// + Environment.NewLine;
+                                       }
                                }
                                
-                               replies.Add(new 
FTPReply(Convert.ToInt32(replyCode), reply));
+                               replies.Add(new 
FTPReply(Convert.ToInt32(replyCode), reply));
                                return replies;
                        
                        }
                        catch(Exception ex)
                        {
                                throw ex;
-                       }
+                       }
         }
                
                public void Delete(string filename)
@@ -592,11 +592,11 @@
                        CheckReply(SendCommand(string.Format("SITE CHMOD {0} 
{1}", mode, filename)), silent, 200);
                }
                
-               public void RenameFile(string fromRemoteFileName, string 
toRemoteFileName)
-               {
+               public void RenameFile(string fromRemoteFileName, string 
toRemoteFileName)
+               {
                
                        CheckReply(SendCommand(string.Format("RNFR {0}", 
fromRemoteFileName)), 350);
-                       CheckReply(SendCommand(string.Format("RNTO {0}", 
toRemoteFileName)), 250);
+                       CheckReply(SendCommand(string.Format("RNTO {0}", 
toRemoteFileName)), 250);
                }
                
                internal List<string> ReadLines(Stream stream)
@@ -609,31 +609,31 @@
                        
                        using(StreamReader input = new StreamReader(stream, 
GetEncoding()))
                        {
-                               
+                               
                                string line = null;
                                
-                               while ((line = ReadLine(input)) != null)
-                                       lines.Add(line);
-            
+                               while ((line = ReadLine(input)) != null)
+                                       lines.Add(line);
+            
                                input.Close();
                        }
                        return lines;
                }
                
-               internal virtual string ReadLine(TextReader input)
+               internal virtual string ReadLine(TextReader input)
         {
                        return input.ReadLine();
                }
                        
-               internal DataSocket CreateDataSocket()
-        {            
+               internal DataSocket CreateDataSocket()
+        {            
                        
                        string hostIP = string.Empty;
                        int port = 0;
                        
                        if(ftpMode == FTPMode.Passive)
-                       {
-                               List<FTPReply> replies = 
CheckReply(SendCommand("PASV"), 227);
+                       {
+                               List<FTPReply> replies = 
CheckReply(SendCommand("PASV"), 227);
                                
                                FTPReply replyObj = null;
                                foreach(FTPReply repObj in replies)
@@ -644,28 +644,28 @@
                                // If we have null here then throw exeption
                                if(replyObj == null)
                                        throw new Exception("Did not receive 
proper response to PASV command");
-                               
-                   string reply = replyObj.Message;
-                   
-                   Regex regEx = new 
Regex(@"(?<a0>\d{1,3}),(?<a1>\d{1,3}),(?<a2>\d{1,3}),(?<a3>\d{1,3}),(?<p0>\d{1,3}),(?<p1>\d{1,3})");
-                   Match m1 = regEx.Match(reply);
-
-                   string ipAddress = m1.Groups["a0"].Value + "." + 
m1.Groups["a1"].Value + "." + m1.Groups["a2"].Value + "." + 
m1.Groups["a3"].Value;
-                   
-                   int[] portParts = new int[2];
-                   portParts[0] = Int32.Parse(m1.Groups["p0"].Value);
-                   portParts[1] = Int32.Parse(m1.Groups["p1"].Value);
-                   port = (portParts[0] << 8) + portParts[1];
-                            
-                               hostIP = ipAddress;
+                               
+                   string reply = replyObj.Message;
+                   
+                   Regex regEx = new 
Regex(@"(?<a0>\d{1,3}),(?<a1>\d{1,3}),(?<a2>\d{1,3}),(?<a3>\d{1,3}),(?<p0>\d{1,3}),(?<p1>\d{1,3})");
+                   Match m1 = regEx.Match(reply);
+
+                   string ipAddress = m1.Groups["a0"].Value + "." + 
m1.Groups["a1"].Value + "." + m1.Groups["a2"].Value + "." + 
m1.Groups["a3"].Value;
+                   
+                   int[] portParts = new int[2];
+                   portParts[0] = Int32.Parse(m1.Groups["p0"].Value);
+                   portParts[1] = Int32.Parse(m1.Groups["p1"].Value);
+                   port = (portParts[0] << 8) + portParts[1];
+                            
+                               hostIP = ipAddress;
 
                        }
                        else if(ftpMode == FTPMode.Active)
                        {
-                               Random rnd = new 
Random((int)DateTime.Now.Ticks);
+                               Random rnd = new 
Random((int)DateTime.Now.Ticks);
                                port = DATA_PORT_RANGE_FROM + 
rnd.Next(DATA_PORT_RANGE_TO - DATA_PORT_RANGE_FROM);
                                
-                               int portHigh = port >> 8;
+                               int portHigh = port >> 8;
                                int portLow = port & 255;
                                
                                string command = string.Format("PORT {0}, {1}, 
{2}", 
@@ -682,32 +682,32 @@
                                else
                                        plevel = 
conf.FTPSDataChannelProtectionLevel;
                        
-                       return new DataSocket(hostIP, port, ftpMode, SSL, 
plevel, conf);
+                       return new DataSocket(hostIP, port, ftpMode, SSL, 
plevel, conf);
         }
                
-               internal void SetTransferType(FTPFileTransferType type)
-               {
-                       switch (type)
-                       {
-                               case FTPFileTransferType.ASCII:
-                                       SetMode("TYPE A");
-                                       break;
-                               case FTPFileTransferType.Binary:
-                                       SetMode("TYPE I");
-                                       break;
-                               default:
-                                       throw new Exception("Invalid File 
Transfer Type");
-                       }
+               internal void SetTransferType(FTPFileTransferType type)
+               {
+                       switch (type)
+                       {
+                               case FTPFileTransferType.ASCII:
+                                       SetMode("TYPE A");
+                                       break;
+                               case FTPFileTransferType.Binary:
+                                       SetMode("TYPE I");
+                                       break;
+                               default:
+                                       throw new Exception("Invalid File 
Transfer Type");
+                       }
                }
                           
-               internal void SetMode(string mode)
-               {
-                       CheckReply(SendCommand(mode), 200);
+               internal void SetMode(string mode)
+               {
+                       CheckReply(SendCommand(mode), 200);
                }
                
-               private IPAddress[] GetLocalAddressList()
-               {
-                       return Dns.GetHostEntry(Dns.GetHostName()).AddressList;
+               private IPAddress[] GetLocalAddressList()
+               {
+                       return Dns.GetHostEntry(Dns.GetHostName()).AddressList;
                }
                
                private void GetSiteFeatures()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/bareftp-0.3.10/src/bareFTP.Protocol.Ftp/ftp/FTPConnection.cs 
new/bareftp-0.3.11/src/bareFTP.Protocol.Ftp/ftp/FTPConnection.cs
--- old/bareftp-0.3.10/src/bareFTP.Protocol.Ftp/ftp/FTPConnection.cs    
2013-01-17 00:05:22.000000000 +0100
+++ new/bareftp-0.3.11/src/bareFTP.Protocol.Ftp/ftp/FTPConnection.cs    
2013-12-15 21:28:13.000000000 +0100
@@ -17,20 +17,20 @@
 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 //
 
-using System;
-using System.Net;
-using System.IO;
-using System.Text;
-using System.Net.Sockets;
-using System.Threading;
+using System;
+using System.Net;
+using System.IO;
+using System.Text;
+using System.Net.Sockets;
+using System.Threading;
 using System.Collections.Generic;
-using System.Collections;
+using System.Collections;
 using bareFTP.Protocol;
 using bareFTP.Preferences;
 
-namespace bareFTP.Protocol.Ftp
+namespace bareFTP.Protocol.Ftp
 {
-       public class FTPConnection : IProtocol
+       public class FTPConnection : IProtocol
        {
                
                protected FTPClient ftpClient;
@@ -525,5 +525,5 @@
                        } catch{}
                }
        }
-       
-}
+       
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/bareftp-0.3.10/src/bareFTP.Protocol.Ftp/ftp/ListParser.cs 
new/bareftp-0.3.11/src/bareFTP.Protocol.Ftp/ftp/ListParser.cs
--- old/bareftp-0.3.10/src/bareFTP.Protocol.Ftp/ftp/ListParser.cs       
2013-01-17 00:05:22.000000000 +0100
+++ new/bareftp-0.3.11/src/bareFTP.Protocol.Ftp/ftp/ListParser.cs       
2013-12-15 21:28:13.000000000 +0100
@@ -22,9 +22,7 @@
 
 using System;
 using System.Collections.Generic;
-using System.Text;
-using System.Globalization;
-
+using System.Text;z
 namespace bareFTP.Protocol.Ftp
 {
        public class ListParser
@@ -34,15 +32,16 @@
                        if(list == null || list.Count < 1)
                                return new List<RemoteFile>();
 
-                       
-                       string format1a = "MMM'-'d'-'yyyy";
                        string format1b = "MMM'-'dd'-'yyyy";
-                       string[] format1 = {format1a,format1b};
-                       string format2a = "MMM'-'d'-'yyyy'-'HH':'mm";
-                       string format2b = "MMM'-'dd'-'yyyy'-'HH':'mm";  
-               string format2c = "MMM'-'d'-'yyyy'-'H':'mm";         
+                       
+                       string format1a = "MMM'-'d'-'yyyy";
+                       string format1b = "MMM'-'dd'-'yyyy";
+                       string[] format1 = {format1a,format1b};
+                       string format2a = "MMM'-'d'-'yyyy'-'HH':'mm";
+                       string format2b = "MMM'-'dd'-'yyyy'-'HH':'mm";  
+               string format2c = "MMM'-'d'-'yyyy'-'H':'mm";         
                string format2d = "MMM'-'dd'-'yyyy'-'H':'mm";
                        string winformat = "MM'-'dd'-'yy hh':'mmtt";
-               string mlsdformat = "yyyyMMddHHmmss";
+               string mlsdformat = "yyyyMMddHHmmss";
                        
                string[] format2 = {format2a,format2b,format2c,format2d};
         
@@ -95,7 +94,7 @@
                                                        }
                                                        else 
if(keyval[0].ToLower() == "modify")
                                                        {
-                                                               
file.LastModified = DateTime.ParseExact(keyval[1].Substring(0,14), mlsdformat,
+                                                               
file.LastModified = DateTime.ParseExact(keyval[1].Substring(0,14), mlsdformat,
                                                                
ParsingCulture.DateTimeFormat, DateTimeStyles.None);
                                                        }
                                                        else 
if(keyval[0].ToLower() == "unix.mode")
@@ -130,169 +129,169 @@
                                        
                                                
                                        ////////////////
-                                       // field pos
-                                       int index = 0;
-                                                                       // 
first field is perms
-                                       string permissions = fields[index++];
-                                       char ch = permissions[0];
-                                       bool isDir = false;
-                                       bool isLink = false;
-                                       if (ch == 'd')
-                                               isDir = true;
-                                       else if (ch == 'l')
-                                               isLink = true;
+                                       // field pos
+                                       int index = 0;
+                                                                       // 
first field is perms
+                                       string permissions = fields[index++];
+                                       char ch = permissions[0];
+                                       bool isDir = false;
+                                       bool isLink = false;
+                                       if (ch == 'd')
+                                               isDir = true;
+                                       else if (ch == 'l')
+                                               isLink = true;
                                        
                                        // some servers don't supply the link 
count                                     
-                                       int linkCount = 0;
-                           if (Char.IsDigit(fields[index][0])) // assume it is 
if a digit
-                           {
-                               try
-                                               {
-                                                       linkCount = 
System.Int32.Parse(fields[index++]);
-                                               }
-                                               catch (FormatException)
-                                               {
-                                               }
-                           }
-                           else if (fields[index][0] == '-') // IPXOS Treck 
FTP server
-                           {
-                               index++;
+                                       int linkCount = 0;
+                           if (Char.IsDigit(fields[index][0])) // assume it is 
if a digit
+                           {
+                               try
+                                               {
+                                                       linkCount = 
System.Int32.Parse(fields[index++]);
+                                               }
+                                               catch (FormatException)
+                                               {
+                                               }
                            }
-
-                                               
-                                       // owner and group
-                                       string owner = fields[index++];
-                                       string group = fields[index++];
-               
-                                       // size
-                                       long size = 0L;
-                                       string sizeStr = fields[index];
-                       // some listings don't have owner - make owner -> group 
& group -> size in
-                       // this case, and use the sizeStr for the start of the 
date
-                       if (!Char.IsDigit(sizeStr[0]) && 
Char.IsDigit(group[0])) 
-                       {
-                               sizeStr = group;  
-                               group = owner;
-                               owner = "";
-                       }
-                       else 
-                       {
-                               index++; 
-                       }
-            
-                                       try
-                                       {
-                                               size = Int64.Parse(sizeStr);
-                                       }
-                                       catch (FormatException)
-                                       {
-                                               throw new 
FormatException("Failed to parse size: " + sizeStr);
-                                       }                     
-            
-                           // next 3 fields are the date time
-                           
-                           // we expect the month first on Unix. 
-                           // Connect:Enterprise UNIX has a weird extra field 
here - we test if the 
-                           // next field starts with a digit and if so, we 
skip it
-                           if (Char.IsDigit(fields[index][0]))
-                               index++;
-
-                                       int dateTimePos = index;
-                                       DateTime lastModified;
-                                       StringBuilder stamp = new 
StringBuilder(fields[index++]);
-                                       
stamp.Append('-').Append(fields[index++]).Append('-');
-                                       
-                                       string field = fields[index++];
-                                       if (field.IndexOf((System.Char) ':') < 
0)
-                                       {
-                                               stamp.Append(field); // year
-                               try
-                               {
-                                   lastModified = 
DateTime.ParseExact(stamp.ToString(), format1,
-                                                               
ParsingCulture.DateTimeFormat, DateTimeStyles.None);
-                               }
-                               catch (FormatException)
-                               {
-                                   //log.Error("Failed to parse date string '" 
+ stamp.ToString() + "'");
-                                   throw;
-                               }
-                                       }
-                                       else
-                                       {
-                                               // add the year ourselves as 
not present
-                               int year = 
ParsingCulture.Calendar.GetYear(DateTime.Now);
-                                               
stamp.Append(year).Append('-').Append(field);
-                               try
-                               {
-
-                                   lastModified = 
DateTime.ParseExact(stamp.ToString(), format2,
-                                                               
ParsingCulture.DateTimeFormat, DateTimeStyles.None);
-                               }
-                               catch (FormatException)
-                               {
-                                   //log.Error("Failed to parse date string '" 
+ stamp.ToString() + "'");
-                                   throw;
-                               }
-                                               
-                                               // can't be in the future - 
must be the previous year
-                               // add 2 days for time zones (thanks hgfischer)
-                                               if (lastModified > 
DateTime.Now.AddDays(2))
-                                               {
-                                   lastModified = lastModified.AddYears(-1);
-                                               }
+                           else if (fields[index][0] == '-') // IPXOS Treck 
FTP server
+                           {
+                               index++;
+                           }
+
+                                               
+                                       // owner and group
+                                       string owner = fields[index++];
+                                       string group = fields[index++];
+               
+                                       // size
+                                       long size = 0L;
+                                       string sizeStr = fields[index];
+                       // some listings don't have owner - make owner -> group 
& group -> size in
+                       // this case, and use the sizeStr for the start of the 
date
+                       if (!Char.IsDigit(sizeStr[0]) && 
Char.IsDigit(group[0])) 
+                       {
+                               sizeStr = group;  
+                               group = owner;
+                               owner = "";
+                       }
+                       else 
+                       {
+                               index++; 
+                       }
+            
+                                       try
+                                       {
+                                               size = Int64.Parse(sizeStr);
+                                       }
+                                       catch (FormatException)
+                                       {
+                                               throw new 
FormatException("Failed to parse size: " + sizeStr);
+                                       }                     
+            
+                           // next 3 fields are the date time
+                           
+                           // we expect the month first on Unix. 
+                           // Connect:Enterprise UNIX has a weird extra field 
here - we test if the 
+                           // next field starts with a digit and if so, we 
skip it
+                           if (Char.IsDigit(fields[index][0]))
+                               index++;
+
+                                       int dateTimePos = index;
+                                       DateTime lastModified;
+                                       StringBuilder stamp = new 
StringBuilder(fields[index++]);
+                                       
stamp.Append('-').Append(fields[index++]).Append('-');
+                                       
+                                       string field = fields[index++];
+                                       if (field.IndexOf((System.Char) ':') < 
0)
+                                       {
+                                               stamp.Append(field); // year
+                               try
+                               {
+                                   lastModified = 
DateTime.ParseExact(stamp.ToString(), format1,
+                                                               
ParsingCulture.DateTimeFormat, DateTimeStyles.None);
+                               }
+                               catch (FormatException)
+                               {
+                                   //log.Error("Failed to parse date string '" 
+ stamp.ToString() + "'");
+                                   throw;
+                               }
+                                       }
+                                       else
+                                       {
+                                               // add the year ourselves as 
not present
+                               int year = 
ParsingCulture.Calendar.GetYear(DateTime.Now);
+                                               
stamp.Append(year).Append('-').Append(field);
+                               try
+                               {
+
+                                   lastModified = 
DateTime.ParseExact(stamp.ToString(), format2,
+                                                               
ParsingCulture.DateTimeFormat, DateTimeStyles.None);
+                               }
+                               catch (FormatException)
+                               {
+                                   //log.Error("Failed to parse date string '" 
+ stamp.ToString() + "'");
+                                   throw;
+                               }
+                                               
+                                               // can't be in the future - 
must be the previous year
+                               // add 2 days for time zones (thanks hgfischer)
+                                               if (lastModified > 
DateTime.Now.AddDays(2))
+                                               {
+                                   lastModified = lastModified.AddYears(-1);
+                                               }
                                        }                                       
-                       
+                       
                                        
                                        
-                                       // name of file or dir. Extract symlink 
if possible
-                                       string name = null;
-                                       string linkedname = null;
-                       
-                                       // we've got to find the starting point 
of the name. We
-                                       // do this by finding the pos of all 
the date/time fields, then
-                                       // the name - to ensure we don't get 
tricked up by a userid the
-                                       // same as the filename,for example
-                                       int pos = 0;
-                                       bool ok = true;
-                                       for (int i = dateTimePos; i < 
dateTimePos + 3; i++)
-                                       {
-                                               pos = s.IndexOf(fields[i], pos);
-                                               if (pos < 0)
-                                               {
-                                                       ok = false;
-                                                       break;
-                                               }
-                               else {
-                                   pos += fields[i].Length;
-                               }
-                                       }
-                                       if (ok)
-                                       {
-                               string remainder = s.Substring(pos).Trim();
-                                               if (!isLink)
-                                                       name = remainder;
-                                               else
-                                               {
-                                                       // symlink, try to 
extract it
-                                                       pos = 
remainder.IndexOf("->");
-                                                       if (pos <= 0)
-                                                       {
-                                                               // couldn't 
find symlink, give up & just assign as name
-                                                               name = 
remainder;
-                                                       }
-                                                       else
-                                                       {
-                                                               int len = 2; // 
Length of "->"
-                                                               name = 
remainder.Substring(0, (pos) - (0)).Trim();
-                                                               if (pos + len < 
remainder.Length)
-                                                                       
linkedname = remainder.Substring(pos + len).Trim();
-                                                       }
-                                               }
-                                       }
-                                       else
-                                       {
-                                               throw new 
FormatException("Failed to retrieve name: " + s);
-                                       }
+                                       // name of file or dir. Extract symlink 
if possible
+                                       string name = null;
+                                       string linkedname = null;
+                       
+                                       // we've got to find the starting point 
of the name. We
+                                       // do this by finding the pos of all 
the date/time fields, then
+                                       // the name - to ensure we don't get 
tricked up by a userid the
+                                       // same as the filename,for example
+                                       int pos = 0;
+                                       bool ok = true;
+                                       for (int i = dateTimePos; i < 
dateTimePos + 3; i++)
+                                       {
+                                               pos = s.IndexOf(fields[i], pos);
+                                               if (pos < 0)
+                                               {
+                                                       ok = false;
+                                                       break;
+                                               }
+                               else {
+                                   pos += fields[i].Length;
+                               }
+                                       }
+                                       if (ok)
+                                       {
+                               string remainder = s.Substring(pos).Trim();
+                                               if (!isLink)
+                                                       name = remainder;
+                                               else
+                                               {
+                                                       // symlink, try to 
extract it
+                                                       pos = 
remainder.IndexOf("->");
+                                                       if (pos <= 0)
+                                                       {
+                                                               // couldn't 
find symlink, give up & just assign as name
+                                                               name = 
remainder;
+                                                       }
+                                                       else
+                                                       {
+                                                               int len = 2; // 
Length of "->"
+                                                               name = 
remainder.Substring(0, (pos) - (0)).Trim();
+                                                               if (pos + len < 
remainder.Length)
+                                                                       
linkedname = remainder.Substring(pos + len).Trim();
+                                                       }
+                                               }
+                                       }
+                                       else
+                                       {
+                                               throw new 
FormatException("Failed to retrieve name: " + s);
+                                       }
                                        
                                        RemoteFile file = new RemoteFile();
                                        file.Filename = name;
@@ -318,49 +317,49 @@
                                {
                                        List<string> fields = getFields(s);
                                        
-                                       // first two fields are date time
-                                       DateTime lastModified = 
DateTime.ParseExact(fields[0] + " " + fields[1], 
-                                                winformat, 
ParsingCulture.DateTimeFormat);
-                       
-                                       // dir flag
-                                       bool isDir = false;
-                                       long size = 0L;
-                                       if (fields[2].ToUpper().Equals("<DIR>"))
-                                               isDir = true;
-                                       else
-                                       {
-                                               try
-                                               {
-                                                       size = 
Int64.Parse(fields[2]);
-                                               }
-                                               catch (FormatException)
-                                               {
-                                                       throw new 
FormatException("Failed to parse size: " + fields[2]);
-                                               }
-                                       }
-                       
-                                       // we've got to find the starting point 
of the name. We
-                                       // do this by finding the pos of all 
the date/time fields, then
-                                       // the name - to ensure we don't get 
tricked up by a date or dir the
-                                       // same as the filename, for example
-                                       int pos = 0;
-                                       bool ok = true;
-                                       for (int i = 0; i < 3; i++)
-                                       {
-                                               pos = s.IndexOf(fields[i], pos);
-                                               if (pos < 0)
-                                               {
-                                                       ok = false;
-                                                       break;
-                                               }
-                               else {
-                                   pos += fields[i].Length;
-                               }
-                                       }
-                                       if (ok)
+                                       // first two fields are date time
+                                       DateTime lastModified = 
DateTime.ParseExact(fields[0] + " " + fields[1], 
+                                                winformat, 
ParsingCulture.DateTimeFormat);
+                       
+                                       // dir flag
+                                       bool isDir = false;
+                                       long size = 0L;
+                                       if (fields[2].ToUpper().Equals("<DIR>"))
+                                               isDir = true;
+                                       else
+                                       {
+                                               try
+                                               {
+                                                       size = 
Int64.Parse(fields[2]);
+                                               }
+                                               catch (FormatException)
+                                               {
+                                                       throw new 
FormatException("Failed to parse size: " + fields[2]);
+                                               }
+                                       }
+                       
+                                       // we've got to find the starting point 
of the name. We
+                                       // do this by finding the pos of all 
the date/time fields, then
+                                       // the name - to ensure we don't get 
tricked up by a date or dir the
+                                       // same as the filename, for example
+                                       int pos = 0;
+                                       bool ok = true;
+                                       for (int i = 0; i < 3; i++)
+                                       {
+                                               pos = s.IndexOf(fields[i], pos);
+                                               if (pos < 0)
+                                               {
+                                                       ok = false;
+                                                       break;
+                                               }
+                               else {
+                                   pos += fields[i].Length;
+                               }
+                                       }
+                                       if (ok)
                                        {
-                                       
-                           string name = s.Substring(pos).Trim();
+                                       
+                           string name = s.Substring(pos).Trim();
                                        RemoteFile file = new RemoteFile();
                                        file.Filename = name;
                                        file.Size = size;
@@ -372,11 +371,11 @@
                                        file.IsLink =  false;
                                        file.Linkdest = String.Empty;
                                        
-                                       files.Add(file);
-                                       }
-                                       else
-                                       {
-                                               throw new 
FormatException("Failed to retrieve name: " + s);
+                                       files.Add(file);
+                                       }
+                                       else
+                                       {
+                                               throw new 
FormatException("Failed to retrieve name: " + s);
                                        }
                                
                                }
@@ -387,27 +386,27 @@
                        
                }
                
-               public static List<string> getFields(string str) {
-            List<string> fields = new List<string>();
-            StringBuilder field = new StringBuilder();
+               public static List<string> getFields(string str) {
+            List<string> fields = new List<string>();
+            StringBuilder field = new StringBuilder();
             
-            for (int i = 0; i < str.Length; i++) {
-                char ch = str[i];
-                if (!Char.IsWhiteSpace(ch))
-                    field.Append(ch);
-                else {
-                    if (field.Length > 0) {
-                        fields.Add(field.ToString());
+            for (int i = 0; i < str.Length; i++) {
+                char ch = str[i];
+                if (!Char.IsWhiteSpace(ch))
+                    field.Append(ch);
+                else {
+                    if (field.Length > 0) {
+                        fields.Add(field.ToString());
                                                field.Length = 0;
-
-                    }
-                }
-            }
-            // pick up last field
-            if (field.Length > 0) {
-                fields.Add(field.ToString());
-            }
-            return fields;
+
+                    }
+                }
+            }
+            // pick up last field
+            if (field.Length > 0) {
+                fields.Add(field.ToString());
+            }
+            return fields;
         }
        }
 }

++++++ bareftp-buildfix.patch ++++++
diff -ru bareftp-0.3.11-old/src/bareFTP.Protocol.Ftp/ftp/ListParser.cs 
bareftp-0.3.11-new/src/bareFTP.Protocol.Ftp/ftp/ListParser.cs
--- bareftp-0.3.11-old/src/bareFTP.Protocol.Ftp/ftp/ListParser.cs       
2013-12-15 22:28:13.000000000 +0200
+++ bareftp-0.3.11-new/src/bareFTP.Protocol.Ftp/ftp/ListParser.cs       
2014-11-08 09:32:47.336869813 +0200
@@ -22,7 +22,8 @@
 
 using System;
 using System.Collections.Generic;
-using System.Text;z
+using System.Text;
+using System.Globalization;
 namespace bareFTP.Protocol.Ftp
 {
        public class ListParser

Reply via email to