15 Feb
2012
15 Feb
'12
1:47 p.m.
On Wed, Feb 15, 2012 at 7:30 AM, jjacky <i.am.jack.mail@gmail.com> wrote: > Hi, > > Just a quick question, it might be pretty obvious but I'm still > relatively new at this, so excuse my "noobness." > > While working on a little app using libalpm, I wanted to use the > download callback. But I had a problem, because the total size would > always be zero. I didn't understand why it didn't work, especially since > it did for pacman, which seemed to do exactly the same as I did. > > After investigation, I figured out that this was because I needed to use > a macro when compiling, namely: > #define _FILE_OFFSET_BITS 64 > > Apparently one of the things this does is turn off_t (type of both size > parameters of the dl callback, among other things) into off64_t. I'm > guessing that means one more byte to store the data, and therefore > explains why with my "regular" off_t I didn't get the correct values. > > Thing is, I'm not sure how I was supposed to know that using this macro > was required of me in order to get things to work properly, so my > questions are: > > - how was I supposed to know? :) As in, is there any indication or > something about this written somewhere that I missed? I did look at the > README and such, but couldn't find anything. (and if not, shouldn't > there be, maybe?) > Or is this just usual/common knowledge or something? This is 1) only necessary on 32-bit platforms 2) an unfortunate hack 3) widely known, for the most part- 99% of apps are compiled with this because 32-bits is not enough to have anything > 2GiB signed, or >4 GiB unsigned. > > - any chance there is/are other such things I need to use for things to > work properly? I'm guessing not, but just in case... Don't think so. Your best bet is to look at the pacman side of things as a reference, in addition to the configure.ac file and the generated config.h. -Dan