diff -ur ncftp-3.2.2-old/libncftp/ncftp.h ncftp-3.2.2-new/libncftp/ncftp.h --- ncftp-3.2.2-old/libncftp/ncftp.h 2008-08-19 04:08:45.000000000 +0200 +++ ncftp-3.2.2-new/libncftp/ncftp.h 2008-09-05 01:47:18.000000000 +0200 @@ -13,7 +13,7 @@ { #endif /* __cplusplus */ -#define kLibraryVersion "@(#) LibNcFTP 3.2.3 (August 18, 2008)" +#define kLibraryVersion "@(#) LibNcFTP 3.2.3 (September 4, 2008)" /* This is used to verify validty of the data passed in. */ #define kLibraryMagic "LibNcFTP 3.2.3" @@ -29,11 +29,15 @@ # pragma warning(disable : 4214) // warning C4214: nonstandard extension used : bit field types other than int # pragma warning(disable : 4115) // warning C4115: 'IRpcStubBuffer' : named type definition in parentheses # pragma warning(disable : 4711) // warning C4711: function selected for automatic inline expansion + /* We now try for at least Windows 2000 compatibility (0x0500). + * The code will still work on older systems, though. + * Prior versions used 0x0400 instead. + */ # ifndef WINVER -# define WINVER 0x0400 +# define WINVER 0x0500 # endif # ifndef _WIN32_WINNT -# define _WIN32_WINNT 0x0400 +# define _WIN32_WINNT 0x0500 # endif # ifndef _INC_WINDOWS # include /* includes if _WIN32_WINNT >= 0x400 */ @@ -165,17 +169,6 @@ # endif #else /* Includes for UNIX */ -# if ((defined(__linux__)) && (! defined(_LARGEFILE64_SOURCE)) && (! defined(NO_LARGEFILE64_SOURCE)) && (! defined(_LARGEFILE_SOURCE)) && (! defined(_FILE_OFFSET_BITS))) - /* Define _LARGEFILE64_SOURCE or NO_LARGEFILE64_SOURCE to - * quiet this warning. Be sure to define this for ALL - * code that uses LibNcFTP. - */ -# warning " is #defining _LARGEFILE64_SOURCE for you" -# define _LARGEFILE64_SOURCE 1 -# define Stat stat64 -# define Lstat lstat64 -# define Fstat fstat64 -# endif # include # include # include diff -ur ncftp-3.2.2-old/libncftp/syshdrs.h ncftp-3.2.2-new/libncftp/syshdrs.h --- ncftp-3.2.2-old/libncftp/syshdrs.h 2008-08-19 04:48:41.000000000 +0200 +++ ncftp-3.2.2-new/libncftp/syshdrs.h 2008-09-05 02:13:11.000000000 +0200 @@ -269,12 +269,6 @@ # define Lseek(a,b,c) lseek(a, (off_t) b, c) # elif ((defined(HAVE_LONG_LONG)) && (defined(_LARGEFILE64_SOURCE)) && (defined(HAVE_LSEEK64))) # define Lseek(a,b,c) lseek64(a, (longest_int) b, c) -# elif defined(HAVE_LONG_LONG) && defined(HAVE_LLSEEK) -# if defined(LINUX) && (LINUX <= 23000) -# define Lseek(a,b,c) lseek(a, (off_t) b, c) -# else -# define Lseek(a,b,c) llseek(a, (longest_int) b, c) -# endif # else # define Lseek(a,b,c) lseek(a, (off_t) b, c) # endif diff -ur ncftp-3.2.2-old/libncftp/u_misc.c ncftp-3.2.2-new/libncftp/u_misc.c --- ncftp-3.2.2-old/libncftp/u_misc.c 2005-01-01 22:31:14.000000000 +0100 +++ ncftp-3.2.2-new/libncftp/u_misc.c 2008-09-03 19:32:33.000000000 +0200 @@ -51,8 +51,14 @@ int gettimeofday(struct timeval *const tp, void *junk) { +#if (_WIN32_WINNT < 0x0500) + /* Older systems don't have all the necessary time functions. */ + SYSTEMTIME systemTime; + if (tp == NULL) + return (-1); + GetSystemTime(&systemTime); /* Create an arbitrary second counter; @@ -68,6 +74,49 @@ tp->tv_usec = systemTime.wMilliseconds * 1000; return 0; +#else /* Windows 2000 or better */ + FILETIME systemTime, unixEpochFileTime; + ULARGE_INTEGER sysTimeAsFileTime; + SYSTEMTIME unixEpochSysTime; + static int initialized = 0; + static unsigned __int64 unixEpochQuad = 0; + unsigned __int64 now_time64_t; + time_t now_time_t; + + if (tp == NULL) + return (-1); + + tp->tv_sec = 0; + tp->tv_usec = 0; + + GetSystemTimeAsFileTime(&systemTime); + sysTimeAsFileTime.QuadPart = 0; + sysTimeAsFileTime.LowPart = systemTime.dwLowDateTime; + sysTimeAsFileTime.HighPart = systemTime.dwHighDateTime; + + if (initialized == 0) { + memset(&unixEpochSysTime, 0, sizeof(unixEpochSysTime)); + memset(&unixEpochFileTime, 0, sizeof(unixEpochFileTime)); + unixEpochSysTime.wYear = 1970; + unixEpochSysTime.wMonth = 1; + unixEpochSysTime.wDay = 1; + if (! SystemTimeToFileTime(&unixEpochSysTime, &unixEpochFileTime)) + return (-1); + unixEpochQuad = (unsigned __int64) unixEpochFileTime.dwLowDateTime + ((unsigned __int64) unixEpochFileTime.dwHighDateTime << 32); + if (sysTimeAsFileTime.QuadPart < unixEpochQuad) + return (-1); + initialized = 1; + } + + /* Compute number of 100-ns (0.1 us) intervals since Jan 1, 1970. */ + now_time64_t = sysTimeAsFileTime.QuadPart - unixEpochQuad; + tp->tv_usec = (unsigned long) ((now_time64_t / (unsigned __int64) 10) % (unsigned __int64) 1000000); + now_time64_t /= 10000000; + now_time_t = (time_t) (now_time64_t & 0xFFFFFFFF); + tp->tv_sec = (long) now_time_t; + + return 0; +#endif } /* gettimeofday */ diff -ur ncftp-3.2.2-old/ncftp/main.c ncftp-3.2.2-new/ncftp/main.c --- ncftp-3.2.2-old/ncftp/main.c 2008-08-18 22:11:29.000000000 +0200 +++ ncftp-3.2.2-new/ncftp/main.c 2008-08-29 04:34:46.000000000 +0200 @@ -231,18 +231,13 @@ static void OpenURL(void) { - FTPLinePtr lp; int result; if (gURLMode == 1) { SetBookmarkDefaults(&gBm); if (DoOpen() >= 0) { - for (lp = gStartupURLCdList.first; lp != NULL; lp = lp->next) { - result = FTPChdir(&gConn, lp->line); - if (result != kNoErr) { - FTPPerror(&gConn, result, kErrCWDFailed, "Could not chdir to", lp->line); - break; - } + if ((result = FTPChdirList(&gConn, &gStartupURLCdList, NULL, 0, (kChdirFullPath|kChdirOneSubdirAtATime))) != 0) { + FTPPerror(&gConn, result, kErrCWDFailed, "Could not change directory", NULL); } result = FTPGetCWD(&gConn, gRemoteCWD, sizeof(gRemoteCWD)); if (result != kNoErr) { diff -ur ncftp-3.2.2-old/ncftp/syshdrs.h ncftp-3.2.2-new/ncftp/syshdrs.h --- ncftp-3.2.2-old/ncftp/syshdrs.h 2008-08-19 04:49:55.000000000 +0200 +++ ncftp-3.2.2-new/ncftp/syshdrs.h 2008-09-05 02:14:32.000000000 +0200 @@ -275,16 +275,6 @@ # define Lseek(a,b,c) lseek(a, (off_t) b, c) #elif ((defined(HAVE_LONG_LONG)) && (defined(_LARGEFILE64_SOURCE)) && (defined(HAVE_LSEEK64))) # define Lseek(a,b,c) lseek64(a, (longest_int) b, c) -#elif defined(HAVE_LONG_LONG) && defined(HAVE_LLSEEK) -# if 1 -# if defined(LINUX) && (LINUX <= 23000) -# define Lseek(a,b,c) lseek(a, (off_t) b, c) -# else -# define Lseek(a,b,c) llseek(a, (longest_int) b, c) -# endif -# else -# define Lseek(a,b,c) lseek(a, (off_t) b, c) -# endif #else # define Lseek(a,b,c) lseek(a, (off_t) b, c) #endif diff -ur ncftp-3.2.2-old/ncftp/version.c ncftp-3.2.2-new/ncftp/version.c --- ncftp-3.2.2-old/ncftp/version.c 2008-08-19 05:48:17.000000000 +0200 +++ ncftp-3.2.2-new/ncftp/version.c 2008-09-05 02:19:12.000000000 +0200 @@ -6,7 +6,7 @@ /******************************************************************************/ -const char gVersion[] = "@(#) NcFTP 3.2.2/409 Aug 18 2008, 10:48 PM"; +const char gVersion[] = "@(#) NcFTP 3.2.2/414 Sep 04 2008, 07:19 PM"; /******************************************************************************/ diff -ur ncftp-3.2.2-old/sh_util/syshdrs.h ncftp-3.2.2-new/sh_util/syshdrs.h --- ncftp-3.2.2-old/sh_util/syshdrs.h 2008-08-19 04:50:07.000000000 +0200 +++ ncftp-3.2.2-new/sh_util/syshdrs.h 2008-09-05 02:14:38.000000000 +0200 @@ -264,16 +264,6 @@ # define Lseek(a,b,c) lseek(a, (off_t) b, c) #elif ((defined(HAVE_LONG_LONG)) && (defined(_LARGEFILE64_SOURCE)) && (defined(HAVE_LSEEK64))) # define Lseek(a,b,c) lseek64(a, (longest_int) b, c) -#elif defined(HAVE_LONG_LONG) && defined(HAVE_LLSEEK) -# if 1 -# if defined(LINUX) && (LINUX <= 23000) -# define Lseek(a,b,c) lseek(a, (off_t) b, c) -# else -# define Lseek(a,b,c) llseek(a, (longest_int) b, c) -# endif -# else -# define Lseek(a,b,c) lseek(a, (off_t) b, c) -# endif #else # define Lseek(a,b,c) lseek(a, (off_t) b, c) #endif diff -ur ncftp-3.2.2-old/sio/SConnect.c ncftp-3.2.2-new/sio/SConnect.c --- ncftp-3.2.2-old/sio/SConnect.c 2007-10-27 20:14:05.000000000 +0200 +++ ncftp-3.2.2-new/sio/SConnect.c 2008-09-01 01:00:56.000000000 +0200 @@ -154,7 +154,7 @@ tv.tv_sec = (tv_sec_t) tlen; tv.tv_usec = 0; result = select(sfd + 1, NULL, SELECT_TYPE_ARG234 &ss, SELECT_TYPE_ARG234 &xx, SELECT_TYPE_ARG5 &tv); - if (result == 1) { + if (result >= 1) { /* ready */ break; } else if (result == 0) { diff -ur ncftp-3.2.2-old/vis/syshdrs.h ncftp-3.2.2-new/vis/syshdrs.h --- ncftp-3.2.2-old/vis/syshdrs.h 2008-08-19 04:50:31.000000000 +0200 +++ ncftp-3.2.2-new/vis/syshdrs.h 2008-09-05 02:14:44.000000000 +0200 @@ -324,16 +324,6 @@ # define Lseek(a,b,c) lseek(a, (off_t) b, c) #elif ((defined(HAVE_LONG_LONG)) && (defined(_LARGEFILE64_SOURCE)) && (defined(HAVE_LSEEK64))) # define Lseek(a,b,c) lseek64(a, (longest_int) b, c) -#elif defined(HAVE_LONG_LONG) && defined(HAVE_LLSEEK) -# if 1 -# if defined(LINUX) && (LINUX <= 23000) -# define Lseek(a,b,c) lseek(a, (off_t) b, c) -# else -# define Lseek(a,b,c) llseek(a, (longest_int) b, c) -# endif -# else -# define Lseek(a,b,c) lseek(a, (off_t) b, c) -# endif #else # define Lseek(a,b,c) lseek(a, (off_t) b, c) #endif diff -ur ncftp-3.2.2-old/win/bmed/StdAfx.h ncftp-3.2.2-new/win/bmed/StdAfx.h --- ncftp-3.2.2-old/win/bmed/StdAfx.h 2008-07-14 04:48:02.000000000 +0200 +++ ncftp-3.2.2-new/win/bmed/StdAfx.h 2008-09-05 03:02:50.000000000 +0200 @@ -12,11 +12,12 @@ #define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers +// You can use 0x0400 here also, if you need to support older systems. #ifndef WINVER -# define WINVER 0x0400 -# define _WIN32_WINNT 0x0400 -# define _WIN32_WINDOWS 0x0400 -# define _WIN32_IE 0x0400 +# define WINVER 0x0500 +# define _WIN32_WINNT 0x0500 +# define _WIN32_WINDOWS 0x0500 +# define _WIN32_IE 0x0500 #endif #define _CRT_SECURE_NO_WARNINGS 1 diff -ur ncftp-3.2.2-old/win/setup/ncftp.wse ncftp-3.2.2-new/win/setup/ncftp.wse --- ncftp-3.2.2-old/win/setup/ncftp.wse 2008-08-10 00:06:38.000000000 +0200 +++ ncftp-3.2.2-new/win/setup/ncftp.wse 2008-09-05 03:03:52.000000000 +0200 @@ -27,7 +27,7 @@ Dialogs Version=7 Crystal Format=01111101101100000010001001001001 Crystal Destination=00000000000000000000000000001011 - Distribute Path=\\redwing\tmp + Distribute Path=\\qanuck\ztmp Distribute Type=1 Step View=Properties Variable Name1=_SYS_