]> granicus.if.org Git - curl/commitdiff
Adjustments to better select/differentiate when large/small file
authorYang Tse <yangsita@gmail.com>
Fri, 22 Aug 2008 18:09:03 +0000 (18:09 +0000)
committerYang Tse <yangsita@gmail.com>
Fri, 22 Aug 2008 18:09:03 +0000 (18:09 +0000)
support is provided using WIN32 functions directly.

CHANGES
lib/config-win32.h
lib/config-win32ce.h
lib/setup.h
src/config-win32.h
src/main.c

diff --git a/CHANGES b/CHANGES
index 4a017a72bdcba6d826dbc91977a5380d2d96b741..6ec2ddfc1fbe3ce8ac37944e86e5ddbb668ec2a8 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -10,6 +10,9 @@ Yang Tse (22 Aug 2008)
 - Improved libcurl's internal curl_m*printf() functions integral data type
   size and signedness handling.
 
+- Internal adjustments to better select/differentiate when large/small file
+  support is provided using WIN32 functions directly.
+
 Daniel Fandrich (20 Aug 2008)
 - Added an edited version of Vincent Le Normand's documentation of SFTP quote
   commands to the man pages.
index 7169bf2ecd30084b57baef362346ee24ca737760..a0c0bf5b20b03e5fd9f3124e84ab942386af2930 100644 (file)
 #  endif
 #endif
 
+/* ---------------------------------------------------------------- */
+/*                        LARGE FILE SUPPORT                        */
+/* ---------------------------------------------------------------- */
+
+#if defined(_MSC_VER) && !defined(_WIN32_WCE)
+#  if (_MSC_VER >= 900) && (_INTEGRAL_MAX_BITS >= 64)
+#    define USE_WIN32_LARGE_FILES
+#  else
+#    define USE_WIN32_SMALL_FILES
+#  endif
+#endif
+
+#if !defined(USE_WIN32_LARGE_FILES) && !defined(USE_WIN32_SMALL_FILES)
+#  define USE_WIN32_SMALL_FILES
+#endif
+
 /* ---------------------------------------------------------------- */
 /*                           LDAP SUPPORT                           */
 /* ---------------------------------------------------------------- */
index 21f7eea6423b773a613aac6f02cc515da91b17e9..50ddd18b8b007f2bbdcc4cae2256655b8de189ad 100644 (file)
 #  endif
 #endif
 
+/* ---------------------------------------------------------------- */
+/*                        LARGE FILE SUPPORT                        */
+/* ---------------------------------------------------------------- */
+
+#if defined(_MSC_VER) && !defined(_WIN32_WCE)
+#  if (_MSC_VER >= 900) && (_INTEGRAL_MAX_BITS >= 64)
+#    define USE_WIN32_LARGE_FILES
+#  else
+#    define USE_WIN32_SMALL_FILES
+#  endif
+#endif
+
+#if !defined(USE_WIN32_LARGE_FILES) && !defined(USE_WIN32_SMALL_FILES)
+#  define USE_WIN32_SMALL_FILES
+#endif
+
 /* ---------------------------------------------------------------- */
 /*                           LDAP SUPPORT                           */
 /* ---------------------------------------------------------------- */
index 4354f7fa8e13e5a8f970eebef5431395ffacb823..2de894cef5a636ac3ce4451c5364b677ecd0959d 100644 (file)
   #include <clib.h>
 #endif
 
+/*
+ * Large file (>2Gb) support using WIN32 functions.
+ */
 
