When gfx2.ini is missing, default values are now taken from gfx2.dat.

Removed a custom toupper() function.

git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@174 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
Yves Rizoud 2008-09-27 20:17:00 +00:00
parent 7197a98fe3
commit 48fca5ceb3
9 changed files with 699 additions and 710 deletions

View File

@ -8,7 +8,7 @@ graph.o: graph.c sdlscreen.h struct.h const.h graph.h divers.h moteur.h \
sdlscreen.o: sdlscreen.c global.h struct.h const.h loadsave.h sdlscreen.h \ sdlscreen.o: sdlscreen.c global.h struct.h const.h loadsave.h sdlscreen.h \
divers.h erreurs.h divers.h erreurs.h
divers.o: divers.c struct.h const.h sdlscreen.h global.h loadsave.h \ divers.o: divers.c struct.h const.h sdlscreen.h global.h loadsave.h \
graph.h erreurs.h boutons.h moteur.h divers.h graph.h erreurs.h boutons.h moteur.h divers.h clavier.h
special.o: special.c const.h struct.h global.h loadsave.h graph.h \ special.o: special.c const.h struct.h global.h loadsave.h graph.h \
moteur.h moteur.h
boutons.o: boutons.c const.h struct.h global.h loadsave.h divers.h \ boutons.o: boutons.c const.h struct.h global.h loadsave.h divers.h \
@ -34,7 +34,8 @@ op_c.o: op_c.c op_c.h struct.h const.h op_asm.h erreurs.h
linux.o: linux.c linux.o: linux.c
op_asm.o: op_asm.c op_c.h struct.h const.h graph.h op_asm.o: op_asm.c op_c.h struct.h const.h graph.h
readini.o: readini.c const.h global.h struct.h loadsave.h readini.o: readini.c const.h global.h struct.h loadsave.h
saveini.o: saveini.c const.h global.h struct.h loadsave.h readini.h saveini.o: saveini.c const.h global.h struct.h loadsave.h readini.h \
files.h erreurs.h
shade.o: shade.c global.h struct.h const.h loadsave.h graph.h moteur.h \ shade.o: shade.c global.h struct.h const.h loadsave.h graph.h moteur.h \
divers.h readline.h divers.h readline.h
clavier.o: clavier.c global.h struct.h const.h loadsave.h clavier.o: clavier.c global.h struct.h const.h loadsave.h

View File

@ -15,6 +15,7 @@
#define BETA2 0 // | #define BETA2 0 // |
#define ALPHA_BETA "ß" // Type de la version "Þ" ou "ß" #define ALPHA_BETA "ß" // Type de la version "Þ" ou "ß"
#define TAILLE_FICHIER_CONFIG 10351 // Taille du fichier GFX2.CFG #define TAILLE_FICHIER_CONFIG 10351 // Taille du fichier GFX2.CFG
#define DAT_DEBUT_INI_PAR_DEFAUT 0xF385 // Dans gfx2.dat, début du fichier gfx2.ini standard
#define NB_MODES_VIDEO 60 // Nombre de modes vidéo #define NB_MODES_VIDEO 60 // Nombre de modes vidéo
#define NB_BOUTONS 38 // Nombre de boutons à gérer #define NB_BOUTONS 38 // Nombre de boutons à gérer
#define NB_TOUCHES 134 // Nombre de combinaisons de touches #define NB_TOUCHES 134 // Nombre de combinaisons de touches
@ -104,7 +105,6 @@ enum CODES_D_ERREURS
ERREUR_NUMERO_MODE, // Erreur de choix de mode sur la ligne de commande ERREUR_NUMERO_MODE, // Erreur de choix de mode sur la ligne de commande
ERREUR_SAUVEGARDE_CFG, // Erreur en écriture pour GFX2.CFG ERREUR_SAUVEGARDE_CFG, // Erreur en écriture pour GFX2.CFG
ERREUR_REPERTOIRE_DISPARU, // Le répertoire de lancement n'existe plus ERREUR_REPERTOIRE_DISPARU, // Le répertoire de lancement n'existe plus
ERREUR_INI_ABSENT, // Le fichier GFX2.INI est absent
ERREUR_INI_CORROMPU, // Le fichier GFX2.INI est corrompu ERREUR_INI_CORROMPU, // Le fichier GFX2.INI est corrompu
ERREUR_SAUVEGARDE_INI, // Le fichier GFX2.INI n'est pas inscriptible ERREUR_SAUVEGARDE_INI, // Le fichier GFX2.INI n'est pas inscriptible
ERREUR_SORRY_SORRY_SORRY // On le refera plus, promis ERREUR_SORRY_SORRY_SORRY // On le refera plus, promis

18
files.h
View File

@ -1,25 +1,25 @@
// Modifie Principal_Repertoire_courant en y mettant sa nouvelle valeur // Modifie Principal_Repertoire_courant en y mettant sa nouvelle valeur
// (avec le nom du disque) // (avec le nom du disque)
int Determiner_repertoire_courant(void); int Determiner_repertoire_courant(void);
// Dtermine si un rpertoire pass en paramŠtre existe ou non dans le // Détermine si un répertoire passé en paramètre existe ou non dans le
// rpertoire courant. // répertoire courant.
int Repertoire_existe(char * Repertoire); int Repertoire_existe(char * Repertoire);
// Dtermine si un fichier pass en paramŠtre existe ou non dans le // Détermine si un fichier passé en paramètre existe ou non dans le
// rpertoire courant. // répertoire courant.
int Fichier_existe(char * Fichier); int Fichier_existe(char * Fichier);
// -- Destruction de la liste chaŒne --------------------------------------- // -- Destruction de la liste chaînée ---------------------------------------
void Detruire_liste_du_fileselect(void); void Detruire_liste_du_fileselect(void);
// -- Lecture d'une liste de fichiers --------------------------------------- // -- Lecture d'une liste de fichiers ---------------------------------------
void Lire_liste_des_fichiers(byte Format_demande); void Lire_liste_des_fichiers(byte Format_demande);
// -- Tri de la liste des fichiers et rpertoires --------------------------- // -- Tri de la liste des fichiers et répertoires ---------------------------
void Trier_la_liste_des_fichiers(void); void Trier_la_liste_des_fichiers(void);
// -- Affichage des lments de la liste de fichier / rpertoire ------------ // -- Affichage des éléments de la liste de fichier / répertoire ------------
void Afficher_la_liste_des_fichiers(short Decalage_premier,short Decalage_select); void Afficher_la_liste_des_fichiers(short Decalage_premier,short Decalage_select);
// -- Rcuprer le libell d'un lment de la liste ------------------------- // -- Récupérer le libellé d'un élément de la liste -------------------------
void Determiner_element_de_la_liste(short Decalage_premier,short Decalage_select,char * Libelle); void Determiner_element_de_la_liste(short Decalage_premier,short Decalage_select,char * Libelle);
// -- Dplacements dans la liste des fichiers ------------------------------- // -- Déplacements dans la liste des fichiers -------------------------------
void Select_Scroll_Down(short * Decalage_premier,short * Decalage_select); void Select_Scroll_Down(short * Decalage_premier,short * Decalage_select);
void Select_Scroll_Up (short * Decalage_premier,short * Decalage_select); void Select_Scroll_Up (short * Decalage_premier,short * Decalage_select);

