Loading lib/strtoofft.h +31 −41 Original line number Diff line number Diff line Loading @@ -7,7 +7,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * * Copyright (C) 1998 - 2004, Daniel Stenberg, <daniel@haxx.se>, et al. * Copyright (C) 1998 - 2008, Daniel Stenberg, <daniel@haxx.se>, et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms Loading @@ -23,52 +23,42 @@ * $Id$ ***************************************************************************/ /* * CAUTION: this header is designed to work when included by the app-side * as well as the library. Do not mix with library internals! */ #include "setup.h" #include <stddef.h> #include <curl/curl.h> /* for the curl_off_t type */ /* Determine what type of file offset conversion handling we wish to use. For * systems with a 32-bit curl_off_t type, we should use strtol. For systems * with a 64-bit curl_off_t type, we should use strtoll if it exists, and if * not, should try to emulate its functionality. At any rate, we define * 'strtoofft' such that it can be used to work with curl_off_t's regardless. /* * Determine which string to integral data type conversion function we use * to implement string conversion to our curl_off_t integral data type. * * Notice that curl_off_t might be 64 or 32 bit wide, and that it might use * an undelying data type which might be 'long', 'int64_t', 'long long' or * '__int64' and more remotely other data types. * * On systems where the size of curl_off_t is greater than the size of 'long' * the conversion funtion to use is strtoll() if it is available, otherwise, * we emulate its functionality with our own clone. * * On systems where the size of curl_off_t is smaller or equal than the size * of 'long' the conversion funtion to use is strtol(). */ #if (CURL_SIZEOF_CURL_OFF_T > 4) && (SIZEOF_LONG < 8) #if (CURL_SIZEOF_CURL_OFF_T > SIZEOF_LONG) # ifdef HAVE_STRTOLL # define curlx_strtoofft strtoll #else /* HAVE_STRTOLL */ /* For MSVC7 we can use _strtoi64() which seems to be a strtoll() clone */ # else # if defined(_MSC_VER) && (_MSC_VER >= 1300) _CRTIMP __int64 __cdecl _strtoi64(const char *, char **, int); /* in <crt/stdlib.h> */ _CRTIMP __int64 __cdecl _strtoi64(const char *, char **, int); # define curlx_strtoofft _strtoi64 #else /* MSVC7 or later */ # else curl_off_t curlx_strtoll(const char *nptr, char **endptr, int base); # define curlx_strtoofft curlx_strtoll #define NEED_CURL_STRTOLL #endif /* MSVC7 or later */ #endif /* HAVE_STRTOLL */ #else /* (CURL_SIZEOF_CURL_OFF_T > 4) && (SIZEOF_LONG < 8) */ /* simply use strtol() to get numbers, either 32 or 64 bit */ #define curlx_strtoofft strtol # endif #if defined(_MSC_VER) || defined(__WATCOMC__) #define CURL_LLONG_MIN 0x8000000000000000i64 #define CURL_LLONG_MAX 0x7FFFFFFFFFFFFFFFi64 #elif defined(HAVE_LL) #define CURL_LLONG_MIN 0x8000000000000000LL #define CURL_LLONG_MAX 0x7FFFFFFFFFFFFFFFLL # endif #else #define CURL_LLONG_MIN 0x8000000000000000L #define CURL_LLONG_MAX 0x7FFFFFFFFFFFFFFFL # define curlx_strtoofft strtol #endif #define CURL_LLONG_MAX CURL_OFF_T_C(0x7FFFFFFFFFFFFFFF) #define CURL_LLONG_MIN CURL_OFF_T_C(0x8000000000000000) #endif src/main.c +3 −11 Original line number Diff line number Diff line Loading @@ -1387,21 +1387,13 @@ static int str2num(long *val, const char *str) */ static int str2offset(curl_off_t *val, const char *str) { #if CURL_SIZEOF_CURL_OFF_T > 4 #if (CURL_SIZEOF_CURL_OFF_T > SIZEOF_LONG) /* Ugly, but without going through a bunch of rigmarole, we don't have the * definitions for LLONG_{MIN,MAX} or LONG_LONG_{MIN,MAX}. */ #ifndef LLONG_MAX #if defined(_MSC_VER) #define LLONG_MAX (curl_off_t)0x7FFFFFFFFFFFFFFFi64 #define LLONG_MIN (curl_off_t)0x8000000000000000i64 #elif defined(_CRAYC) #define LLONG_MAX (curl_off_t)0x7FFFFFFFFFFFFFFF #define LLONG_MIN (curl_off_t)0x8000000000000000 #else #define LLONG_MAX (curl_off_t)0x7FFFFFFFFFFFFFFFLL #define LLONG_MIN (curl_off_t)0x8000000000000000LL #endif # define LLONG_MAX CURL_OFF_T_C(0x7FFFFFFFFFFFFFFF) # define LLONG_MIN CURL_OFF_T_C(0x8000000000000000) #endif /* this is a duplicate of the function that is also used in libcurl */ Loading Loading
lib/strtoofft.h +31 −41 Original line number Diff line number Diff line Loading @@ -7,7 +7,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * * Copyright (C) 1998 - 2004, Daniel Stenberg, <daniel@haxx.se>, et al. * Copyright (C) 1998 - 2008, Daniel Stenberg, <daniel@haxx.se>, et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms Loading @@ -23,52 +23,42 @@ * $Id$ ***************************************************************************/ /* * CAUTION: this header is designed to work when included by the app-side * as well as the library. Do not mix with library internals! */ #include "setup.h" #include <stddef.h> #include <curl/curl.h> /* for the curl_off_t type */ /* Determine what type of file offset conversion handling we wish to use. For * systems with a 32-bit curl_off_t type, we should use strtol. For systems * with a 64-bit curl_off_t type, we should use strtoll if it exists, and if * not, should try to emulate its functionality. At any rate, we define * 'strtoofft' such that it can be used to work with curl_off_t's regardless. /* * Determine which string to integral data type conversion function we use * to implement string conversion to our curl_off_t integral data type. * * Notice that curl_off_t might be 64 or 32 bit wide, and that it might use * an undelying data type which might be 'long', 'int64_t', 'long long' or * '__int64' and more remotely other data types. * * On systems where the size of curl_off_t is greater than the size of 'long' * the conversion funtion to use is strtoll() if it is available, otherwise, * we emulate its functionality with our own clone. * * On systems where the size of curl_off_t is smaller or equal than the size * of 'long' the conversion funtion to use is strtol(). */ #if (CURL_SIZEOF_CURL_OFF_T > 4) && (SIZEOF_LONG < 8) #if (CURL_SIZEOF_CURL_OFF_T > SIZEOF_LONG) # ifdef HAVE_STRTOLL # define curlx_strtoofft strtoll #else /* HAVE_STRTOLL */ /* For MSVC7 we can use _strtoi64() which seems to be a strtoll() clone */ # else # if defined(_MSC_VER) && (_MSC_VER >= 1300) _CRTIMP __int64 __cdecl _strtoi64(const char *, char **, int); /* in <crt/stdlib.h> */ _CRTIMP __int64 __cdecl _strtoi64(const char *, char **, int); # define curlx_strtoofft _strtoi64 #else /* MSVC7 or later */ # else curl_off_t curlx_strtoll(const char *nptr, char **endptr, int base); # define curlx_strtoofft curlx_strtoll #define NEED_CURL_STRTOLL #endif /* MSVC7 or later */ #endif /* HAVE_STRTOLL */ #else /* (CURL_SIZEOF_CURL_OFF_T > 4) && (SIZEOF_LONG < 8) */ /* simply use strtol() to get numbers, either 32 or 64 bit */ #define curlx_strtoofft strtol # endif #if defined(_MSC_VER) || defined(__WATCOMC__) #define CURL_LLONG_MIN 0x8000000000000000i64 #define CURL_LLONG_MAX 0x7FFFFFFFFFFFFFFFi64 #elif defined(HAVE_LL) #define CURL_LLONG_MIN 0x8000000000000000LL #define CURL_LLONG_MAX 0x7FFFFFFFFFFFFFFFLL # endif #else #define CURL_LLONG_MIN 0x8000000000000000L #define CURL_LLONG_MAX 0x7FFFFFFFFFFFFFFFL # define curlx_strtoofft strtol #endif #define CURL_LLONG_MAX CURL_OFF_T_C(0x7FFFFFFFFFFFFFFF) #define CURL_LLONG_MIN CURL_OFF_T_C(0x8000000000000000) #endif
src/main.c +3 −11 Original line number Diff line number Diff line Loading @@ -1387,21 +1387,13 @@ static int str2num(long *val, const char *str) */ static int str2offset(curl_off_t *val, const char *str) { #if CURL_SIZEOF_CURL_OFF_T > 4 #if (CURL_SIZEOF_CURL_OFF_T > SIZEOF_LONG) /* Ugly, but without going through a bunch of rigmarole, we don't have the * definitions for LLONG_{MIN,MAX} or LONG_LONG_{MIN,MAX}. */ #ifndef LLONG_MAX #if defined(_MSC_VER) #define LLONG_MAX (curl_off_t)0x7FFFFFFFFFFFFFFFi64 #define LLONG_MIN (curl_off_t)0x8000000000000000i64 #elif defined(_CRAYC) #define LLONG_MAX (curl_off_t)0x7FFFFFFFFFFFFFFF #define LLONG_MIN (curl_off_t)0x8000000000000000 #else #define LLONG_MAX (curl_off_t)0x7FFFFFFFFFFFFFFFLL #define LLONG_MIN (curl_off_t)0x8000000000000000LL #endif # define LLONG_MAX CURL_OFF_T_C(0x7FFFFFFFFFFFFFFF) # define LLONG_MIN CURL_OFF_T_C(0x8000000000000000) #endif /* this is a duplicate of the function that is also used in libcurl */ Loading