-/* To make large file support transparent even on Windows */
-#if defined(WIN32) && (CURL_SIZEOF_CURL_OFF_T > 4)
-#include <sys/stat.h>   /* must come first before we redefine stat() */
-#include <io.h>
-#define lseek(x,y,z) _lseeki64(x, y, z)
-#define struct_stat struct _stati64
-#define stat(file,st) _stati64(file,st)
-#define fstat(fd,st) _fstati64(fd,st)
-#else
-#define struct_stat struct stat
-#endif /* Win32 with large file support */
+#ifdef USE_WIN32_LARGE_FILES
+#  include <io.h>
+#  include <sys/types.h>
+#  include <sys/stat.h>
+#  define lseek(fdes,offset,whence)  _lseeki64(fdes, offset, whence)
+#  define fstat(fdes,stp)            _fstati64(fdes, stp)
+#  define stat(fname,stp)            _stati64(fname, stp)
+#  define struct_stat                struct _stati64
+#endif
+
+/*
+ * Small file (<2Gb) support using WIN32 functions.
+ */
+
+#ifdef USE_WIN32_SMALL_FILES
+#  include <io.h>
+#  include <sys/types.h>
+#  include <sys/stat.h>
+#  define lseek(fdes,offset,whence)  _lseek(fdes, offset, whence)
+#  define fstat(fdes,stp)            _fstat(fdes, stp)
+#  define stat(fname,stp)            _stat(fname, stp)
+#  define struct_stat                struct _stat
+#endif
 
 
 /* Below we define some functions. They should
index 84a16fdc8777a242f2f5f3c7f8da6bfcb6453474..654d892d840c5a409e0fd98fa537deabc610efbf 100644 (file)
 #  endif
 #endif
 
+/* ---------------------------------------------------------------- */
+/*                        LARGE FILE SUPPORT                        */
+/* ---------------------------------------------------------------- */
+
+#if defined(_MSC_VER) && !defined(_WIN32_WCE)
+#  if (_MSC_VER >= 900) && (_INTEGRAL_MAX_BITS >= 64)
+#    define USE_WIN32_LARGE_FILES
+#  else
+#    define USE_WIN32_SMALL_FILES
+#  endif
+#endif
+
+#if !defined(USE_WIN32_LARGE_FILES) && !defined(USE_WIN32_SMALL_FILES)
+#  define USE_WIN32_SMALL_FILES
+#endif
+
 /* ---------------------------------------------------------------- */
 /*                       ADDITIONAL DEFINITIONS                     */
 /* ---------------------------------------------------------------- */
index b70219189b939aca131c09b8f0f2f9908d128120..6c149cfb626796e10bc6cfe0252fca4a7be80c6c 100644 (file)
@@ -210,14 +210,32 @@ typedef enum {
 #include "curlmsg_vms.h"
 #endif
 
-/* Support uploading and resuming of >2GB files
+/*
+ * Large file support (>2Gb) using WIN32 functions.
  */
-#if defined(WIN32) && (CURL_SIZEOF_CURL_OFF_T > 4)
-#define lseek(x,y,z) _lseeki64(x, y, z)
-#define struct_stat struct _stati64
-#define stat(file,st) _stati64(file,st)
-#else
-#define struct_stat struct stat
+
+#ifdef USE_WIN32_LARGE_FILES
+#  include <io.h>
+#  include <sys/types.h>
+#  include <sys/stat.h>
+#  define lseek(fdes,offset,whence)  _lseeki64(fdes, offset, whence)
+#  define fstat(fdes,stp)            _fstati64(fdes, stp)
+#  define stat(fname,stp)            _stati64(fname, stp)
+#  define struct_stat                struct _stati64
+#endif
+
+/*
+ * Small file support (<2Gb) using WIN32 functions.
+ */
+
+#ifdef USE_WIN32_SMALL_FILES
+#  include <io.h>
+#  include <sys/types.h>
+#  include <sys/stat.h>
+#  define lseek(fdes,offset,whence)  _lseek(fdes, offset, whence)
+#  define fstat(fdes,stp)            _fstat(fdes, stp)
+#  define stat(fname,stp)            _stat(fname, stp)
+#  define struct_stat                struct _stat
 #endif
 
 #ifdef CURL_DOES_CONVERSIONS