He terminado un programa y me he topado con un par de bugs.
Uno de ellos tiene que ver con obtener el tamaño de un archivo. Utilizo el siguiente codigo para obtener el tamaño del archivo:
#define __USE_FILE_OFFSET64
#define __USE_LARGEFILE64
#define __USE_LARGEFILE
// Mucho codigo despues...
unsigned int getFileSize(string fileName) {
unsigned int tempReturn = 0;
FILE *temp = fopen64(fileName.c_str(), "rb");
if (temp != NULL) {
feeko64(temp, 0, SEEK_END);
tempReturn = ftello64(temp);
fclose(temp);
}
return tempReturn;
}
El caso es que pese a usar "fopen64()" e incluir los "#define" para usar archivos largos, no supera los 2GB. Estoy haciendo pruebas con un archivo de 2,7GB y me dice que el tamaño es de 2GB.
¿Alguna idea de como puedo solucionarlo?
Lo incluyo todo correctamente y el compilador no me da ningun error. ¿Tendría que añadir algun parametro mas a la orden de compilado?
Uso ubuntu y codeblocks. Supongo que esto es portable a Windows y para mi proximo proyecto necesito dejarlo zanjado porque lo desarrollaré para ambos sistemas operativos.