BIN
gfx2.dat

Binary file not shown.

340
gfx2.ini
View File

@ -24,55 +24,55 @@
[MOUSE] # [SOURIS] [MOUSE] # [SOURIS]
; The sensitivity of the mouse can ³ La sensibilité de la souris peut ; The sensitivity of the mouse can | La sensibilité de la souris peut
; take values from 1 to 64. The ³ prendre des valeurs de 1 à 64. Plus ; take values from 1 to 64. The | prendre des valeurs de 1 à 64. Plus
; smaller values, the faster. ³ les valeurs sont petites, plus c'est ; smaller values, the faster. | les valeurs sont petites, plus c'est
; ³ rapide. ; | rapide.
X_sensitivity = 1 ; (default 3) X_sensitivity = 1 ; (default 3)
Y_sensitivity = 1 ; (default 3) Y_sensitivity = 1 ; (default 3)
; Due to the fact that those stupid ³ A cause du fait que ces imbéciles de ; Due to the fact that those stupid | A cause du fait que ces imbéciles de
; mouse drivers' makers don't care ³ programmeurs de gestionnaires de ; mouse drivers' makers don't care | programmeurs de gestionnaires de
; if the mouse moves by steps of 2, ³ souris se fichent que votre souris se ; if the mouse moves by steps of 2, | souris se fichent que votre souris se
; 4 or even 8 pixels, we have to ³ deplace par pas de 2, 4 ou même 8 ; 4 or even 8 pixels, we have to | deplace par pas de 2, 4 ou même 8
; stretch the virtual area of the ³ pixels, nous devons élargir la zone ; stretch the virtual area of the | pixels, nous devons élargir la zone
; mouse and divide coordinates to ³ virtuelle de la souris et diviser les ; mouse and divide coordinates to | virtuelle de la souris et diviser les
; get a one-pixel step motion. ³ coordonnées pour obtenir un pas de 1. ; get a one-pixel step motion. | coordonnées pour obtenir un pas de 1.
; (Warning: the mouse movement can ³ (Attention: le déplacement de la ; (Warning: the mouse movement can | (Attention: le déplacement de la
; be correct in some video modes ³ souris peut être correct dans certains ; be correct in some video modes | souris peut être correct dans certains
; but not in others... But all the ³ modes vidéos mais pas dans d'autres... ; but not in others... But all the | modes vidéos mais pas dans d'autres...
; "Modes X" should behave the same ³ Mais tout les Modes X devraient se ; "Modes X" should behave the same | Mais tout les Modes X devraient se
; way, so you won't have to test ³ comporter de la même manière, donc ; way, so you won't have to test | comporter de la même manière, donc
; them all). ³ vous n'aurez pas à tous les tester. ; them all). | vous n'aurez pas à tous les tester.
; A correction factor of 0 means ³ Un facteur de correction de 0 signifie ; A correction factor of 0 means | Un facteur de correction de 0 signifie
; that you are very lucky because ³ que vous avez de la chace car votre ; that you are very lucky because | que vous avez de la chace car votre
; your driver doesn't need any ³ driver n'a pas besoin de correction. ; your driver doesn't need any | driver n'a pas besoin de correction.
; correction. If you set the ³ Si vous définissez le facteur de ; correction. If you set the | Si vous définissez le facteur de
; correction factor to 1, it means ³ correction à 1, cela signifie que ; correction factor to 1, it means | correction à 1, cela signifie que
; that your mouse moves by steps of ³ votre souris se déplace par pas de 2 ; that your mouse moves by steps of | votre souris se déplace par pas de 2
; 2 pixels; 2 for 4; 3 for 8, etc...³ pixels; 2 pour 4; 3 pour 8, etc... ; 2 pixels; 2 for 4; 3 for 8, etc...| pixels; 2 pour 4; 3 pour 8, etc...
; If you want to use GrafX2 in a ³ Si vous désirez lancer GrafX2 dans une ; If you want to use GrafX2 in a | Si vous désirez lancer GrafX2 dans une
; Win95 window, you should turn ³ fenêtre Windows95, vous devriez passer ; Win95 window, you should turn | fenêtre Windows95, vous devriez passer
; these values to 0 (and increase X ³ ces valeurs à 0 (et augmenter les sen- ; these values to 0 (and increase X | ces valeurs à 0 (et augmenter les sen-
; and Y sensitivities above). ³ sibilités X et Y définies plus haut). ; and Y sensitivities above). | sibilités X et Y définies plus haut).
X_correction_factor = 0 ; (default 3) X_correction_factor = 0 ; (default 3)
Y_correction_factor = 0 ; (default 3) Y_correction_factor = 0 ; (default 3)
; Aspect of the main cursor (cross) ³ Aspect du curseur principal (croix) ; Aspect of the main cursor (cross) | Aspect du curseur principal (croix)
; 1: Solid ³ 1: Solide ; 1: Solid | 1: Solide
; 2: Transparent ³ 2: Transparent ; 2: Transparent | 2: Transparent
; 3: Thin (solid) ³ 3: Fin (solide) ; 3: Thin (solid) | 3: Fin (solide)
Cursor_aspect = 1 ; (default 1) Cursor_aspect = 1 ; (default 1)
[MENU] # [MENU] [MENU] # [MENU]
; Colors of the menus (the black ³ Couleurs des menus (la couleur noire ; Colors of the menus (the black | Couleurs des menus (la couleur noire
; and the white colors cannot be ³ et la couleur blanche ne peuvent pas ; and the white colors cannot be | et la couleur blanche ne peuvent pas
; modified). ³ être modifiées). ; modified). | être modifiées).
; Values are in {Red,Green,Blue} ³ Les valeurs sont dans l'ordre {Rouge, ; Values are in {Red,Green,Blue} | Les valeurs sont dans l'ordre {Rouge,
; order and are between 0 and 63. ³ Vert,Bleu} et vont de 0 à 63. ; order and are between 0 and 63. | Vert,Bleu} et vont de 0 à 63.
Light_color = 42,42,42 ; (default 42,42,42) Light_color = 42,42,42 ; (default 42,42,42)
Dark_color = 27,27,27 ; (default 27,27,27) Dark_color = 27,27,27 ; (default 27,27,27)
; ;
@ -88,202 +88,202 @@
; Light_color = 10,40,55 ; \_ Oceanic ; Light_color = 10,40,55 ; \_ Oceanic
; Dark_color = 10,20,32 ; / ; Dark_color = 10,20,32 ; /
; Aspect ratio and size of the ³ Proportion des menus et de la barre ; Aspect ratio and size of the | Proportion des menus et de la barre
; menus and the tool-bar. ³ d'outils. ; menus and the tool-bar. | d'outils.
; Possible values: ³ Valeurs possibles: ; Possible values: | Valeurs possibles:
; 0: Do not adapt (pixels are not ³ 0: Ne pas adapter (les pixels ne sont ; 0: Do not adapt (pixels are not | 0: Ne pas adapter (les pixels ne sont
; stretched) ³ pas étirés) ; stretched) | pas étirés)
; 1: Adapt the menus and the tool- ³ 1: Adapter les menus et la barre ; 1: Adapt the menus and the tool- | 1: Adapter les menus et la barre
; bar according to the resolution³ d'outils suivant la résolution ; bar according to the resolution| d'outils suivant la résolution
; 2: Slightly adapt the ratio of ³ 2: Adapter légèrement les proportions ; 2: Slightly adapt the ratio of | 2: Adapter légèrement les proportions
; the menus and tool-bar ³ des menus et de la barre d'outils ; the menus and tool-bar | des menus et de la barre d'outils
Menu_ratio = 1 ; (default 1) Menu_ratio = 1 ; (default 1)
; Font: ³ Police de caractères (fonte): ; Font: | Police de caractères (fonte):
; 1: Classic ³ 1: Classique ; 1: Classic | 1: Classique
; 2: Fun ³ 2: Fun ; 2: Fun | 2: Fun
Font = 2 ; (default 1) Font = 2 ; (default 1)
[FILE_SELECTOR] # [SELECTEUR_DE_FICHIERS] [FILE_SELECTOR] # [SELECTEUR_DE_FICHIERS]
; Show special files and ³ Afficher les fichiers et répertoires ; Show special files and | Afficher les fichiers et répertoires
; directories (values are 'yes' or ³ spéciaux (les valeurs sont 'yes' ou ; directories (values are 'yes' or | spéciaux (les valeurs sont 'yes' ou
; 'no'). ³ 'no'). ; 'no'). | 'no').
Show_hidden_files = no ; (default 'no') Show_hidden_files = no ; (default 'no')
Show_hidden_directories = no ; (default 'no') Show_hidden_directories = no ; (default 'no')
Show_system_directories = no ; (default 'no') Show_system_directories = no ; (default 'no')
; Delay before displaying a preview ³ Délai avant d'afficher une preview ; Delay before displaying a preview | Délai avant d'afficher une preview
; in file-selectors (in 18.2th of ³ dans les sélecteurs de fichiers (en ; in file-selectors (in 18.2th of | dans les sélecteurs de fichiers (en
; second). Possible values range ³ 18.2èmes de seconde) Les valeurs ; second). Possible values range | 18.2èmes de seconde) Les valeurs
; from 1 to 256. ³ possibles vont de 1 à 256. ; from 1 to 256. | possibles vont de 1 à 256.
Preview_delay = 8 ; (default 8) Preview_delay = 8 ; (default 8)
; Maximize the preview of the ³ Maximiser la preview des images pour ; Maximize the preview of the | Maximiser la preview des images pour
; pictures so that it is as big as ³ qu'elle soit aussi grande que ; pictures so that it is as big as | qu'elle soit aussi grande que
; possible. If you're not in the ³ possible. ; possible. If you're not in the | possible.
; same resolution as the picture's ³ Si vous n'êtes pas dans la même réso- ; same resolution as the picture's | Si vous n'êtes pas dans la même réso-
; one, it can try to correct the ³ lution que celle de l'image, cela peut ; one, it can try to correct the | lution que celle de l'image, cela peut
; aspect ratio, but if the picture ³ essayer de corriger les proportions, ; aspect ratio, but if the picture | essayer de corriger les proportions,
; does not fill the whole screen, ³ mais si l'image ne prend pas tout ; does not fill the whole screen, | mais si l'image ne prend pas tout
; it can be worse. ³ l'écran, cela peut être pire. ; it can be worse. | l'écran, cela peut être pire.
Maximize_preview = no ; (default 'no') Maximize_preview = no ; (default 'no')
; This option is used to place the ³ Cette option est utilisée pour placer ; This option is used to place the | Cette option est utilisée pour placer
; selection bar on a filename by ³ la barre de sélection sur un nom de ; selection bar on a filename by | la barre de sélection sur un nom de
; typing its first letters. ³ fichier en tapant ses 1ères lettres. ; typing its first letters. | fichier en tapant ses 1ères lettres.
; For example, if you want to find ³ Par exemple, si vous voulez trouver le ; For example, if you want to find | Par exemple, si vous voulez trouver le
; the "PICTURE.PKM" in a directory ³ fichier "PICTURE.PKM" dans un réper- ; the "PICTURE.PKM" in a directory | fichier "PICTURE.PKM" dans un réper-
; that also contains "PALETTE.PAL", ³ toire contenant également le fichier ; that also contains "PALETTE.PAL", | toire contenant également le fichier
; you'll just have to type P and I. ³ "PALETTE.PAL", vous n'aurez qu'à taper ; you'll just have to type P and I. | "PALETTE.PAL", vous n'aurez qu'à taper
; The different values of "FFF" ³ P puis I. ; The different values of "FFF" | P puis I.
; indicate if you want to find the ³ Les different valeurs de "FFF" ; indicate if you want to find the | Les different valeurs de "FFF"
; name in both files and directories³ indiquent si vous voulez trouvez le nom ; name in both files and directories| indiquent si vous voulez trouvez le nom
; or just in only one of these: ³ dans les fichiers ET les répertoires ou ; or just in only one of these: | dans les fichiers ET les répertoires ou
; 0: files and directories ³ simplement dans l'un OU l'autre. ; 0: files and directories | simplement dans l'un OU l'autre.
; 1: files only ³ 0: fichiers et répertoires ; 1: files only | 0: fichiers et répertoires
; 2: directories only ³ 1: fichiers seulement ; 2: directories only | 1: fichiers seulement
; ³ 2: répertoires seulement ; | 2: répertoires seulement
Find_file_fast = 0 ; (default 0) Find_file_fast = 0 ; (default 0)
[LOADING] # [CHARGEMENT] [LOADING] # [CHARGEMENT]
; Automatically set the resolution ³ Passer automatiquement dans la bonne ; Automatically set the resolution | Passer automatiquement dans la bonne
; when loading a picture. ³ résolution lors du chargement d'une ; when loading a picture. | résolution lors du chargement d'une
; You should set this value to ³ image. ; You should set this value to | image.
; 'yes' after disabling the video ³ Vous devriez définir cette option à ; 'yes' after disabling the video | Vous devriez définir cette option à
; modes that are not supported by ³ 'yes' après avoir inhibé les modes ; modes that are not supported by | 'yes' après avoir inhibé les modes
; your video card or monitor. ³ vidéo qui ne sont pas supportés par ; your video card or monitor. | vidéo qui ne sont pas supportés par
; ³ votre matériel. ; | votre matériel.
Auto_set_resolution = yes ; (default 'no') Auto_set_resolution = yes ; (default 'no')
; If the variable above is set to ³ Si la variable ci-dessus est à 'yes', ; If the variable above is set to | Si la variable ci-dessus est à 'yes',
; 'yes', this one tells if you want ³ celle-ci indique si vous voulez ; 'yes', this one tells if you want | celle-ci indique si vous voulez
; to set the resolution according ³ définir la résolution suivant: ; to set the resolution according | définir la résolution suivant:
; to: ³ 1: les dimensions de "l'écran ; to: | 1: les dimensions de "l'écran
; 1: the internal "original screen" ³ d'origine" internes à l'image ; 1: the internal "original screen" | d'origine" internes à l'image
; dimensions of the picture ³ 2: les véritables dimensions de ; dimensions of the picture | 2: les véritables dimensions de
; 2: the actual dimensions of the ³ l'image ; 2: the actual dimensions of the | l'image
; picture ³ ; picture |
Set_resolution_according_to = 1 ; (default 1) Set_resolution_according_to = 1 ; (default 1)
; If you load a picture with a ³ Si vous chargez une image ayant une ; If you load a picture with a | Si vous chargez une image ayant une
; palette of less than 256 colors, ³ palette de moins de 256 couleurs, ; palette of less than 256 colors, | palette de moins de 256 couleurs,
; this option defines if you want ³ cette option indique si vous souhaitez ; this option defines if you want | cette option indique si vous souhaitez
; to clear the palette or to keep ³ effacer la palette ou bien conserver ; to clear the palette or to keep | effacer la palette ou bien conserver
; the colors of the previous ³ les couleurs de l'image précédente qui ; the colors of the previous | les couleurs de l'image précédente qui
; picture that are over the number ³ se situent au-delà du nombre de la ; picture that are over the number | se situent au-delà du nombre de la
; of colors of the new picture. ³ nouvelle image. ; of colors of the new picture. | nouvelle image.
; For example, if you load a ³ Par exemple, si vous chargez une image ; For example, if you load a | Par exemple, si vous chargez une image
; 32-color picture, the colors 32 ³ de 32 couleurs, les couleurs 32 à 255 ; 32-color picture, the colors 32 | de 32 couleurs, les couleurs 32 à 255
; to 255 will be set to black if ³ seront passées en noir si cette option ; to 255 will be set to black if | seront passées en noir si cette option
; this option is set to 'yes', or ³ est à 'yes', ou bien elles resteront ; this option is set to 'yes', or | est à 'yes', ou bien elles resteront
; they will be kept unchanged if ³ inchangées si elle est à 'no'. ; they will be kept unchanged if | inchangées si elle est à 'no'.
; this option is set to 'no'. ³ ; this option is set to 'no'. |
Clear_palette = yes ; (default 'yes') Clear_palette = yes ; (default 'yes')
[MISCELLANEOUS] # [DIVERS] [MISCELLANEOUS] # [DIVERS]
; Draw the limits of the picture. ³ Afficher les limites de l'image ; Draw the limits of the picture. | Afficher les limites de l'image
Draw_limits = yes ; (default 'yes') Draw_limits = yes ; (default 'yes')
; Adjust the brush grabbing in ³ Ajuster la capture de brosse en mode ; Adjust the brush grabbing in | Ajuster la capture de brosse en mode
; "grid" mode. ³ "grille". ; "grid" mode. | "grille".
Adjust_brush_pick = yes ; (default 'yes') Adjust_brush_pick = yes ; (default 'yes')
; Coordinates: ³ Coordonnées: ; Coordinates: | Coordonnées:
; 1: Relative ³ 1: Relatives ; 1: Relative | 1: Relatives
; 2: Absolute ³ 2: Absolues ; 2: Absolute | 2: Absolues
Coordinates = 2 ; (default 1) Coordinates = 2 ; (default 1)
; Create a backup file when saving. ³ Créer un fichier backup lors des ; Create a backup file when saving. | Créer un fichier backup lors des
; ³ sauvegardes. ; | sauvegardes.
Backup = no ; (default 'no') Backup = no ; (default 'no')
; Number of pages stored in memory ³ Nombre de pages stockées en mémoire ; Number of pages stored in memory | Nombre de pages stockées en mémoire
; for "undoing". ³ destinées à annuler les dernières ; for "undoing". | destinées à annuler les dernières
; Values are between 1 and 99. ³ modifications. Valeurs entre 1 et 99. ; Values are between 1 and 99. | modifications. Valeurs entre 1 et 99.
Undo_pages = 1 ; (default 1) Undo_pages = 1 ; (default 1)
; Speed of the scroll-bars (in VBLs ³ Vitesse des barre de défilement (en ; Speed of the scroll-bars (in VBLs | Vitesse des barre de défilement (en
; waited) while clicking with the ³ VBLs attendus) lorsque l'un des ; waited) while clicking with the | VBLs attendus) lorsque l'un des
; left or right button of the mouse.³ boutons de la souris est enfoncé. ; left or right button of the mouse.| boutons de la souris est enfoncé.
; Values can be between 1 and 255. ³ Les valeurs sont comprises entre 1 et ; Values can be between 1 and 255. | Les valeurs sont comprises entre 1 et
; The bigger values, the slower. ³ 255. Plus elles sont grandes, plus ; The bigger values, the slower. | 255. Plus elles sont grandes, plus
; ³ c'est lent. ; | c'est lent.
Gauges_scrolling_speed_Left = 10 ; (default 10) Gauges_scrolling_speed_Left = 10 ; (default 10)
Gauges_scrolling_speed_Right = 3 ; (default 3) Gauges_scrolling_speed_Right = 3 ; (default 3)
; Automatically save the configu- ³ Enregistre automatiquement la configu- ; Automatically save the configu- | Enregistre automatiquement la configu-
; ration when exiting the program. ³ ration lorsqu'on quitte le programme. ; ration when exiting the program. | ration lorsqu'on quitte le programme.
Auto_save = yes ; (default 'yes') Auto_save = yes ; (default 'yes')
; Maximum number of vertices used ³ Nombre maximum de vertex utilisés dans ; Maximum number of vertices used | Nombre maximum de vertex utilisés dans
; in filled polygons and polyforms, ³ les polygônes et polyformes pleins, et ; in filled polygons and polyforms, | les polygônes et polyformes pleins, et
; and lasso. Possible values range ³ le lasso. Les valeurs possibles vont ; and lasso. Possible values range | le lasso. Les valeurs possibles vont
; from 2 to 16384. ³ de 2 à 16384. ; from 2 to 16384. | de 2 à 16384.
; Each vertex takes 4 bytes. ³ Chaque vertex prend 4 octets. ; Each vertex takes 4 bytes. | Chaque vertex prend 4 octets.
Vertices_per_polygon = 1024 ; (default 1024) Vertices_per_polygon = 1024 ; (default 1024)
; Automatically zoom into the ³ Zoomer automatiquement la zone pointée ; Automatically zoom into the | Zoomer automatiquement la zone pointée
; pointed area when you press the ³ par la souris lorsque vous appuyez sur ; pointed area when you press the | par la souris lorsque vous appuyez sur
; short-key of the Magnifier button ³ la touche de raccourci de la loupe. ; short-key of the Magnifier button | la touche de raccourci de la loupe.
; while being above the picture. ³ ; while being above the picture. |
Fast_zoom = yes ; (default 'yes') Fast_zoom = yes ; (default 'yes')
; Separate the colors in the tool- ³ Séparer les couleurs dans la barre ; Separate the colors in the tool- | Séparer les couleurs dans la barre
; bar by a black squaring. ³ d'outils par un quadrillage noir. ; bar by a black squaring. | d'outils par un quadrillage noir.
Separate_colors = no ; (default 'yes') Separate_colors = no ; (default 'yes')
; Initial value of the feedback for ³ Valeur initiale du "feedback" pour les ; Initial value of the feedback for | Valeur initiale du "feedback" pour les
; the drawing modes (cf. docs). ³ modes de dessin (cf. docs). ; the drawing modes (cf. docs). | modes de dessin (cf. docs).
FX_feedback = yes ; (default 'yes') FX_feedback = yes ; (default 'yes')
; When you reduce the palette or ³ Si vous réduisez la palette ou "zappez" ; When you reduce the palette or | Si vous réduisez la palette ou "zappez"
; "zap" some colors out of it, it is³ quelques couleurs, il est possible ; "zap" some colors out of it, it is| quelques couleurs, il est possible
; possible that there are not enough³ qu'il ne reste pas assez de couleurs ; possible that there are not enough| qu'il ne reste pas assez de couleurs
; colors left to draw the menus. ³ pour afficher les menus. Mettre cette ; colors left to draw the menus. | pour afficher les menus. Mettre cette
; Switching the following variable ³ variable à 'yes' ramènera automatiquent ; Switching the following variable | variable à 'yes' ramènera automatiquent
; on will bring back the colors of ³ les couleurs du menu s'il reste moins ; on will bring back the colors of | les couleurs du menu s'il reste moins
; the menu if there are less than 4 ³ de 4 couleurs après une "réduction" ou ; the menu if there are less than 4 | de 4 couleurs après une "réduction" ou
; colors left after "reducing" or ³ un "zapping". ; colors left after "reducing" or | un "zapping".
; "zapping". ³ ; "zapping". |
Safety_colors = no ; (default 'yes') Safety_colors = no ; (default 'yes')
; Display a message at startup ³ Afficher un message au démarrage ; Display a message at startup | Afficher un message au démarrage
; telling the version number of the ³ indiquant le numéro de version du ; telling the version number of the | indiquant le numéro de version du
; program. ³ programme. ; program. | programme.
Opening_message = yes ; (default 'yes') Opening_message = yes ; (default 'yes')
; Take the Stencil into account when³ Prendre le Stencil en compte lorsqu'on ; Take the Stencil into account when| Prendre le Stencil en compte lorsqu'on
; clearing the image. ³ efface l'image. ; clearing the image. | efface l'image.
Clear_with_stencil = yes ; (default 'yes') Clear_with_stencil = yes ; (default 'yes')
; Directly set the discontinuous ³ Passer automatiquement en mode de ; Directly set the discontinuous | Passer automatiquement en mode de
; freehand drawing mode after brush ³ dessin discontinu après la prise d'une ; freehand drawing mode after brush | dessin discontinu après la prise d'une
; grabbing. ³ brosse. ; grabbing. | brosse.
Auto_discontinuous = no ; (default 'no') Auto_discontinuous = no ; (default 'no')
; Save the screen dimensions in GIF ³ Sauver les dimensions de l'écran dans ; Save the screen dimensions in GIF | Sauver les dimensions de l'écran dans
; files. If you want to read these ³ les fichiers GIF. Si vous voulez lire ; files. If you want to read these | les fichiers GIF. Si vous voulez lire
; files with Photoshop or Alchemy, ³ ces fichiers avec Photoshop ou Alchemy, ; files with Photoshop or Alchemy, | ces fichiers avec Photoshop ou Alchemy,
; and maybe some other programs, you³ et peut-être d'autres programmes, vous ; and maybe some other programs, you| et peut-être d'autres programmes, vous
; must set this option to 'no'. ³ devez mettre cette option à 'no'. ; must set this option to 'no'. | devez mettre cette option à 'no'.
Save_screen_size_in_GIF = no ; (default 'no') Save_screen_size_in_GIF = no ; (default 'no')
; Automaticaly count the number of ³ Compter automatiquement le nombre de ; Automaticaly count the number of | Compter automatiquement le nombre de
; different colors used when opening³ couleurs différentes utilisées lors de ; different colors used when opening| couleurs différentes utilisées lors de
; the palette editor window. (Set it³ d'ouverture de la fenêtre d'édition de ; the palette editor window. (Set it| d'ouverture de la fenêtre d'édition de
; to 'no' if you have a slow PC or ³ la palette. (Mettez-le à 'no' si vous ; to 'no' if you have a slow PC or | la palette. (Mettez-le à 'no' si vous
; if you edit huge pictures) ³ avez un PC lent ou bien si vous éditez ; if you edit huge pictures) | avez un PC lent ou bien si vous éditez
; ³ d'énormes images). ; | d'énormes images).
Auto_nb_colors_used = yes ; (default 'yes') Auto_nb_colors_used = yes ; (default 'yes')
; Number of the default video mode ³ Numéro du mode vidéo par défaut au ; Number of the default video mode | Numéro du mode vidéo par défaut au
; at startup (see the list by typing³ démarrage (voir la liste en tapant ; at startup (see the list by typing| démarrage (voir la liste en tapant
; "gfx2 /?" at the DOS prompt). ³ "gfx2 /?" sur la ligne de commande). ; "gfx2 /?" at the DOS prompt). | "gfx2 /?" sur la ligne de commande).
Default_video_mode = 58 ; (default 0) Default_video_mode = 58 ; (default 0)

3
init.c
View File

@ -1,4 +1,3 @@
#define TAILLE_FICHIER_DATA 78544 // Taille du fichier GFX2.DAT
#include <fcntl.h> #include <fcntl.h>
#include <stdio.h> #include <stdio.h>
@ -223,7 +222,7 @@ void Charger_DAT(void)
} }
Taille_fichier=Informations_Fichier.st_size; Taille_fichier=Informations_Fichier.st_size;
if (Taille_fichier!=TAILLE_FICHIER_DATA) if (Taille_fichier<DAT_DEBUT_INI_PAR_DEFAUT)
{ {
DEBUG("Taille",0); DEBUG("Taille",0);
Erreur(ERREUR_DAT_CORROMPU); Erreur(ERREUR_DAT_CORROMPU);

3
main.c
View File

@ -170,10 +170,9 @@ void Erreur(int Code)
break; break;
case ERREUR_REPERTOIRE_DISPARU : printf("Error: Directory you ran the program from not found!\n"); case ERREUR_REPERTOIRE_DISPARU : printf("Error: Directory you ran the program from not found!\n");
break; break;
case ERREUR_INI_ABSENT : printf("Error: File GFX2.INI is missing!\n");
break;
case ERREUR_INI_CORROMPU : printf("Error: File GFX2.INI is corrupt!\n"); case ERREUR_INI_CORROMPU : printf("Error: File GFX2.INI is corrupt!\n");
printf("It contains bad values at line %d.\n",Ligne_INI); printf("It contains bad values at line %d.\n",Ligne_INI);
printf("You can re-generate it by deleting the file and running grafX2 again.\n");
break; break;
case ERREUR_SAUVEGARDE_INI : printf("Error: Cannot rewrite file GFX2.INI!\n"); case ERREUR_SAUVEGARDE_INI : printf("Error: Cannot rewrite file GFX2.INI!\n");
break; break;

View File

@ -1,31 +1,10 @@
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include <stdlib.h> #include <stdlib.h>
#include <ctype.h>
#include "const.h" #include "const.h"
#include "global.h" #include "global.h"
char lowercase_to_uppercase[256];
void Calculer_la_table_lowercase_to_uppercase(void)
{
int Indice;
int Resultat;
for (Indice=0;Indice<256;Indice++)
{
Resultat=Indice;
if ((Indice>='a') && (Indice<='z'))
Resultat+='A'-'a';
lowercase_to_uppercase[Indice]=Resultat;
}
}
void Charger_INI_Clear_string(char * String) void Charger_INI_Clear_string(char * String)
{ {
int Indice; int Indice;
@ -42,6 +21,7 @@ void Charger_INI_Clear_string(char * String)
else else
if ((String[Indice]==';') || if ((String[Indice]==';') ||
(String[Indice]=='#') || (String[Indice]=='#') ||
(String[Indice]=='\r') ||
(String[Indice]=='\n')) (String[Indice]=='\n'))
{ {
// Rencontre d'un commentaire ou d'un saut de ligne: // Rencontre d'un commentaire ou d'un saut de ligne:
@ -52,7 +32,7 @@ void Charger_INI_Clear_string(char * String)
{ {
// Passage en majuscule d'un caractère: // Passage en majuscule d'un caractère:
String[Indice]=lowercase_to_uppercase[(int)String[Indice]]; String[Indice]=toupper((int)String[Indice]);
Indice++; Indice++;
} }
} }
@ -338,8 +318,6 @@ int Charger_INI(struct S_Config * Conf)
char * Nom_du_fichier; char * Nom_du_fichier;
int Retour; int Retour;
Calculer_la_table_lowercase_to_uppercase();
Ligne_INI=0; Ligne_INI=0;
// On alloue les zones de mémoire: // On alloue les zones de mémoire:
@ -350,9 +328,28 @@ int Charger_INI(struct S_Config * Conf)
strcpy(Nom_du_fichier,Repertoire_du_programme); strcpy(Nom_du_fichier,Repertoire_du_programme);
strcat(Nom_du_fichier,"gfx2.ini"); strcat(Nom_du_fichier,"gfx2.ini");
Fichier=fopen(Nom_du_fichier,"r"); Fichier=fopen(Nom_du_fichier,"rb");
if (Fichier!=0) if (Fichier==0)
{ {
// Si le fichier ini est absent on le relit depuis gfx2.dat
strcpy(Nom_du_fichier,Repertoire_du_programme);
strcat(Nom_du_fichier,"gfx2.dat");
Fichier=fopen(Nom_du_fichier,"rb");
if (Fichier == 0)
{
free(Nom_du_fichier);
free(Buffer);
return ERREUR_DAT_ABSENT;
}
if (fseek(Fichier, DAT_DEBUT_INI_PAR_DEFAUT ,SEEK_SET))
{
fclose(Fichier);
free(Nom_du_fichier);
free(Buffer);
return ERREUR_DAT_CORROMPU;
}
}
if ((Retour=Charger_INI_Reach_group(Fichier,Buffer,"[MOUSE]"))) if ((Retour=Charger_INI_Reach_group(Fichier,Buffer,"[MOUSE]")))
goto Erreur_Retour; goto Erreur_Retour;
@ -614,13 +611,6 @@ int Charger_INI(struct S_Config * Conf)
Conf->Resolution_par_defaut=Valeurs[0]; Conf->Resolution_par_defaut=Valeurs[0];
fclose(Fichier); fclose(Fichier);
}
else
{
free(Nom_du_fichier);
free(Buffer);
return ERREUR_INI_ABSENT;
}
free(Nom_du_fichier); free(Nom_du_fichier);
free(Buffer); free(Buffer);

102
saveini.c
View File

@ -4,6 +4,8 @@
#include "const.h" #include "const.h"
#include "global.h" #include "global.h"
#include "readini.h" #include "readini.h"
#include "files.h"
#include "erreurs.h"
int Sauver_INI_Reach_group(FILE * Old_file,FILE * New_file,char * Buffer,char * Group) int Sauver_INI_Reach_group(FILE * Old_file,FILE * New_file,char * Buffer,char * Group)
{ {
@ -11,11 +13,11 @@ int Sauver_INI_Reach_group(FILE * Old_file,FILE * New_file,char * Buffer,char *
char * Group_upper; char * Group_upper;
char * Buffer_upper; char * Buffer_upper;
// On alloue les zones de mmoire: // On alloue les zones de mémoire:
Group_upper =(char *)malloc(1024); Group_upper =(char *)malloc(1024);
Buffer_upper=(char *)malloc(1024); Buffer_upper=(char *)malloc(1024);
// On commence par se faire une version majuscule du groupe rechercher: // On commence par se faire une version majuscule du groupe à rechercher:
strcpy(Group_upper,Group); strcpy(Group_upper,Group);
Charger_INI_Clear_string(Group_upper); Charger_INI_Clear_string(Group_upper);
@ -34,7 +36,7 @@ int Sauver_INI_Reach_group(FILE * Old_file,FILE * New_file,char * Buffer,char *
strcpy(Buffer_upper,Buffer); strcpy(Buffer_upper,Buffer);
Charger_INI_Clear_string(Buffer_upper); Charger_INI_Clear_string(Buffer_upper);
// On compare la chaŒne avec le groupe recherch: // On compare la chaîne avec le groupe recherché:
Arret=Charger_INI_Seek_pattern(Buffer_upper,Group_upper); Arret=Charger_INI_Seek_pattern(Buffer_upper,Group_upper);
if (fprintf(New_file,"%s",Buffer)<0) if (fprintf(New_file,"%s",Buffer)<0)
{ {
@ -68,7 +70,7 @@ int Sauver_INI_char_in_value_alphabet(char Char)
(Char>='a') && (Char>='a') &&
(Char<='z') (Char<='z')
) || ) ||
(Char == '$') // Symbole d'hexadcimal (Char == '$') // Symbole d'hexadécimal
) )
return 1; return 1;
else else
@ -95,16 +97,16 @@ void Sauver_INI_Set_value(char * Destination,char * Source,int Nb_values_to_set,
for (;Source[Indice_source]==' ';Indice_source++) for (;Source[Indice_source]==' ';Indice_source++)
Destination[Indice_source]=Source[Indice_source]; Destination[Indice_source]=Source[Indice_source];
// Pour l'instant, la source et la destination en sont au mˆme point: // Pour l'instant, la source et la destination en sont au même point:
Indice_destination=Indice_source; Indice_destination=Indice_source;
// Puis pour chaque valeur recopier: // Puis pour chaque valeur à recopier:
for (Indice_valeur=0;Indice_valeur<Nb_values_to_set;Indice_valeur++) for (Indice_valeur=0;Indice_valeur<Nb_values_to_set;Indice_valeur++)
{ {
// Dans la destination, on crit la valeur: // Dans la destination, on écrit la valeur:
if (Litteral) if (Litteral)
{ {
// La valeur doit ˆtre crite sous la forme Yes/No // La valeur doit être écrite sous la forme Yes/No
if (Values[Indice_valeur]) if (Values[Indice_valeur])
{ {
@ -123,11 +125,11 @@ void Sauver_INI_Set_value(char * Destination,char * Source,int Nb_values_to_set,
} }
else else
{ {
// La valeur doit ˆtre crite sous forme numrique // La valeur doit être écrite sous forme numérique
if (Source[Indice_source]=='$') if (Source[Indice_source]=='$')
{ {
// On va crire la valeur sous forme hexadcimale: // On va écrire la valeur sous forme hexadécimale:
// On commence par inscrire le symbole '$': // On commence par inscrire le symbole '$':
Destination[Indice_destination]='$'; Destination[Indice_destination]='$';
@ -138,7 +140,7 @@ void Sauver_INI_Set_value(char * Destination,char * Source,int Nb_values_to_set,
} }
else else
{ {
// On va crire la valeur sous forme dcimale: // On va écrire la valeur sous forme décimale:
sprintf(Destination+Indice_destination,"%d",Values[Indice_valeur]); sprintf(Destination+Indice_destination,"%d",Values[Indice_valeur]);
Indice_destination+=strlen(Destination+Indice_destination); Indice_destination+=strlen(Destination+Indice_destination);
@ -150,16 +152,16 @@ void Sauver_INI_Set_value(char * Destination,char * Source,int Nb_values_to_set,
if (Indice_valeur!=(Nb_values_to_set-1)) if (Indice_valeur!=(Nb_values_to_set-1))
{ {
// Il reste d'autres valeurs crire // Il reste d'autres valeurs à écrire
// On recopie tous les caractŠres de la source jusqu'au suivant qui // On recopie tous les caractŠres de la source jusqu'au suivant qui
// dsigne une valeur: // désigne une valeur:
for (;(!Sauver_INI_char_in_value_alphabet(Source[Indice_source])) && (Source[Indice_source]!='\0');Indice_source++,Indice_destination++) for (;(!Sauver_INI_char_in_value_alphabet(Source[Indice_source])) && (Source[Indice_source]!='\0');Indice_source++,Indice_destination++)
Destination[Indice_destination]=Source[Indice_source]; Destination[Indice_destination]=Source[Indice_source];
} }
else else
{ {
// C'est la derniŠre valeur initialiser // C'est la derniŠre valeur à initialiser
// On recopie toute la fin de la ligne: // On recopie toute la fin de la ligne:
for (;Source[Indice_source]!='\0';Indice_source++,Indice_destination++) for (;Source[Indice_source]!='\0';Indice_source++,Indice_destination++)
@ -181,12 +183,12 @@ int Sauver_INI_Set_values(FILE * Old_file,FILE * New_file,char * Buffer,char * O
char * Buffer_resultat; char * Buffer_resultat;
//int Indice_buffer; //int Indice_buffer;
// On alloue les zones de mmoire: // On alloue les zones de mémoire:
Option_upper=(char *)malloc(1024); Option_upper=(char *)malloc(1024);
Buffer_upper=(char *)malloc(1024); Buffer_upper=(char *)malloc(1024);
Buffer_resultat=(char *)malloc(1024); Buffer_resultat=(char *)malloc(1024);
// On commence par se faire une version majuscule de l'option rechercher: // On commence par se faire une version majuscule de l'option à rechercher:
strcpy(Option_upper,Option); strcpy(Option_upper,Option);
Charger_INI_Clear_string(Option_upper); Charger_INI_Clear_string(Option_upper);
@ -206,12 +208,12 @@ int Sauver_INI_Set_values(FILE * Old_file,FILE * New_file,char * Buffer,char * O
strcpy(Buffer_upper,Buffer); strcpy(Buffer_upper,Buffer);
Charger_INI_Clear_string(Buffer_upper); Charger_INI_Clear_string(Buffer_upper);
// On compare la chaŒne avec l'option recherche: // On compare la chaîne avec l'option recherchée:
Arret=Charger_INI_Seek_pattern(Buffer_upper,Option_upper); Arret=Charger_INI_Seek_pattern(Buffer_upper,Option_upper);
if (Arret) if (Arret)
{ {
// On l'a trouve: // On l'a trouvée:
Sauver_INI_Set_value(Buffer_resultat,Buffer,Nb_values_to_set,Values,Litteral); Sauver_INI_Set_value(Buffer_resultat,Buffer,Nb_values_to_set,Values,Litteral);
if (fprintf(New_file,"%s",Buffer_resultat)<0) if (fprintf(New_file,"%s",Buffer_resultat)<0)
@ -224,7 +226,7 @@ int Sauver_INI_Set_values(FILE * Old_file,FILE * New_file,char * Buffer,char * O
} }
else else
{ {
// On l'a pas trouve: // On l'a pas trouvée:
if (fprintf(New_file,"%s",Buffer)<0) if (fprintf(New_file,"%s",Buffer)<0)
{ {
@ -260,32 +262,51 @@ int Sauver_INI(struct S_Config * Conf)
FILE * Nouveau_fichier; FILE * Nouveau_fichier;
char * Buffer; char * Buffer;
int Valeurs[3]; int Valeurs[3];
char * Nom_du_fichier; char Nom_du_fichier[256];
char * Nom_du_fichier_temporaire; char Nom_du_fichier_temporaire[256];
int Retour; int Retour;
char Nom_du_fichier_DAT[256];
int Ini_existe;
// On alloue les zones de mmoire: // On alloue les zones de mémoire:
Buffer=(char *)malloc(1024); Buffer=(char *)malloc(1024);
Nom_du_fichier=(char *)malloc(256);
Nom_du_fichier_temporaire=(char *)malloc(256);
// On calcule les noms des fichiers qu'on manipule: // On calcule les noms des fichiers qu'on manipule:
strcpy(Nom_du_fichier,Repertoire_du_programme); strcpy(Nom_du_fichier,Repertoire_du_programme);
strcat(Nom_du_fichier,"gfx2.ini"); strcat(Nom_du_fichier,"gfx2.ini");
// On vérifie si le fichier INI existe
if ((Ini_existe = Fichier_existe(Nom_du_fichier)))
{
strcpy(Nom_du_fichier_temporaire,Repertoire_du_programme); strcpy(Nom_du_fichier_temporaire,Repertoire_du_programme);
strcat(Nom_du_fichier_temporaire,"gfx2.$$$"); strcat(Nom_du_fichier_temporaire,"gfx2.$$$");
// On renome l'ancienne version du fichier INI vers un fichier temporaire: // On renome l'ancienne version du fichier INI vers un fichier temporaire:
if (rename(Nom_du_fichier,Nom_du_fichier_temporaire)!=0) if (rename(Nom_du_fichier,Nom_du_fichier_temporaire)!=0)
{
goto Erreur_ERREUR_SAUVEGARDE_INI; goto Erreur_ERREUR_SAUVEGARDE_INI;
}
Ancien_fichier=fopen(Nom_du_fichier_temporaire,"r"); }
if (Ancien_fichier!=0) // On récupère un fichier INI "propre" dans GFX2.DAT
strcpy(Nom_du_fichier_DAT,Repertoire_du_programme);
strcat(Nom_du_fichier_DAT,"gfx2.dat");
Ancien_fichier=fopen(Nom_du_fichier_DAT,"rb");
if (Ancien_fichier==0)
{ {
Nouveau_fichier=fopen(Nom_du_fichier,"w"); fclose(Ancien_fichier);
if (Nouveau_fichier!=0) return ERREUR_DAT_ABSENT;
}
if (fseek(Ancien_fichier, DAT_DEBUT_INI_PAR_DEFAUT, SEEK_SET))
{ {
fclose(Ancien_fichier);
return ERREUR_DAT_CORROMPU;
}
Nouveau_fichier=fopen(Nom_du_fichier,"wb");
if (Nouveau_fichier==0)
{
free(Buffer);
return ERREUR_SAUVEGARDE_INI;
}
if ((Retour=Sauver_INI_Reach_group(Ancien_fichier,Nouveau_fichier,Buffer,"[MOUSE]"))) if ((Retour=Sauver_INI_Reach_group(Ancien_fichier,Nouveau_fichier,Buffer,"[MOUSE]")))
goto Erreur_Retour; goto Erreur_Retour;
@ -460,28 +481,11 @@ int Sauver_INI(struct S_Config * Conf)
Sauver_INI_Flush(Ancien_fichier,Nouveau_fichier,Buffer); Sauver_INI_Flush(Ancien_fichier,Nouveau_fichier,Buffer);
fclose(Nouveau_fichier); fclose(Nouveau_fichier);
}
else
{
fclose(Ancien_fichier); fclose(Ancien_fichier);
goto Erreur_ERREUR_SAUVEGARDE_INI;
}
fclose(Ancien_fichier);
}
else
{
free(Nom_du_fichier_temporaire);
free(Nom_du_fichier);
free(Buffer);
return ERREUR_INI_ABSENT;
}
// On efface le fichier temporaire <=> Ancienne version du .INI // On efface le fichier temporaire <=> Ancienne version du .INI
if (Ini_existe)
remove(Nom_du_fichier_temporaire); remove(Nom_du_fichier_temporaire);
free(Nom_du_fichier_temporaire);
free(Nom_du_fichier);
free(Buffer); free(Buffer);
return 0; return 0;
@ -491,15 +495,11 @@ int Sauver_INI(struct S_Config * Conf)
fclose(Nouveau_fichier); fclose(Nouveau_fichier);
fclose(Ancien_fichier); fclose(Ancien_fichier);
free(Nom_du_fichier_temporaire);
free(Nom_du_fichier);
free(Buffer); free(Buffer);
return Retour; return Retour;
Erreur_ERREUR_SAUVEGARDE_INI: Erreur_ERREUR_SAUVEGARDE_INI:
free(Nom_du_fichier_temporaire);
free(Nom_du_fichier);
free(Buffer); free(Buffer);
return ERREUR_SAUVEGARDE_INI; return ERREUR_SAUVEGARDE_INI;
} }