Gestion des LARGE FILES sous Cygwin
Bonjour,
je cherche à manipuler des fichiers de plus de 4 Go dans un programme C sous Cygwin. J'essaye pour l'instant de récupérer la taille d'un fichier.
voici le code que j'utilise pour l'instant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
DIR* ptdir;
struct dirent* entree;
struct stat64 info;
char file_name[256];
char frame[MAX_FRAME_SIZE];
u32 frame_idx;
[...]
while ((entree = readdir(ptdir)) != NULL)
{
stat64(file_name, &info);
frame[frame_idx++] = (char) ((info.st_size && 0xFF00000000000000ULL) >> 56);
frame[frame_idx++] = (char) ((info.st_size && 0x00FF000000000000ULL) >> 48);
frame[frame_idx++] = (char) ((info.st_size && 0x0000FF0000000000ULL) >> 40);
frame[frame_idx++] = (char) ((info.st_size && 0x000000FF00000000ULL) >> 32);
frame[frame_idx++] = (char) ((info.st_size && 0x00000000FF000000ULL) >> 24);
frame[frame_idx++] = (char) ((info.st_size && 0x0000000000FF0000ULL) >> 16);
frame[frame_idx++] = (char) ((info.st_size && 0x000000000000FF00ULL) >> 8);
frame[frame_idx++] = (char) ((info.st_size && 0x00000000000000FFULL));
} |
Comme mes fichiers sont très gros, je suis censé utiliser stat64() au lieu de stat() (right ?)
or, à la compilation, ca ne passe pas :
Citation:
error: storage size of 'info' isn't known
warning: implicit declaration of function 'stat64'
Je suis allé voir dans la FAQ de Cygwin qui dit ceci :
Citation:
struct stat64 is not used in Cygwin, just use struct stat. It's 64 bit aware.
Cependant, lorsque j'utilise stat, j'ai les warning suivant qui me font dire que je n'aurai pas la taille des gros fichier :
Citation:
warning: right shift count >= with of type
Quelqu'un a-t'il déjà été confronté à ce problème ?
Faut-il définir une variable particulière pour gcc ?
Faut-il reconfigurer quelque chose dans Cygwin ?
Merci !