Есть программа, скомпилированная с _D_FILE_OFFSET_BITS=64(этого требует libfuse). В то же время программа линкуется с библиотекой(libzip), которая компилируется без указания этого дефайна и, следовательно, на 32-битной системе имеет _FILE_OFFSET_BITS=32.
При этом мне надо из библиотеки со оффсетом в 32 получать тип данных off_t, который имеет различный размер при разных _FILE_OFFSET_BITS.
Кусок кода:
struct zip_stat stat;
zip_stat_index(zf, i, 0, &stat);
zip_stat_index описан так: int zip_stat_index(struct zip *, int, int, struct zip_stat *);
struct zip_stat {
const char *name; /* name of the file */
int index; /* index within archive */
unsigned int crc; /* crc of file data */
time_t mtime; /* modification time */
off_t size; /* size of file (uncompressed) */
off_t comp_size; /* size of file (compressed) */
unsigned short comp_method; /* compression method used */
unsigned short encryption_method; /* encryption method used */
};
Вопрос: можно ли как-нибудь без грязных хаков получить из библиотеки правильное число, а не 32 бита правильных данных + 32 бита мусора в off_t главной программы?