Use SIZEOF_OFF_T definition from config file
authorYang Tse <yangsita@gmail.com>
Tue, 26 Aug 2008 01:40:19 +0000 (01:40 +0000)
committerYang Tse <yangsita@gmail.com>
Tue, 26 Aug 2008 01:40:19 +0000 (01:40 +0000)
lib/progress.c
lib/setup.h
lib/version.c
src/main.c

index 939e7db..1c997e0 100644 (file)
@@ -78,7 +78,7 @@ static char *max5data(curl_off_t bytes, char *max5)
               bytes/ONE_MEGABYTE,
              (bytes%ONE_MEGABYTE) / (ONE_MEGABYTE/CURL_OFF_T_C(10)) );
 
-#if CURL_SIZEOF_CURL_OFF_T > 4
+#if (CURL_SIZEOF_CURL_OFF_T > 4)
 
   else if(bytes < CURL_OFF_T_C(10000) * ONE_MEGABYTE)
     /* 'XXXXM' is good until we're at 10000MB or above */
index 42d6d01..4268b9b 100644 (file)
 #  define struct_stat struct stat
 #endif
 
+/*
+ * Default sizeof(off_t) in case it hasn't been defined in config file.
+ */
+
+#ifndef SIZEOF_OFF_T
+#  if defined(__VMS) && (defined(__alpha) || defined(__ia64))
+#    if defined(_LARGEFILE)
+#      define SIZEOF_OFF_T 8
+#    endif
+#  elif defined(__OS400__) && defined(__ILEC400__)
+#    if defined(_LARGE_FILES)
+#      define SIZEOF_OFF_T 8
+#    endif
+#  elif defined(__MVS__) && defined(__IBMC__)
+#    if defined(_LP64) || defined(_LARGE_FILES)
+#      define SIZEOF_OFF_T 8
+#    endif
+#  elif defined(__370__) && defined(__IBMC__)
+#    if defined(_LP64) || defined(_LARGE_FILES)
+#      define SIZEOF_OFF_T 8
+#    endif
+#  else
+#    define SIZEOF_OFF_T 4
+#  endif
+#endif
+
 /* Below we define some functions. They should
    1. close a socket
 
index 5b9ccca..2e8f1b4 100644 (file)
@@ -190,16 +190,8 @@ static curl_version_info_data version_info = {
 #ifdef HAVE_SPNEGO
   | CURL_VERSION_SPNEGO
 #endif
-/*
- * FIXME before 7.19.0 release.
- *
- * libcurl is largefile enabled when (CURL_SIZEOF_CURL_OFF_T > 4) _AND_
- * libcurl has been built with sizeof(system off_t) > 4 or when large
- * file support is available even with sizeof(system off_t) <= 4.
- *
- * Until this is adjusted, only the (CURL_SIZEOF_CURL_OFF_T > 4) check is done.
- */
-#if (CURL_SIZEOF_CURL_OFF_T > 4)
+#if (CURL_SIZEOF_CURL_OFF_T > 4) && \
+    ( (SIZEOF_OFF_T > 4) || defined(USE_WIN32_LARGE_FILES) )
   | CURL_VERSION_LARGEFILE
 #endif
 #if defined(CURL_DOES_CONVERSIONS)
index 72a5316..62c34cb 100644 (file)
@@ -242,6 +242,32 @@ typedef enum {
 #  define struct_stat struct stat
 #endif
 
+/*
+ * Default sizeof(off_t) in case it hasn't been defined in config file.
+ */
+
+#ifndef SIZEOF_OFF_T
+#  if defined(__VMS) && (defined(__alpha) || defined(__ia64))
+#    if defined(_LARGEFILE)
+#      define SIZEOF_OFF_T 8
+#    endif
+#  elif defined(__OS400__) && defined(__ILEC400__)
+#    if defined(_LARGE_FILES)
+#      define SIZEOF_OFF_T 8
+#    endif
+#  elif defined(__MVS__) && defined(__IBMC__)
+#    if defined(_LP64) || defined(_LARGE_FILES)
+#      define SIZEOF_OFF_T 8
+#    endif
+#  elif defined(__370__) && defined(__IBMC__)
+#    if defined(_LP64) || defined(_LARGE_FILES)
+#      define SIZEOF_OFF_T 8
+#    endif
+#  else
+#    define SIZEOF_OFF_T 4
+#  endif
+#endif
+
 #ifdef CURL_DOES_CONVERSIONS
 #ifdef HAVE_ICONV
 iconv_t inbound_cd  = (iconv_t)-1;
@@ -3205,12 +3231,6 @@ struct InStruct {
 
 #define MAX_SEEK 2147483647
 
-#ifndef SIZEOF_OFF_T
-/* (Jan 11th 2008) this is a reasonably new define in the config.h so there
-   might be older handicrafted configs that don't define it properly and then
-   we assume 32bit off_t */
-#define SIZEOF_OFF_T 4
-#endif
 /*
  * my_seek() is the CURLOPT_SEEKFUNCTION we use
  */
@@ -3218,11 +3238,10 @@ static int my_seek(void *stream, curl_off_t offset, int whence)
 {
   struct InStruct *in=(struct InStruct *)stream;
 
-#if (CURL_SIZEOF_CURL_OFF_T > SIZEOF_OFF_T) && !defined(lseek)
-  /* The sizeof check following here is only interesting if curl_off_t is
-     larger than off_t, but also not on windows-like systems for which lseek
-     is a defined macro that works around the 32bit off_t-problem and thus do
-     64bit seeks correctly anyway */
+#if (CURL_SIZEOF_CURL_OFF_T > SIZEOF_OFF_T) && !defined(USE_WIN32_LARGE_FILES)
+  /* The offset check following here is only interesting if curl_off_t is
+     larger than off_t and we are not using the WIN32 large file support
+     macros that provide the support to do 64bit seeks correctly */
 
   if(offset > MAX_SEEK) {
     /* Some precaution code to work around problems with different data sizes