From d9307887319c2063b7c5020e61d86960b19d4120 Mon Sep 17 00:00:00 2001 From: Yves Rizoud Date: Sun, 14 Sep 2008 20:21:46 +0000 Subject: [PATCH] I/O converted to use fopen,fread,fwrite. git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@148 416bcca6-2ee7-4201-b75f-2eb2f807beb1 --- loadsave.c | 697 ++++++++++++++++++++++++++--------------------------- 1 file changed, 344 insertions(+), 353 deletions(-) diff --git a/loadsave.c b/loadsave.c index ab4267e8..4113eb34 100644 --- a/loadsave.c +++ b/loadsave.c @@ -26,12 +26,6 @@ #define endian_magic(x) (SDL_Swap16(x)) #endif -#ifdef S_IRGRP - #define PERMISSIONS_ECRITURE (S_IRUSR|S_IWUSR|S_IRGRP) -#else - #define PERMISSIONS_ECRITURE (S_IRUSR|S_IWUSR) -#endif - #define FILENAMESPACE 16 // Conversion des words d'une structure, si necessaire sur cette plate-forme @@ -58,6 +52,20 @@ void Retraite_DWord_LittleEndian(dword * Adresse[]) #endif } +// Lit des octets +// Renvoie -1 si OK, 0 en cas d'erreur +int read_bytes(FILE *Fichier, void *Dest, size_t Taille) +{ + return fread(Dest, 1, Taille, Fichier) == Taille; +} +// Ecrit des octets +// Renvoie -1 si OK, 0 en cas d'erreur +int write_bytes(FILE *Fichier, void *Dest, size_t Taille) +{ + return fwrite(Dest, Taille, 1, Fichier) == Taille; +} + + // Chargement des pixels dans l'écran principal void Pixel_Chargement_dans_ecran_courant(word Pos_X,word Pos_Y,byte Couleur) { @@ -184,7 +192,7 @@ void Initialiser_preview_24b(int Largeur,int Hauteur) { // Afficher un message d'erreur - // Pour ˆtre s–r que ce soit lisible. + // Pour être s–r que ce soit lisible. Calculer_couleurs_menu_optimales(Principal_Palette); Message_Memoire_insuffisante(); if (Pixel_de_chargement==Pixel_Chargement_dans_ecran_courant) @@ -202,9 +210,9 @@ void Initialiser_preview_24b(int Largeur,int Hauteur) void Initialiser_preview(short Largeur,short Hauteur,long Taille,int Format) // -// Cette procédure doit ˆtre appelée par les routines de chargement +// Cette procédure doit être appelée par les routines de chargement // d'images. -// Elle doit ˆtre appelée entre le moment o— l'on connait la dimension de +// Elle doit être appelée entre le moment o— l'on connait la dimension de // l'image (dimension réelle, pas dimension tronquée) et l'affichage du // premier point. // @@ -293,7 +301,7 @@ void Initialiser_preview(short Largeur,short Hauteur,long Taille,int Format) { if (Backup_avec_nouvelles_dimensions(0,Largeur,Hauteur)) { - // La nouvelle page a pu ˆtre allouée, elle est pour l'instant pleine + // La nouvelle page a pu être allouée, elle est pour l'instant pleine // de 0s. Elle fait Principal_Largeur_image de large. // Normalement tout va bien, tout est sous contr“le... } @@ -301,7 +309,7 @@ void Initialiser_preview(short Largeur,short Hauteur,long Taille,int Format) { // Afficher un message d'erreur - // Pour ˆtre s–r que ce soit lisible. + // Pour être s–r que ce soit lisible. Calculer_couleurs_menu_optimales(Principal_Palette); Message_Memoire_insuffisante(); Erreur_fichier=1; // 1 => On n'a pas perdu l'image courante @@ -409,11 +417,11 @@ void Init_lecture(void) Index_lecture=64000; } -byte Lire_octet(int Fichier) +byte Lire_octet(FILE *Fichier) { if (++Index_lecture>=64000) { - if (read(Fichier,Tampon_lecture,64000)<=0) + if (read_bytes(Fichier,Tampon_lecture,64000)) Erreur_fichier=2; Index_lecture=0; } @@ -436,21 +444,21 @@ void Init_ecriture(void) Index_ecriture=0; } -void Ecrire_octet(int Fichier, byte Octet) +void Ecrire_octet(FILE *Fichier, byte Octet) { Tampon_ecriture[Index_ecriture++]=Octet; if (Index_ecriture>=64000) { - if (write(Fichier,Tampon_ecriture,64000)==-1) + if (! write_bytes(Fichier,Tampon_ecriture,64000)) Erreur_fichier=1; Index_ecriture=0; } } -void Close_ecriture(int Fichier) +void Close_ecriture(FILE *Fichier) { if (Index_ecriture) - if (write(Fichier,Tampon_ecriture,Index_ecriture)==-1) + if (! write_bytes(Fichier,Tampon_ecriture,Index_ecriture)) Erreur_fichier=1; free(Tampon_ecriture); } @@ -513,7 +521,7 @@ void Charger_image(byte Image) { // On appelle le testeur du format: Format_Test[Indice](); - // On s'arrˆte si le fichier est au bon format: + // On s'arrête si le fichier est au bon format: if (Erreur_fichier==0) { Format=Indice; @@ -604,7 +612,7 @@ void Charger_image(byte Image) } else // Sinon, l'appelant sera au courant de l'échec grƒce à Erreur_fichier; - // et si on s'apprˆtait à faire un chargement définitif de l'image (pas + // et si on s'apprêtait à faire un chargement définitif de l'image (pas // une preview), alors on flash l'utilisateur. if (Pixel_de_chargement!=Pixel_Chargement_dans_preview) Erreur(0); @@ -641,7 +649,7 @@ void Sauver_image(byte Image) // -- Tester si un fichier est au format PAL -------------------------------- void Test_PAL(void) { - int Fichier; // Handle du fichier + FILE *Fichier; // Fichier du fichier char Nom_du_fichier[TAILLE_CHEMIN_FICHIER]; // Nom complet du fichier long Taille_du_fichier; // Taille du fichier struct stat Informations_Fichier; @@ -651,14 +659,13 @@ void Test_PAL(void) Erreur_fichier=1; // Ouverture du fichier - Fichier=open(Nom_du_fichier,O_RDONLY|O_BINARY); - if (Fichier!=-1) + if ((Fichier=fopen(Nom_du_fichier, "rb"))) { stat(Nom_du_fichier,&Informations_Fichier); // Lecture de la taille du fichier Taille_du_fichier=Informations_Fichier.st_size; - close(Fichier); - // Le fichier ne peut ˆtre au format PAL que si sa taille vaut 768 octets + fclose(Fichier); + // Le fichier ne peut être au format PAL que si sa taille vaut 768 octets if (Taille_du_fichier==sizeof(T_Palette)) Erreur_fichier=0; } @@ -668,7 +675,7 @@ void Test_PAL(void) // -- Lire un fichier au format PAL ----------------------------------------- void Load_PAL(void) { - int Handle; // Handle du fichier + FILE *Fichier; // Fichier du fichier char Nom_du_fichier[TAILLE_CHEMIN_FICHIER]; // Nom complet du fichier //long Taille_du_fichier; // Taille du fichier @@ -677,13 +684,12 @@ void Load_PAL(void) Erreur_fichier=0; // Ouverture du fichier - Handle=open(Nom_du_fichier,O_RDONLY|O_BINARY); - if (Handle!=-1) + if ((Fichier=fopen(Nom_du_fichier, "rb"))) { // Initialiser_preview(???); // Pas possible... pas d'image... // Lecture du fichier dans Principal_Palette - if (read(Handle,Principal_Palette,sizeof(T_Palette))==sizeof(T_Palette)) + if (read_bytes(Fichier,Principal_Palette,sizeof(T_Palette))) { Set_palette(Principal_Palette); Remapper_fileselect(); @@ -695,7 +701,7 @@ void Load_PAL(void) Erreur_fichier=2; // Fermeture du fichier - close(Handle); + fclose(Fichier); } else // Si on n'a pas réussi à ouvrir le fichier, alors il y a eu une erreur @@ -706,7 +712,7 @@ void Load_PAL(void) // -- Sauver un fichier au format PAL --------------------------------------- void Save_PAL(void) { - int Fichier; // Handle du fichier + FILE *Fichier; // Fichier du fichier char Nom_du_fichier[TAILLE_CHEMIN_FICHIER]; // Nom complet du fichier //long Taille_du_fichier; // Taille du fichier @@ -715,28 +721,27 @@ void Save_PAL(void) Erreur_fichier=0; // Ouverture du fichier - Fichier=open(Nom_du_fichier,O_WRONLY|O_CREAT|O_TRUNC|O_BINARY,PERMISSIONS_ECRITURE); - if (Fichier!=-1) + if ((Fichier=fopen(Nom_du_fichier,"wb"))) { // Enregistrement de Principal_Palette dans le fichier - if (write(Fichier,Principal_Palette,sizeof(T_Palette))==-1) + if (! write_bytes(Fichier,Principal_Palette,sizeof(T_Palette))) { Erreur_fichier=1; - close(Fichier); + fclose(Fichier); remove(Nom_du_fichier); } else // Ecriture correcte => Fermeture normale du fichier - close(Fichier); + fclose(Fichier); } else // Si on n'a pas réussi à ouvrir le fichier, alors il y a eu une erreur { Erreur_fichier=1; - close(Fichier); + fclose(Fichier); remove(Nom_du_fichier); // On se fout du résultat de l'opération car si ‡a // renvoie 0 c'est que le fichier avait été partiel- // -lement écrit, sinon pas du tout. Or dans tous les - // cas ‡a revient au mˆme pour nous: Sauvegarde ratée! + // cas ‡a revient au même pour nous: Sauvegarde ratée! } } @@ -758,7 +763,7 @@ typedef struct // -- Tester si un fichier est au format IMG -------------------------------- void Test_IMG(void) { - int Handle; // Handle du fichier + FILE *Fichier; // Fichier du fichier char Nom_du_fichier[TAILLE_CHEMIN_FICHIER]; // Nom complet du fichier T_Header_IMG IMG_Header; byte Signature[6]={0x01,0x00,0x47,0x12,0x6D,0xB0}; @@ -769,18 +774,17 @@ void Test_IMG(void) Erreur_fichier=1; // Ouverture du fichier - Handle=open(Nom_du_fichier,O_RDONLY|O_BINARY); - if (Handle!=-1) + if ((Fichier=fopen(Nom_du_fichier, "rb"))) { // Lecture et vérification de la signature - if ((read(Handle,&IMG_Header,sizeof(T_Header_IMG)))==sizeof(T_Header_IMG)) + if (read_bytes(Fichier,&IMG_Header,sizeof(T_Header_IMG))) { if ( (!memcmp(IMG_Header.Filler1,Signature,6)) && IMG_Header.Largeur && IMG_Header.Hauteur) Erreur_fichier=0; } // Fermeture du fichier - close(Handle); + fclose(Fichier); } } @@ -790,7 +794,7 @@ void Load_IMG(void) { char Nom_du_fichier[TAILLE_CHEMIN_FICHIER]; // Nom complet du fichier byte * Buffer; - int Fichier; + FILE *Fichier; word Pos_X,Pos_Y; long Largeur_lue; long Taille_du_fichier; @@ -802,12 +806,12 @@ void Load_IMG(void) Erreur_fichier=0; - if ((Fichier=open(Nom_du_fichier,O_RDONLY|O_BINARY))!=-1) + if ((Fichier=fopen(Nom_du_fichier, "rb"))) { stat(Nom_du_fichier,Informations_Fichier); Taille_du_fichier=Informations_Fichier->st_size; - if (read(Fichier,&IMG_Header,sizeof(T_Header_IMG))==sizeof(T_Header_IMG)) + if (read_bytes(Fichier,&IMG_Header,sizeof(T_Header_IMG))) { Buffer=(byte *)malloc(IMG_Header.Largeur); @@ -829,7 +833,7 @@ void Load_IMG(void) for (Pos_Y=0;(Pos_YTAILLE_COMMENTAIRE) { @@ -1012,12 +1014,12 @@ void Load_PKM(void) else Couleur=0; - if (read(Fichier,Principal_Commentaire,Octet)==Octet) + if (read_bytes(Fichier,Principal_Commentaire,Octet)) { Indice+=Octet; Principal_Commentaire[Octet]='\0'; if (Couleur) - if (lseek(Fichier,Couleur,SEEK_CUR)==-1) + if (fseek(Fichier,Couleur,SEEK_CUR)) Erreur_fichier=2; } else @@ -1028,13 +1030,13 @@ void Load_PKM(void) break; case 1 : // Dimensions de l'écran d'origine - if (read(Fichier,&Octet,1)==1) + if (read_bytes(Fichier,&Octet,1)) { if (Octet==4) { Indice+=4; - if ( (read(Fichier,&Ecran_original_X,2)!=2) - || (read(Fichier,&Ecran_original_Y,2)!=2) ) + if ( ! read_bytes(Fichier,&Ecran_original_X,2) + || !read_bytes(Fichier,&Ecran_original_Y,2) ) Erreur_fichier=2; } else @@ -1045,12 +1047,12 @@ void Load_PKM(void) break; case 2 : // Couleur de transparence - if (read(Fichier,&Octet,1)==1) + if (read_bytes(Fichier,&Octet,1)) { if (Octet==1) { Indice++; - if (read(Fichier,&Back_color,1)!=1) + if (! read_bytes(Fichier,&Back_color,1)) Erreur_fichier=2; } else @@ -1061,10 +1063,10 @@ void Load_PKM(void) break; default: - if (read(Fichier,&Octet,1)==1) + if (read_bytes(Fichier,&Octet,1)) { Indice+=Octet; - if (lseek(Fichier,Octet,SEEK_CUR)==-1) + if (fseek(Fichier,Octet,SEEK_CUR)) Erreur_fichier=2; } else @@ -1144,7 +1146,7 @@ void Load_PKM(void) else // Lecture header impossible: Erreur ne modifiant pas l'image Erreur_fichier=1; - close(Fichier); + fclose(Fichier); } else // Ouv. fichier impossible: Erreur ne modifiant pas l'image Erreur_fichier=1; @@ -1168,7 +1170,7 @@ void Load_PKM(void) // Ensuite Recon1 devient celle la moins utilisée de celles-ci *Recon1=0; Best=1; - NBest=INT_MAX; // Une mˆme couleur ne pourra jamais ˆtre utilisée 1M de fois. + NBest=INT_MAX; // Une même couleur ne pourra jamais être utilisée 1M de fois. for (Indice=1;Indice<=255;Indice++) if (Find_recon[Indice]>16)+(Temp<<16)); @@ -1386,9 +1387,9 @@ void Test_LBM(void) Erreur_fichier=0; - if ((LBM_Fichier=open(Nom_du_fichier,O_RDONLY|O_BINARY))!=-1) + if ((LBM_Fichier=fopen(Nom_du_fichier, "rb"))) { - if (read(LBM_Fichier,Section,4)!=4) + if (! read_bytes(LBM_Fichier,Section,4)) Erreur_fichier=1; else if (memcmp(Section,"FORM",4)) @@ -1400,13 +1401,13 @@ void Test_LBM(void) // fichiers tronqués (et déjà que c'est chiant de perdre // une partie du fichier il faut quand même pouvoir en // garder un peu... Sinon, moi je pleure :'( !!! ) - if (read(LBM_Fichier,Format,4)!=4) + if (! read_bytes(LBM_Fichier,Format,4)) Erreur_fichier=1; else if ( (memcmp(Format,"ILBM",4)) && (memcmp(Format,"PBM ",4)) ) Erreur_fichier=1; } - close(LBM_Fichier); + fclose(LBM_Fichier); } else Erreur_fichier=1; @@ -1528,7 +1529,7 @@ void Test_LBM(void) dword Taille_section; byte Section_lue[4]; - if (read(LBM_Fichier,Section_lue,4)!=4) + if (! read_bytes(LBM_Fichier,Section_lue,4)) return 0; while (memcmp(Section_lue,Section_attendue,4)) // Sect. pas encore trouvée { @@ -1537,9 +1538,9 @@ void Test_LBM(void) return 0; if (Taille_section&1) Taille_section++; - if (lseek(LBM_Fichier,Taille_section,SEEK_CUR)==-1) + if (fseek(LBM_Fichier,Taille_section,SEEK_CUR)) return 0; - if (read(LBM_Fichier,Section_lue,4)!=4) + if (! read_bytes(LBM_Fichier,Section_lue,4)) return 0; } return 1; @@ -1647,33 +1648,33 @@ void Load_LBM(void) Erreur_fichier=0; - if ((LBM_Fichier=open(Nom_du_fichier,O_RDONLY|O_BINARY))!=-1) + if ((LBM_Fichier=fopen(Nom_du_fichier, "rb"))) { stat(Nom_du_fichier,&Informations_Fichier); Taille_du_fichier=Informations_Fichier.st_size; // On avance dans le fichier (pas besoin de tester ce qui l'a déjà été) - read(LBM_Fichier,Section,4); + read_bytes(LBM_Fichier,Section,4); Lire_long(); - read(LBM_Fichier,Format,4); + read_bytes(LBM_Fichier,Format,4); if (!Wait_for((byte *)"BMHD")) Erreur_fichier=1; Lire_long(); // Maintenant on lit le header pour pouvoir commencer le chargement de l'image - if ( (read(LBM_Fichier,&Header.Width,sizeof(Header.Width))==sizeof(Header.Width)) - && (read(LBM_Fichier,&Header.Height,sizeof(Header.Height))==sizeof(Header.Height)) - && (read(LBM_Fichier,&Header.Xorg,sizeof(Header.Xorg))==sizeof(Header.Xorg)) - && (read(LBM_Fichier,&Header.Yorg,sizeof(Header.Yorg))==sizeof(Header.Yorg)) - && (read(LBM_Fichier,&Header.BitPlanes,sizeof(Header.BitPlanes))==sizeof(Header.BitPlanes)) - && (read(LBM_Fichier,&Header.Mask,sizeof(Header.Mask))==sizeof(Header.Mask)) - && (read(LBM_Fichier,&Header.Compression,sizeof(Header.Compression))==sizeof(Header.Compression)) - && (read(LBM_Fichier,&Header.Pad1,sizeof(Header.Pad1))==sizeof(Header.Pad1)) - && (read(LBM_Fichier,&Header.Transp_col,sizeof(Header.Transp_col))==sizeof(Header.Transp_col)) - && (read(LBM_Fichier,&Header.Xaspect,sizeof(Header.Xaspect))==sizeof(Header.Xaspect)) - && (read(LBM_Fichier,&Header.Yaspect,sizeof(Header.Yaspect))==sizeof(Header.Yaspect)) - && (read(LBM_Fichier,&Header.Xscreen,sizeof(Header.Xscreen))==sizeof(Header.Xscreen)) - && (read(LBM_Fichier,&Header.Yscreen,sizeof(Header.Yscreen))==sizeof(Header.Yscreen)) + if ( (read_bytes(LBM_Fichier,&Header.Width,sizeof(Header.Width))) + && (read_bytes(LBM_Fichier,&Header.Height,sizeof(Header.Height))) + && (read_bytes(LBM_Fichier,&Header.Xorg,sizeof(Header.Xorg))) + && (read_bytes(LBM_Fichier,&Header.Yorg,sizeof(Header.Yorg))) + && (read_bytes(LBM_Fichier,&Header.BitPlanes,sizeof(Header.BitPlanes))) + && (read_bytes(LBM_Fichier,&Header.Mask,sizeof(Header.Mask))) + && (read_bytes(LBM_Fichier,&Header.Compression,sizeof(Header.Compression))) + && (read_bytes(LBM_Fichier,&Header.Pad1,sizeof(Header.Pad1))) + && (read_bytes(LBM_Fichier,&Header.Transp_col,sizeof(Header.Transp_col))) + && (read_bytes(LBM_Fichier,&Header.Xaspect,sizeof(Header.Xaspect))) + && (read_bytes(LBM_Fichier,&Header.Yaspect,sizeof(Header.Yaspect))) + && (read_bytes(LBM_Fichier,&Header.Xscreen,sizeof(Header.Xscreen))) + && (read_bytes(LBM_Fichier,&Header.Yscreen,sizeof(Header.Yscreen))) && Header.Width && Header.Height) { if ( (Header.BitPlanes) && (Wait_for((byte *)"CMAP")) ) @@ -1691,7 +1692,7 @@ void Load_LBM(void) if ((Header.BitPlanes==6) || (Header.BitPlanes==8)) Image_HAM=Header.BitPlanes; else - // Erreur_fichier=1; /* C'est censé ˆtre incorrect mais j'ai */ + // Erreur_fichier=1; /* C'est censé être incorrect mais j'ai */ Image_HAM=0; /* trouvé un fichier comme ‡a, alors... */ } } @@ -1715,7 +1716,7 @@ void Load_LBM(void) else Palette_64_to_256(Principal_Palette); // On peut maintenant charger la nouvelle palette - if (read(LBM_Fichier,Principal_Palette,3*Nb_couleurs)==(3*Nb_couleurs)) + if (read_bytes(LBM_Fichier,Principal_Palette,3*Nb_couleurs)) { Palette_256_to_64(Principal_Palette); if (Image_HAM) @@ -1725,7 +1726,7 @@ void Load_LBM(void) // On lit l'octet de padding du CMAP si la taille est impaire if (Nb_couleurs&1) - if (read(LBM_Fichier,&Octet,1)==1) + if (read_bytes(LBM_Fichier,&Octet,1)) Erreur_fichier=2; if ( (Wait_for((byte *)"BODY")) && (!Erreur_fichier) ) @@ -1760,7 +1761,7 @@ void Load_LBM(void) DEBUG("Fichier LBM NON compressé",0); for (Pos_Y=0; ((Pos_Y>16)+(Temp<<16); - if (write(LBM_Fichier,&Valeur,4)==-1) + if (! write_bytes(LBM_Fichier,&Valeur,4)) Erreur_fichier=1; } @@ -1958,7 +1959,7 @@ void Load_LBM(void) LBM_Mode_repetition=1; } } - else // La couleur n'est pas la mˆme que la précédente + else // La couleur n'est pas la même que la précédente { if (!LBM_Mode_repetition) // On conserve le mode... { @@ -1992,13 +1993,12 @@ void Save_LBM(void) Nom_fichier_complet(Nom_du_fichier,0); // Ouverture du fichier - LBM_Fichier=open(Nom_du_fichier,O_WRONLY|O_CREAT|O_TRUNC|O_BINARY,PERMISSIONS_ECRITURE); - if (LBM_Fichier!=-1) + if ((LBM_Fichier=fopen(Nom_du_fichier,"wb"))) { - write(LBM_Fichier,"FORM",4); + write_bytes(LBM_Fichier,"FORM",4); Ecrire_long(0); // On mettra la taille à jour à la fin - write(LBM_Fichier,"PBM BMHD",8); + write_bytes(LBM_Fichier,"PBM BMHD",8); Ecrire_long(20); // On corrige la largeur de l'image pour qu'elle soit multiple de 2 @@ -2019,16 +2019,16 @@ void Save_LBM(void) swab((byte *)&Largeur_ecran,(byte *)&Header.Xscreen,2); swab((byte *)&Hauteur_ecran,(byte *)&Header.Yscreen,2); - write(LBM_Fichier,&Header,sizeof(T_Header_LBM)); + write_bytes(LBM_Fichier,&Header,sizeof(T_Header_LBM)); - write(LBM_Fichier,"CMAP",4); + write_bytes(LBM_Fichier,"CMAP",4); Ecrire_long(sizeof(T_Palette)); Palette_64_to_256(Principal_Palette); - write(LBM_Fichier,Principal_Palette,sizeof(T_Palette)); + write_bytes(LBM_Fichier,Principal_Palette,sizeof(T_Palette)); Palette_256_to_64(Principal_Palette); - write(LBM_Fichier,"BODY",4); + write_bytes(LBM_Fichier,"BODY",4); Ecrire_long(0); // On mettra la taille à jour à la fin Init_ecriture(); @@ -2045,34 +2045,34 @@ void Save_LBM(void) } Close_ecriture(LBM_Fichier); - close(LBM_Fichier); + fclose(LBM_Fichier); if (!Erreur_fichier) { - LBM_Fichier=open(Nom_du_fichier,O_RDWR); + LBM_Fichier=fopen(Nom_du_fichier,"rb+"); - lseek(LBM_Fichier,820,SEEK_SET); + fseek(LBM_Fichier,820,SEEK_SET); stat(Nom_du_fichier,Informations_Fichier); Ecrire_long((Informations_Fichier->st_size)-824); if (!Erreur_fichier) { - lseek(LBM_Fichier,4,SEEK_SET); + fseek(LBM_Fichier,4,SEEK_SET); // Si la taille de la section de l'image (taille fichier-8) est // impaire, on rajoute un 0 (Padding) à la fin. if ((Informations_Fichier->st_size) & 1) { Ecrire_long((Informations_Fichier->st_size)-7); - lseek(LBM_Fichier,0,SEEK_END); + fseek(LBM_Fichier,0,SEEK_END); Octet=0; - if (write(LBM_Fichier,&Octet,1)==-1) + if (! write_bytes(LBM_Fichier,&Octet,1)) Erreur_fichier=1; } else Ecrire_long((Informations_Fichier->st_size)-8); - close(LBM_Fichier); + fclose(LBM_Fichier); if (Erreur_fichier) remove(Nom_du_fichier); @@ -2080,7 +2080,7 @@ void Save_LBM(void) else { Erreur_fichier=1; - close(LBM_Fichier); + fclose(LBM_Fichier); remove(Nom_du_fichier); } } @@ -2124,38 +2124,37 @@ typedef struct void Test_BMP(void) { char Nom_du_fichier[TAILLE_CHEMIN_FICHIER]; - int Fichier; + FILE *Fichier; T_BMP_Header Header; Erreur_fichier=1; Nom_fichier_complet(Nom_du_fichier,0); - if ((Fichier=open(Nom_du_fichier,O_RDONLY|O_BINARY))!=-1) + if ((Fichier=fopen(Nom_du_fichier, "rb"))) { - if (read(Fichier,&(Header.Signature),sizeof(word))==sizeof(word) - && read(Fichier,&(Header.Taille_1),sizeof(uint32_t))==sizeof(uint32_t) - && read(Fichier,&(Header.Reserv_1),sizeof(word))==sizeof(word) - && read(Fichier,&(Header.Reserv_2),sizeof(word))==sizeof(word) - && read(Fichier,&(Header.Decalage),sizeof(uint32_t))==sizeof(uint32_t) - && read(Fichier,&(Header.Taille_2),sizeof(uint32_t))==sizeof(uint32_t) - && read(Fichier,&(Header.Largeur),sizeof(uint32_t))==sizeof(uint32_t) - && read(Fichier,&(Header.Hauteur),sizeof(uint32_t))==sizeof(uint32_t) - && read(Fichier,&(Header.Plans),sizeof(word))==sizeof(word) - && read(Fichier,&(Header.Nb_bits),sizeof(word))==sizeof(word) - && read(Fichier,&(Header.Compression),sizeof(uint32_t))==sizeof(uint32_t) - && read(Fichier,&(Header.Taille_3),sizeof(uint32_t))==sizeof(uint32_t) - && read(Fichier,&(Header.XPM),sizeof(uint32_t))==sizeof(uint32_t) - && read(Fichier,&(Header.YPM),sizeof(uint32_t))==sizeof(uint32_t) - && read(Fichier,&(Header.Nb_Clr),sizeof(uint32_t))==sizeof(uint32_t) - && read(Fichier,&(Header.Clr_Imprt),sizeof(uint32_t))==sizeof(uint32_t) - + if (read_bytes(Fichier,&(Header.Signature),sizeof(word)) + && read_bytes(Fichier,&(Header.Taille_1),sizeof(uint32_t)) + && read_bytes(Fichier,&(Header.Reserv_1),sizeof(word)) + && read_bytes(Fichier,&(Header.Reserv_2),sizeof(word)) + && read_bytes(Fichier,&(Header.Decalage),sizeof(uint32_t)) + && read_bytes(Fichier,&(Header.Taille_2),sizeof(uint32_t)) + && read_bytes(Fichier,&(Header.Largeur),sizeof(uint32_t)) + && read_bytes(Fichier,&(Header.Hauteur),sizeof(uint32_t)) + && read_bytes(Fichier,&(Header.Plans),sizeof(word)) + && read_bytes(Fichier,&(Header.Nb_bits),sizeof(word)) + && read_bytes(Fichier,&(Header.Compression),sizeof(uint32_t)) + && read_bytes(Fichier,&(Header.Taille_3),sizeof(uint32_t)) + && read_bytes(Fichier,&(Header.XPM),sizeof(uint32_t)) + && read_bytes(Fichier,&(Header.YPM),sizeof(uint32_t)) + && read_bytes(Fichier,&(Header.Nb_Clr),sizeof(uint32_t)) + && read_bytes(Fichier,&(Header.Clr_Imprt),sizeof(uint32_t)) ) { if ( (Header.Signature==0x4D42) && (Header.Taille_2==40) && Header.Largeur && Header.Hauteur ) Erreur_fichier=0; } - close(Fichier); + fclose(Fichier); } } @@ -2164,7 +2163,7 @@ void Test_BMP(void) void Load_BMP(void) { char Nom_du_fichier[TAILLE_CHEMIN_FICHIER]; - int Fichier; + FILE *Fichier; T_BMP_Header Header; byte * Buffer; word Indice; @@ -2182,27 +2181,27 @@ void Load_BMP(void) Erreur_fichier=0; - if ((Fichier=open(Nom_du_fichier,O_RDONLY|O_BINARY))!=-1) + if ((Fichier=fopen(Nom_du_fichier, "rb"))) { stat(Nom_du_fichier,&Informations_Fichier); Taille_du_fichier=Informations_Fichier.st_size; - if (read(Fichier,&(Header.Signature),sizeof(word))==sizeof(word) - && read(Fichier,&(Header.Taille_1),sizeof(uint32_t))==sizeof(uint32_t) - && read(Fichier,&(Header.Reserv_1),sizeof(word))==sizeof(word) - && read(Fichier,&(Header.Reserv_2),sizeof(word))==sizeof(word) - && read(Fichier,&(Header.Decalage),sizeof(uint32_t))==sizeof(uint32_t) - && read(Fichier,&(Header.Taille_2),sizeof(uint32_t))==sizeof(uint32_t) - && read(Fichier,&(Header.Largeur),sizeof(uint32_t))==sizeof(uint32_t) - && read(Fichier,&(Header.Hauteur),sizeof(uint32_t))==sizeof(uint32_t) - && read(Fichier,&(Header.Plans),sizeof(word))==sizeof(word) - && read(Fichier,&(Header.Nb_bits),sizeof(word))==sizeof(word) - && read(Fichier,&(Header.Compression),sizeof(uint32_t))==sizeof(uint32_t) - && read(Fichier,&(Header.Taille_3),sizeof(uint32_t))==sizeof(uint32_t) - && read(Fichier,&(Header.XPM),sizeof(uint32_t))==sizeof(uint32_t) - && read(Fichier,&(Header.YPM),sizeof(uint32_t))==sizeof(uint32_t) - && read(Fichier,&(Header.Nb_Clr),sizeof(uint32_t))==sizeof(uint32_t) - && read(Fichier,&(Header.Clr_Imprt),sizeof(uint32_t))==sizeof(uint32_t) + if (read_bytes(Fichier,&(Header.Signature),sizeof(word)) + && read_bytes(Fichier,&(Header.Taille_1),sizeof(uint32_t)) + && read_bytes(Fichier,&(Header.Reserv_1),sizeof(word)) + && read_bytes(Fichier,&(Header.Reserv_2),sizeof(word)) + && read_bytes(Fichier,&(Header.Decalage),sizeof(uint32_t)) + && read_bytes(Fichier,&(Header.Taille_2),sizeof(uint32_t)) + && read_bytes(Fichier,&(Header.Largeur),sizeof(uint32_t)) + && read_bytes(Fichier,&(Header.Hauteur),sizeof(uint32_t)) + && read_bytes(Fichier,&(Header.Plans),sizeof(word)) + && read_bytes(Fichier,&(Header.Nb_bits),sizeof(word)) + && read_bytes(Fichier,&(Header.Compression),sizeof(uint32_t)) + && read_bytes(Fichier,&(Header.Taille_3),sizeof(uint32_t)) + && read_bytes(Fichier,&(Header.XPM),sizeof(uint32_t)) + && read_bytes(Fichier,&(Header.YPM),sizeof(uint32_t)) + && read_bytes(Fichier,&(Header.Nb_Clr),sizeof(uint32_t)) + && read_bytes(Fichier,&(Header.Clr_Imprt),sizeof(uint32_t)) ) { switch (Header.Nb_bits) @@ -2224,7 +2223,7 @@ void Load_BMP(void) Initialiser_preview(Header.Largeur,Header.Hauteur,Taille_du_fichier,FORMAT_BMP); if (Erreur_fichier==0) { - if (read(Fichier,Palette_locale,Nb_Couleurs<<2)==(Nb_Couleurs<<2)) + if (read_bytes(Fichier,Palette_locale,Nb_Couleurs<<2)) { // On commence par passer la palette en 256 comme ça, si la nouvelle // palette a moins de 256 coul, la précédente ne souffrira pas d'un @@ -2259,7 +2258,7 @@ void Load_BMP(void) Buffer=(byte *)malloc(Taille_ligne); for (Pos_Y=Principal_Hauteur_image-1; ((Pos_Y>=0) && (!Erreur_fichier)); Pos_Y--) { - if (read(Fichier,Buffer,Taille_ligne)==Taille_ligne) + if (read_bytes(Fichier,Buffer,Taille_ligne)) for (Pos_X=0; Pos_X=0) && (!Erreur_fichier)); Pos_Y--) { - if (read(Fichier,Buffer,Taille_ligne)==Taille_ligne) + if (read_bytes(Fichier,Buffer,Taille_ligne)) for (Pos_X=0,Indice=0; Pos_X> 3)+1) << 3; @@ -2476,7 +2474,7 @@ void Save_BMP(void) Header.Nb_Clr =0; Header.Clr_Imprt =0; - if (write(Fichier,&Header,sizeof(T_BMP_Header))!=-1) + if (write_bytes(Fichier,&Header,sizeof(T_BMP_Header))) { // Chez Bill, ils ont dit: "On va mettre les couleur dans l'ordre // inverse, et pour faire chier, on va les mettre sur une échelle de @@ -2495,26 +2493,26 @@ void Save_BMP(void) } Palette_256_to_64(Principal_Palette); - if (write(Fichier,Palette_locale,1024)!=-1) + if (write_bytes(Fichier,Palette_locale,1024)) { Init_ecriture(); // ... Et Bill, il a dit: "OK les gars! Mais seulement si vous rangez - // les pixels dans l'ordre inverse, mais que sur les Y quand-mˆme + // les pixels dans l'ordre inverse, mais que sur les Y quand-même // parce que faut pas pousser." for (Pos_Y=Principal_Hauteur_image-1; ((Pos_Y>=0) && (!Erreur_fichier)); Pos_Y--) for (Pos_X=0; Pos_X=5) && (Taille_du_fichier>(256*3)) ) { - lseek(Fichier,Taille_du_fichier-((256*3)+1),SEEK_SET); + fseek(Fichier,Taille_du_fichier-((256*3)+1),SEEK_SET); // On regarde s'il y a une palette après les données de l'image - if (read(Fichier,&Octet1,1)==1) + if (read_bytes(Fichier,&Octet1,1)) if (Octet1==12) // Lire la palette si c'est une image en 256 couleurs { int indice; // On lit la palette 256c que ces crétins ont foutue à la fin du fichier for(indice=0;indice<256;indice++) - if ((read(Fichier,&Principal_Palette[indice].R,1)!=1) - || (read(Fichier,&Principal_Palette[indice].V,1)!=1) - || (read(Fichier,&Principal_Palette[indice].B,1)!=1)) + if ( ! read_bytes(Fichier,&Principal_Palette[indice].R,1) + || ! read_bytes(Fichier,&Principal_Palette[indice].V,1) + || ! read_bytes(Fichier,&Principal_Palette[indice].B,1) ) { Erreur_fichier=2; DEBUG("ERROR READING PCX PALETTE !",indice); @@ -3542,7 +3539,7 @@ void Load_PCX(void) // Maintenant qu'on a lu la palette que ces crétins sont allés foutre // à la fin, on retourne juste après le header pour lire l'image. - lseek(Fichier,128,SEEK_SET); + fseek(Fichier,128,SEEK_SET); if (!Erreur_fichier) { @@ -3636,7 +3633,7 @@ void Load_PCX(void) { for (Pos_Y=0;(Pos_Yst_size; @@ -3976,8 +3973,8 @@ void Load_CEL(void) { // On réessaye avec le nouveau format - lseek(Fichier,0,SEEK_SET); - if (read(Fichier,&Header2,sizeof(T_CEL_Header2))==sizeof(T_CEL_Header2)) + fseek(Fichier,0,SEEK_SET); + if (read_bytes(Fichier,&Header2,sizeof(T_CEL_Header2))) { // Chargement d'un fichier CEL avec signature (nouveaux fichiers) @@ -4031,7 +4028,7 @@ void Load_CEL(void) else Erreur_fichier=1; } - close(Fichier); + fclose(Fichier); } else Erreur_fichier=1; @@ -4046,7 +4043,7 @@ void Load_CEL(void) void Save_CEL(void) { char Nom_du_fichier[TAILLE_CHEMIN_FICHIER]; - int Fichier; + FILE *Fichier; T_CEL_Header1 Header1; T_CEL_Header2 Header2; short Pos_X; @@ -4060,7 +4057,7 @@ void Save_CEL(void) Erreur_fichier=0; Nom_fichier_complet(Nom_du_fichier,0); - if ((Fichier=open(Nom_du_fichier,O_WRONLY|O_CREAT|O_TRUNC|O_BINARY,PERMISSIONS_ECRITURE))!=-1) + if ((Fichier=fopen(Nom_du_fichier,"wb"))) { // On regarde si des couleurs >16 sont utilisées dans l'image for (Pos_X=16;((Pos_X<256) && (!Utilisation[Pos_X]));Pos_X++); @@ -4072,7 +4069,7 @@ void Save_CEL(void) Header1.Width =Principal_Largeur_image; Header1.Height=Principal_Hauteur_image; - if (write(Fichier,&Header1,sizeof(T_CEL_Header1))!=-1) + if (write_bytes(Fichier,&Header1,sizeof(T_CEL_Header1))) { // Sauvegarde de l'image Init_ecriture(); @@ -4094,7 +4091,7 @@ void Save_CEL(void) } else Erreur_fichier=1; - close(Fichier); + fclose(Fichier); } else { @@ -4129,7 +4126,7 @@ void Save_CEL(void) for (Pos_X=0;Pos_X<16;Pos_X++) // Initialisation du filler 2 (???) Header2.Filler2[Pos_X]=0; - if (write(Fichier,&Header2,sizeof(T_CEL_Header2))!=-1) + if (write_bytes(Fichier,&Header2,sizeof(T_CEL_Header2))) { // Sauvegarde de l'image Init_ecriture(); @@ -4140,7 +4137,7 @@ void Save_CEL(void) } else Erreur_fichier=1; - close(Fichier); + fclose(Fichier); } if (Erreur_fichier) @@ -4173,7 +4170,7 @@ typedef struct void Test_KCF(void) { char Nom_du_fichier[TAILLE_CHEMIN_FICHIER]; - int Fichier; + FILE *Fichier; T_KCF_Header Buffer; T_CEL_Header2 Header2; int Indice_palette; @@ -4181,11 +4178,11 @@ void Test_KCF(void) Erreur_fichier=0; Nom_fichier_complet(Nom_du_fichier,0); - if ((Fichier=open(Nom_du_fichier,O_RDONLY|O_BINARY))!=-1) + if ((Fichier=fopen(Nom_du_fichier, "rb"))) { - if (filelength(Fichier)==sizeof(T_KCF_Header)) + if (filelength(fileno(Fichier))==sizeof(T_KCF_Header)) { - read(Fichier,&Buffer,sizeof(T_KCF_Header)); + read_bytes(Fichier,&Buffer,sizeof(T_KCF_Header)); // On vérifie une propriété de la structure de palette: for (Indice_palette=0;Indice_palette<10;Indice_palette++) for (Indice_couleur=0;Indice_couleur<16;Indice_couleur++) @@ -4194,7 +4191,7 @@ void Test_KCF(void) } else { - if (read(Fichier,&Header2,sizeof(T_CEL_Header2))==sizeof(T_CEL_Header2)) + if (read_bytes(Fichier,&Header2,sizeof(T_CEL_Header2))) { if (memcmp(Header2.Signa,"KiSS",4)==0) { @@ -4207,7 +4204,7 @@ void Test_KCF(void) else Erreur_fichier=1; } - close(Fichier); + fclose(Fichier); } else Erreur_fichier=1; @@ -4219,7 +4216,7 @@ void Test_KCF(void) void Load_KCF(void) { char Nom_du_fichier[TAILLE_CHEMIN_FICHIER]; - int Fichier; + FILE *Fichier; T_KCF_Header Buffer; T_CEL_Header2 Header2; byte Octet[3]; @@ -4231,14 +4228,14 @@ void Load_KCF(void) Erreur_fichier=0; Nom_fichier_complet(Nom_du_fichier,0); - if ((Fichier=open(Nom_du_fichier,O_RDONLY|O_BINARY))!=-1) + if ((Fichier=fopen(Nom_du_fichier, "rb"))) { - Taille_du_fichier=filelength(Fichier); + Taille_du_fichier=filelength(fileno(Fichier)); if (Taille_du_fichier==sizeof(T_KCF_Header)) { // Fichier KCF à l'ancien format - if (read(Fichier,&Buffer,sizeof(T_KCF_Header))==sizeof(T_KCF_Header)) + if (read_bytes(Fichier,&Buffer,sizeof(T_KCF_Header))) { // Initialiser_preview(???); // Pas possible... pas d'image... @@ -4272,7 +4269,7 @@ void Load_KCF(void) { // Fichier KCF au nouveau format - if (read(Fichier,&Header2,sizeof(T_CEL_Header2))==sizeof(T_CEL_Header2)) + if (read_bytes(Fichier,&Header2,sizeof(T_CEL_Header2))) { // Initialiser_preview(???); // Pas possible... pas d'image... @@ -4288,14 +4285,14 @@ void Load_KCF(void) switch(Header2.Nbbits) { case 12: // RRRR BBBB | 0000 VVVV - read(Fichier,Octet,2); + read_bytes(Fichier,Octet,2); Principal_Palette[Indice].R=(Octet[0] >> 4) << 2; Principal_Palette[Indice].B=(Octet[0] & 15) << 2; Principal_Palette[Indice].V=(Octet[1] & 15) << 2; break; case 24: // RRRR RRRR | VVVV VVVV | BBBB BBBB - read(Fichier,Octet,3); + read_bytes(Fichier,Octet,3); Principal_Palette[Indice].R=Octet[0]>>2; Principal_Palette[Indice].V=Octet[1]>>2; Principal_Palette[Indice].B=Octet[2]>>2; @@ -4319,7 +4316,7 @@ void Load_KCF(void) else Erreur_fichier=1; } - close(Fichier); + fclose(Fichier); } else Erreur_fichier=1; @@ -4333,7 +4330,7 @@ void Load_KCF(void) void Save_KCF(void) { char Nom_du_fichier[TAILLE_CHEMIN_FICHIER]; - int Fichier; + FILE *Fichier; T_KCF_Header Buffer; T_CEL_Header2 Header2; byte Octet[3]; @@ -4347,7 +4344,7 @@ void Save_KCF(void) Erreur_fichier=0; Nom_fichier_complet(Nom_du_fichier,0); - if ((Fichier=open(Nom_du_fichier,O_WRONLY|O_CREAT|O_TRUNC|O_BINARY,PERMISSIONS_ECRITURE))!=-1) + if ((Fichier=fopen(Nom_du_fichier,"wb"))) { // Sauvegarde de la palette @@ -4366,7 +4363,7 @@ void Save_KCF(void) Buffer.Palette[Indice_palette].Couleur[Indice_couleur].Octet2=Principal_Palette[Indice].V>>2; } - if (write(Fichier,&Buffer,sizeof(T_KCF_Header))!=sizeof(T_KCF_Header)) + if (! write_bytes(Fichier,&Buffer,sizeof(T_KCF_Header))) Erreur_fichier=1; } else @@ -4384,7 +4381,7 @@ void Save_KCF(void) for (Indice=0;Indice<16;Indice++) // Initialisation du filler 2 (???) Header2.Filler2[Indice]=0; - if (write(Fichier,&Header2,sizeof(T_CEL_Header2))!=sizeof(T_CEL_Header2)) + if (! write_bytes(Fichier,&Header2,sizeof(T_CEL_Header2))) Erreur_fichier=1; for (Indice=0;(Indice<256) && (!Erreur_fichier);Indice++) @@ -4392,12 +4389,12 @@ void Save_KCF(void) Octet[0]=Principal_Palette[Indice].R<<2; Octet[1]=Principal_Palette[Indice].V<<2; Octet[2]=Principal_Palette[Indice].B<<2; - if (write(Fichier,Octet,3)!=3) + if (! write_bytes(Fichier,Octet,3)) Erreur_fichier=1; } } - close(Fichier); + fclose(Fichier); if (Erreur_fichier) remove(Nom_du_fichier); @@ -4427,7 +4424,7 @@ typedef struct // -- Tester si un fichier est au format SCx -------------------------------- void Test_SCx(void) { - int Handle; // Handle du fichier + FILE *Fichier; // Fichier du fichier char Nom_du_fichier[TAILLE_CHEMIN_FICHIER]; // Nom complet du fichier //byte Signature[3]; T_SCx_Header SCx_Header; @@ -4438,18 +4435,17 @@ void Test_SCx(void) Erreur_fichier=1; // Ouverture du fichier - Handle=open(Nom_du_fichier,O_RDONLY|O_BINARY); - if (Handle!=-1) + if ((Fichier=fopen(Nom_du_fichier, "rb"))) { // Lecture et vérification de la signature - if ((read(Handle,&SCx_Header,sizeof(T_SCx_Header)))==sizeof(T_SCx_Header)) + if ((read_bytes(Fichier,&SCx_Header,sizeof(T_SCx_Header)))) { if ( (!memcmp(SCx_Header.Filler1,"RIX",3)) && SCx_Header.Largeur && SCx_Header.Hauteur) Erreur_fichier=0; } // Fermeture du fichier - close(Handle); + fclose(Fichier); } } @@ -4458,7 +4454,7 @@ void Test_SCx(void) void Load_SCx(void) { char Nom_du_fichier[TAILLE_CHEMIN_FICHIER]; // Nom complet du fichier - int Fichier; + FILE *Fichier; word Pos_X,Pos_Y; long Taille,Vraie_taille; long Taille_du_fichier; @@ -4470,11 +4466,11 @@ void Load_SCx(void) Erreur_fichier=0; - if ((Fichier=open(Nom_du_fichier,O_RDONLY|O_BINARY))!=-1) + if ((Fichier=fopen(Nom_du_fichier, "rb"))) { - Taille_du_fichier=filelength(Fichier); + Taille_du_fichier=filelength(fileno(Fichier)); - if ((read(Fichier,&SCx_Header,sizeof(T_SCx_Header)))==sizeof(T_SCx_Header)) + if ((read_bytes(Fichier,&SCx_Header,sizeof(T_SCx_Header)))) { Initialiser_preview(SCx_Header.Largeur,SCx_Header.Hauteur,Taille_du_fichier,FORMAT_SCx); if (Erreur_fichier==0) @@ -4484,7 +4480,7 @@ void Load_SCx(void) else Taille=sizeof(struct Composantes)*(1<