Prova a scrivere al posto della riga

long filesize;

la seguente

fpos_t filesize;

in modo da fare in modo che venga usato il tipo "portabile" e che il compilatore possa usare liberamente un puntatore a un valore a 64 bit al posto di quello a 32.