1 2 curl_off_t explained 3 ==================== 4 5curl_off_t is a data type provided by the external libcurl include headers. It 6is the type meant to be used for the curl_easy_setopt() options that end with 7LARGE. The type is 64bit large on most modern platforms. 8 9Transition from < 7.19.0 to >= 7.19.0 10------------------------------------- 11 12Applications that used libcurl before 7.19.0 that are rebuilt with a libcurl 13that is 7.19.0 or later may or may not have to worry about anything of 14this. We have made a significant effort to make the transition really seamless 15and transparent. 16 17You have have to take notice if you are in one of the following situations: 18 19o Your app is using or will after the transition use a libcurl that is built 20 with LFS (large file support) disabled even though your system otherwise 21 supports it. 22 23o Your app is using or will after the transition use a libcurl that doesn't 24 support LFS at all, but your system and compiler support 64bit data types. 25 26In both these cases, the curl_off_t type will now (after the transition) be 2764bit where it previously was 32bit. This will cause a binary incompatibility 28that you MAY need to deal with. 29 30Benefits 31-------- 32 33This new way has several benefits: 34 35o Platforms without LFS support can still use libcurl to do >32 bit file 36 transfers and range operations etc as long as they have >32 bit data-types 37 supported. 38 39o Applications will no longer easily build with the curl_off_t size 40 mismatched, which has been a very frequent (and annoying) problem with 41 libcurl <= 7.18.2 42 43Historically 44------------ 45 46Previously, before 7.19.0, the curl_off_t type would be rather strongly 47connected to the size of the system off_t type, where currently curl_off_t is 48independent of that. 49 50The strong connection to off_t made it troublesome for application authors 51since when they did mistakes, they could get curl_off_t type of different 52sizes in the app vs libcurl, and that caused strange effects that were hard to 53track and detect by users of libcurl. 54 55SONAME 56------ 57 58We opted to not bump the soname for the library unconditionally, simply 59because soname bumping is causing a lot of grief and moaning all over the 60community so we try to keep that at minimum. Also, our selected design path 61should be 100% backwards compatible for the vast majority of all libcurl 62users. 63 64Enforce SONAME bump 65------------------- 66 67If configure doesn't detect your case where a bump is necessary, re-run it 68with the --enable-soname-bump command line option! 69