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 \
divers.h erreurs.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 \
moteur.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
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
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 \
divers.h readline.h
clavier.o: clavier.c global.h struct.h const.h loadsave.h

View File

@ -15,6 +15,7 @@
#define BETA2 0 // |
#define ALPHA_BETA "ß" // Type de la version "Þ" ou "ß"
#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_BOUTONS 38 // Nombre de boutons à gérer
#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_SAUVEGARDE_CFG, // Erreur en écriture pour GFX2.CFG
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_SAUVEGARDE_INI, // Le fichier GFX2.INI n'est pas inscriptible
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
// (avec le nom du disque)
int Determiner_repertoire_courant(void);
// Dtermine si un rpertoire pass en paramŠtre existe ou non dans le
// rpertoire courant.
// Détermine si un répertoire passé en paramètre existe ou non dans le
// répertoire courant.
int Repertoire_existe(char * Repertoire);
// Dtermine si un fichier pass en paramŠtre existe ou non dans le
// rpertoire courant.
// Détermine si un fichier passé en paramètre existe ou non dans le
// répertoire courant.
int Fichier_existe(char * Fichier);
// -- Destruction de la liste chaŒne ---------------------------------------
// -- Destruction de la liste chaînée ---------------------------------------
void Detruire_liste_du_fileselect(void);
// -- Lecture d'une liste de fichiers ---------------------------------------
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);
// -- 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);
// -- 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);
// -- 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_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]
; 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
; smaller values, the faster. ³ les valeurs sont petites, plus c'est
; ³ rapide.
; 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
; smaller values, the faster. | les valeurs sont petites, plus c'est
; | rapide.
X_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
; 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
; 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
; 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.
; (Warning: the mouse movement can ³ (Attention: le déplacement de la
; 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...
; "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
; them all). ³ vous n'aurez pas à tous les tester.
; 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
; 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 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
; 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
; 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-
; and Y sensitivities above). ³ sibilités X et Y définies plus haut).
; 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
; 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
; stretch the virtual area of the | pixels, nous devons élargir la zone
; 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.
; (Warning: the mouse movement can | (Attention: le déplacement de la
; 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...
; "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
; them all). | vous n'aurez pas à tous les tester.
; 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
; 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 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
; 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
; 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-
; and Y sensitivities above). | sibilités X et Y définies plus haut).
X_correction_factor = 0 ; (default 3)
Y_correction_factor = 0 ; (default 3)
; Aspect of the main cursor (cross) ³ Aspect du curseur principal (croix)
; 1: Solid ³ 1: Solide
; 2: Transparent ³ 2: Transparent
; 3: Thin (solid) ³ 3: Fin (solide)
; Aspect of the main cursor (cross) | Aspect du curseur principal (croix)
; 1: Solid | 1: Solide
; 2: Transparent | 2: Transparent
; 3: Thin (solid) | 3: Fin (solide)
Cursor_aspect = 1 ; (default 1)
[MENU] # [MENU]
; 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
; modified). ³ être modifiées).
; 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.
; 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
; modified). | être modifiées).
; 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.
Light_color = 42,42,42 ; (default 42,42,42)
Dark_color = 27,27,27 ; (default 27,27,27)
;
@ -88,202 +88,202 @@
; Light_color = 10,40,55 ; \_ Oceanic
; Dark_color = 10,20,32 ; /
; Aspect ratio and size of the ³ Proportion des menus et de la barre
; menus and the tool-bar. ³ d'outils.
; Possible values: ³ Valeurs possibles:
; 0: Do not adapt (pixels are not ³ 0: Ne pas adapter (les pixels ne sont
; stretched) ³ pas étirés)
; 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
; 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
; Aspect ratio and size of the | Proportion des menus et de la barre
; menus and the tool-bar. | d'outils.
; Possible values: | Valeurs possibles:
; 0: Do not adapt (pixels are not | 0: Ne pas adapter (les pixels ne sont
; stretched) | pas étirés)
; 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
; 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
Menu_ratio = 1 ; (default 1)
; Font: ³ Police de caractères (fonte):
; 1: Classic ³ 1: Classique
; 2: Fun ³ 2: Fun
; Font: | Police de caractères (fonte):
; 1: Classic | 1: Classique
; 2: Fun | 2: Fun
Font = 2 ; (default 1)
[FILE_SELECTOR] # [SELECTEUR_DE_FICHIERS]
; Show special files and ³ Afficher les fichiers et répertoires
; directories (values are 'yes' or ³ spéciaux (les valeurs sont 'yes' ou
; 'no'). ³ 'no').
; Show special files and | Afficher les fichiers et répertoires
; directories (values are 'yes' or | spéciaux (les valeurs sont 'yes' ou
; 'no'). | 'no').
Show_hidden_files = no ; (default 'no')
Show_hidden_directories = no ; (default 'no')
Show_system_directories = no ; (default 'no')
; 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
; second). Possible values range ³ 18.2èmes de seconde) Les valeurs
; from 1 to 256. ³ possibles vont de 1 à 256.
; 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
; second). Possible values range | 18.2èmes de seconde) Les valeurs
; from 1 to 256. | possibles vont de 1 à 256.
Preview_delay = 8 ; (default 8)
; 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
; 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-
; 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,
; does not fill the whole screen, ³ mais si l'image ne prend pas tout
; it can be worse. ³ l'écran, cela peut être pire.
; 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
; 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-
; 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,
; does not fill the whole screen, | mais si l'image ne prend pas tout
; it can be worse. | l'écran, cela peut être pire.
Maximize_preview = no ; (default 'no')
; 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
; 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
; the "PICTURE.PKM" in a directory ³ fichier "PICTURE.PKM" dans un réper-
; 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
; The different values of "FFF" ³ P puis I.
; 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
; 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.
; 1: files only ³ 0: fichiers et répertoires
; 2: directories only ³ 1: fichiers seulement
; ³ 2: répertoires seulement
; 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
; 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
; the "PICTURE.PKM" in a directory | fichier "PICTURE.PKM" dans un réper-
; 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
; The different values of "FFF" | P puis I.
; 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
; 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.
; 1: files only | 0: fichiers et répertoires
; 2: directories only | 1: fichiers seulement
; | 2: répertoires seulement
Find_file_fast = 0 ; (default 0)
[LOADING] # [CHARGEMENT]
; Automatically set the resolution ³ Passer automatiquement dans la bonne
; when loading a picture. ³ résolution lors du chargement d'une
; You should set this value to ³ image.
; 'yes' after disabling the video ³ Vous devriez définir cette option à
; 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
; ³ votre matériel.
; Automatically set the resolution | Passer automatiquement dans la bonne
; when loading a picture. | résolution lors du chargement d'une
; You should set this value to | image.
; 'yes' after disabling the video | Vous devriez définir cette option à
; 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
; | votre matériel.
Auto_set_resolution = yes ; (default 'no')
; 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
; to set the resolution according ³ définir la résolution suivant:
; to: ³ 1: les dimensions de "l'écran
; 1: the internal "original screen" ³ d'origine" internes à l'image
; dimensions of the picture ³ 2: les véritables dimensions de
; 2: the actual dimensions of the ³ l'image
; picture ³
; 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
; to set the resolution according | définir la résolution suivant:
; to: | 1: les dimensions de "l'écran
; 1: the internal "original screen" | d'origine" internes à l'image
; dimensions of the picture | 2: les véritables dimensions de
; 2: the actual dimensions of the | l'image
; picture |
Set_resolution_according_to = 1 ; (default 1)
; 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,
; 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
; 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
; of colors of the new picture. ³ nouvelle 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
; 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
; they will be kept unchanged if ³ inchangées si elle est à 'no'.
; this option is set to 'no'. ³
; 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,
; 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
; 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
; of colors of the new picture. | nouvelle 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
; 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
; they will be kept unchanged if | inchangées si elle est à 'no'.
; this option is set to 'no'. |
Clear_palette = yes ; (default 'yes')
[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')
; Adjust the brush grabbing in ³ Ajuster la capture de brosse en mode
; "grid" mode. ³ "grille".
; Adjust the brush grabbing in | Ajuster la capture de brosse en mode
; "grid" mode. | "grille".
Adjust_brush_pick = yes ; (default 'yes')
; Coordinates: ³ Coordonnées:
; 1: Relative ³ 1: Relatives
; 2: Absolute ³ 2: Absolues
; Coordinates: | Coordonnées:
; 1: Relative | 1: Relatives
; 2: Absolute | 2: Absolues
Coordinates = 2 ; (default 1)
; Create a backup file when saving. ³ Créer un fichier backup lors des
; ³ sauvegardes.
; Create a backup file when saving. | Créer un fichier backup lors des
; | sauvegardes.
Backup = no ; (default 'no')
; Number of pages stored in memory ³ Nombre de pages stockées en mémoire
; for "undoing". ³ destinées à annuler les dernières
; Values are between 1 and 99. ³ modifications. Valeurs entre 1 et 99.
; Number of pages stored in memory | Nombre de pages stockées en mémoire
; for "undoing". | destinées à annuler les dernières
; Values are between 1 and 99. | modifications. Valeurs entre 1 et 99.
Undo_pages = 1 ; (default 1)
; 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
; 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
; The bigger values, the slower. ³ 255. Plus elles sont grandes, plus
; ³ c'est lent.
; 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
; 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
; The bigger values, the slower. | 255. Plus elles sont grandes, plus
; | c'est lent.
Gauges_scrolling_speed_Left = 10 ; (default 10)
Gauges_scrolling_speed_Right = 3 ; (default 3)
; Automatically save the configu- ³ Enregistre automatiquement la configu-
; ration when exiting the program. ³ ration lorsqu'on quitte le programme.
; Automatically save the configu- | Enregistre automatiquement la configu-
; ration when exiting the program. | ration lorsqu'on quitte le programme.
Auto_save = yes ; (default 'yes')
; Maximum number of vertices used ³ Nombre maximum de vertex utilisés dans
; in filled polygons and polyforms, ³ les polygônes et polyformes pleins, et
; and lasso. Possible values range ³ le lasso. Les valeurs possibles vont
; from 2 to 16384. ³ de 2 à 16384.
; Each vertex takes 4 bytes. ³ Chaque vertex prend 4 octets.
; Maximum number of vertices used | Nombre maximum de vertex utilisés dans
; in filled polygons and polyforms, | les polygônes et polyformes pleins, et
; and lasso. Possible values range | le lasso. Les valeurs possibles vont
; from 2 to 16384. | de 2 à 16384.
; Each vertex takes 4 bytes. | Chaque vertex prend 4 octets.
Vertices_per_polygon = 1024 ; (default 1024)
; Automatically zoom into the ³ Zoomer automatiquement la zone pointée
; 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.
; while being above the picture. ³
; Automatically zoom into the | Zoomer automatiquement la zone pointée
; 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.
; while being above the picture. |
Fast_zoom = yes ; (default 'yes')
; Separate the colors in the tool- ³ Séparer les couleurs dans la barre
; bar by a black squaring. ³ d'outils par un quadrillage noir.
; Separate the colors in the tool- | Séparer les couleurs dans la barre
; bar by a black squaring. | d'outils par un quadrillage noir.
Separate_colors = no ; (default 'yes')
; Initial value of the feedback for ³ Valeur initiale du "feedback" pour les
; the drawing modes (cf. docs). ³ modes de dessin (cf. docs).
; Initial value of the feedback for | Valeur initiale du "feedback" pour les
; the drawing modes (cf. docs). | modes de dessin (cf. docs).
FX_feedback = yes ; (default 'yes')
; 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
; 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
; Switching the following variable ³ variable à 'yes' ramènera automatiquent
; 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
; colors left after "reducing" or ³ un "zapping".
; "zapping". ³
; 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
; 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
; Switching the following variable | variable à 'yes' ramènera automatiquent
; 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
; colors left after "reducing" or | un "zapping".
; "zapping". |
Safety_colors = no ; (default 'yes')
; Display a message at startup ³ Afficher un message au démarrage
; telling the version number of the ³ indiquant le numéro de version du
; program. ³ programme.
; Display a message at startup | Afficher un message au démarrage
; telling the version number of the | indiquant le numéro de version du
; program. | programme.
Opening_message = yes ; (default 'yes')
; Take the Stencil into account when³ Prendre le Stencil en compte lorsqu'on
; clearing the image. ³ efface l'image.
; Take the Stencil into account when| Prendre le Stencil en compte lorsqu'on
; clearing the image. | efface l'image.
Clear_with_stencil = yes ; (default 'yes')
; Directly set the discontinuous ³ Passer automatiquement en mode de
; freehand drawing mode after brush ³ dessin discontinu après la prise d'une
; grabbing. ³ brosse.
; Directly set the discontinuous | Passer automatiquement en mode de
; freehand drawing mode after brush | dessin discontinu après la prise d'une
; grabbing. | brosse.
Auto_discontinuous = no ; (default 'no')
; 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 with Photoshop or Alchemy, ³ ces fichiers avec Photoshop ou Alchemy,
; and maybe some other programs, you³ et peut-être d'autres programmes, vous
; must set this option to 'no'. ³ devez mettre cette option à 'no'.
; 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 with Photoshop or Alchemy, | ces fichiers avec Photoshop ou Alchemy,
; and maybe some other programs, you| et peut-être d'autres programmes, vous
; must set this option to 'no'. | devez mettre cette option à 'no'.
Save_screen_size_in_GIF = no ; (default 'no')
; Automaticaly count the number of ³ Compter automatiquement le nombre 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
; 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
; ³ d'énormes images).
; Automaticaly count the number of | Compter automatiquement le nombre 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
; 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
; | d'énormes images).
Auto_nb_colors_used = yes ; (default 'yes')
; 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
; "gfx2 /?" at the DOS prompt). ³ "gfx2 /?" sur la ligne de commande).
; 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
; "gfx2 /?" at the DOS prompt). | "gfx2 /?" sur la ligne de commande).
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 <stdio.h>
@ -223,7 +222,7 @@ void Charger_DAT(void)
}
Taille_fichier=Informations_Fichier.st_size;
if (Taille_fichier!=TAILLE_FICHIER_DATA)
if (Taille_fichier<DAT_DEBUT_INI_PAR_DEFAUT)
{
DEBUG("Taille",0);
Erreur(ERREUR_DAT_CORROMPU);

3
main.c
View File

@ -170,10 +170,9 @@ void Erreur(int Code)
break;
case ERREUR_REPERTOIRE_DISPARU : printf("Error: Directory you ran the program from not found!\n");
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");
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;
case ERREUR_SAUVEGARDE_INI : printf("Error: Cannot rewrite file GFX2.INI!\n");
break;

578
readini.c
View File

@ -1,31 +1,10 @@
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
#include "const.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)
{
int Indice;
@ -42,6 +21,7 @@ void Charger_INI_Clear_string(char * String)
else
if ((String[Indice]==';') ||
(String[Indice]=='#') ||
(String[Indice]=='\r') ||
(String[Indice]=='\n'))
{
// 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:
String[Indice]=lowercase_to_uppercase[(int)String[Indice]];
String[Indice]=toupper((int)String[Indice]);
Indice++;
}
}
@ -338,8 +318,6 @@ int Charger_INI(struct S_Config * Conf)
char * Nom_du_fichier;
int Retour;
Calculer_la_table_lowercase_to_uppercase();
Ligne_INI=0;
// On alloue les zones de mémoire:
@ -350,277 +328,289 @@ int Charger_INI(struct S_Config * Conf)
strcpy(Nom_du_fichier,Repertoire_du_programme);
strcat(Nom_du_fichier,"gfx2.ini");
Fichier=fopen(Nom_du_fichier,"r");
if (Fichier!=0)
Fichier=fopen(Nom_du_fichier,"rb");
if (Fichier==0)
{
if ((Retour=Charger_INI_Reach_group(Fichier,Buffer,"[MOUSE]")))
goto Erreur_Retour;
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"X_sensitivity",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<1) || (Valeurs[0]>255))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Indice_Sensibilite_souris_X=Valeurs[0];
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Y_sensitivity",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<1) || (Valeurs[0]>255))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Indice_Sensibilite_souris_Y=Valeurs[0];
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"X_correction_factor",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>4))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Mouse_Facteur_de_correction_X=Mouse_Facteur_de_correction_X=Valeurs[0];
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Y_correction_factor",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>4))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Mouse_Facteur_de_correction_Y=Mouse_Facteur_de_correction_Y=Valeurs[0];
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Cursor_aspect",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<1) || (Valeurs[0]>3))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Curseur=Valeurs[0]-1;
if ((Retour=Charger_INI_Reach_group(Fichier,Buffer,"[MENU]")))
goto Erreur_Retour;
Conf->Coul_menu_pref[0].R=0;
Conf->Coul_menu_pref[0].V=0;
Conf->Coul_menu_pref[0].B=0;
Conf->Coul_menu_pref[3].R=63;
Conf->Coul_menu_pref[3].V=63;
Conf->Coul_menu_pref[3].B=63;
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Light_color",3,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>63))
goto Erreur_ERREUR_INI_CORROMPU;
if ((Valeurs[1]<0) || (Valeurs[1]>63))
goto Erreur_ERREUR_INI_CORROMPU;
if ((Valeurs[2]<0) || (Valeurs[2]>63))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Coul_menu_pref[2].R=Valeurs[0];
Conf->Coul_menu_pref[2].V=Valeurs[1];
Conf->Coul_menu_pref[2].B=Valeurs[2];
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Dark_color",3,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>63))
goto Erreur_ERREUR_INI_CORROMPU;
if ((Valeurs[1]<0) || (Valeurs[1]>63))
goto Erreur_ERREUR_INI_CORROMPU;
if ((Valeurs[2]<0) || (Valeurs[2]>63))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Coul_menu_pref[1].R=Valeurs[0];
Conf->Coul_menu_pref[1].V=Valeurs[1];
Conf->Coul_menu_pref[1].B=Valeurs[2];
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Menu_ratio",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>2))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Ratio=Valeurs[0];
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Font",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<1) || (Valeurs[0]>2))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Fonte=Valeurs[0]-1;
if ((Retour=Charger_INI_Reach_group(Fichier,Buffer,"[FILE_SELECTOR]")))
goto Erreur_Retour;
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Show_hidden_files",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Lire_les_fichiers_caches=Valeurs[0]?-1:0;
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Show_hidden_directories",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Lire_les_repertoires_caches=Valeurs[0]?-1:0;
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Show_system_directories",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Lire_les_repertoires_systemes=Valeurs[0]?-1:0;
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Preview_delay",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<1) || (Valeurs[0]>256))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Chrono_delay=Valeurs[0];
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Maximize_preview",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Maximize_preview=Valeurs[0];
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Find_file_fast",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>2))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Find_file_fast=Valeurs[0];
if ((Retour=Charger_INI_Reach_group(Fichier,Buffer,"[LOADING]")))
goto Erreur_Retour;
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Auto_set_resolution",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Auto_set_res=Valeurs[0];
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Set_resolution_according_to",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<1) || (Valeurs[0]>2))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Set_resolution_according_to=Valeurs[0];
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Clear_palette",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Clear_palette=Valeurs[0];
if ((Retour=Charger_INI_Reach_group(Fichier,Buffer,"[MISCELLANEOUS]")))
goto Erreur_Retour;
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Draw_limits",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Afficher_limites_image=Valeurs[0];
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Adjust_brush_pick",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Adjust_brush_pick=Valeurs[0];
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Coordinates",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<1) || (Valeurs[0]>2))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Coords_rel=2-Valeurs[0];
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Backup",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Backup=Valeurs[0];
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Undo_pages",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<1) || (Valeurs[0]>99))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Nb_pages_Undo=Valeurs[0];
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Gauges_scrolling_speed_Left",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<1) || (Valeurs[0]>255))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Valeur_tempo_jauge_gauche=Valeurs[0];
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Gauges_scrolling_speed_Right",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<1) || (Valeurs[0]>255))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Valeur_tempo_jauge_droite=Valeurs[0];
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Auto_save",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Auto_save=Valeurs[0];
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Vertices_per_polygon",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<2) || (Valeurs[0]>16384))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Nb_max_de_vertex_par_polygon=Valeurs[0];
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Fast_zoom",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Fast_zoom=Valeurs[0];
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Separate_colors",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Couleurs_separees=Valeurs[0];
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"FX_feedback",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->FX_Feedback=Valeurs[0];
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Safety_colors",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Safety_colors=Valeurs[0];
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Opening_message",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Opening_message=Valeurs[0];
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Clear_with_stencil",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Clear_with_stencil=Valeurs[0];
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Auto_discontinuous",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Auto_discontinuous=Valeurs[0];
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Save_screen_size_in_GIF",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Taille_ecran_dans_GIF=Valeurs[0];
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Auto_nb_colors_used",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Auto_nb_used=Valeurs[0];
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Default_video_mode",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<MODE_320_200) || (Valeurs[0]>MODE_1024_768))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Resolution_par_defaut=Valeurs[0];
fclose(Fichier);
}
else
{
free(Nom_du_fichier);
free(Buffer);
return ERREUR_INI_ABSENT;
// 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]")))
goto Erreur_Retour;
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"X_sensitivity",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<1) || (Valeurs[0]>255))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Indice_Sensibilite_souris_X=Valeurs[0];
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Y_sensitivity",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<1) || (Valeurs[0]>255))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Indice_Sensibilite_souris_Y=Valeurs[0];
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"X_correction_factor",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>4))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Mouse_Facteur_de_correction_X=Mouse_Facteur_de_correction_X=Valeurs[0];
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Y_correction_factor",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>4))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Mouse_Facteur_de_correction_Y=Mouse_Facteur_de_correction_Y=Valeurs[0];
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Cursor_aspect",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<1) || (Valeurs[0]>3))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Curseur=Valeurs[0]-1;
if ((Retour=Charger_INI_Reach_group(Fichier,Buffer,"[MENU]")))
goto Erreur_Retour;
Conf->Coul_menu_pref[0].R=0;
Conf->Coul_menu_pref[0].V=0;
Conf->Coul_menu_pref[0].B=0;
Conf->Coul_menu_pref[3].R=63;
Conf->Coul_menu_pref[3].V=63;
Conf->Coul_menu_pref[3].B=63;
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Light_color",3,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>63))
goto Erreur_ERREUR_INI_CORROMPU;
if ((Valeurs[1]<0) || (Valeurs[1]>63))
goto Erreur_ERREUR_INI_CORROMPU;
if ((Valeurs[2]<0) || (Valeurs[2]>63))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Coul_menu_pref[2].R=Valeurs[0];
Conf->Coul_menu_pref[2].V=Valeurs[1];
Conf->Coul_menu_pref[2].B=Valeurs[2];
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Dark_color",3,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>63))
goto Erreur_ERREUR_INI_CORROMPU;
if ((Valeurs[1]<0) || (Valeurs[1]>63))
goto Erreur_ERREUR_INI_CORROMPU;
if ((Valeurs[2]<0) || (Valeurs[2]>63))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Coul_menu_pref[1].R=Valeurs[0];
Conf->Coul_menu_pref[1].V=Valeurs[1];
Conf->Coul_menu_pref[1].B=Valeurs[2];
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Menu_ratio",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>2))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Ratio=Valeurs[0];
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Font",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<1) || (Valeurs[0]>2))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Fonte=Valeurs[0]-1;
if ((Retour=Charger_INI_Reach_group(Fichier,Buffer,"[FILE_SELECTOR]")))
goto Erreur_Retour;
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Show_hidden_files",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Lire_les_fichiers_caches=Valeurs[0]?-1:0;
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Show_hidden_directories",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Lire_les_repertoires_caches=Valeurs[0]?-1:0;
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Show_system_directories",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Lire_les_repertoires_systemes=Valeurs[0]?-1:0;
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Preview_delay",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<1) || (Valeurs[0]>256))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Chrono_delay=Valeurs[0];
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Maximize_preview",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Maximize_preview=Valeurs[0];
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Find_file_fast",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>2))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Find_file_fast=Valeurs[0];
if ((Retour=Charger_INI_Reach_group(Fichier,Buffer,"[LOADING]")))
goto Erreur_Retour;
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Auto_set_resolution",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Auto_set_res=Valeurs[0];
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Set_resolution_according_to",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<1) || (Valeurs[0]>2))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Set_resolution_according_to=Valeurs[0];
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Clear_palette",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Clear_palette=Valeurs[0];
if ((Retour=Charger_INI_Reach_group(Fichier,Buffer,"[MISCELLANEOUS]")))
goto Erreur_Retour;
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Draw_limits",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Afficher_limites_image=Valeurs[0];
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Adjust_brush_pick",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Adjust_brush_pick=Valeurs[0];
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Coordinates",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<1) || (Valeurs[0]>2))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Coords_rel=2-Valeurs[0];
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Backup",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Backup=Valeurs[0];
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Undo_pages",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<1) || (Valeurs[0]>99))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Nb_pages_Undo=Valeurs[0];
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Gauges_scrolling_speed_Left",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<1) || (Valeurs[0]>255))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Valeur_tempo_jauge_gauche=Valeurs[0];
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Gauges_scrolling_speed_Right",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<1) || (Valeurs[0]>255))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Valeur_tempo_jauge_droite=Valeurs[0];
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Auto_save",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Auto_save=Valeurs[0];
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Vertices_per_polygon",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<2) || (Valeurs[0]>16384))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Nb_max_de_vertex_par_polygon=Valeurs[0];
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Fast_zoom",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Fast_zoom=Valeurs[0];
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Separate_colors",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Couleurs_separees=Valeurs[0];
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"FX_feedback",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->FX_Feedback=Valeurs[0];
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Safety_colors",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Safety_colors=Valeurs[0];
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Opening_message",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Opening_message=Valeurs[0];
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Clear_with_stencil",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Clear_with_stencil=Valeurs[0];
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Auto_discontinuous",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Auto_discontinuous=Valeurs[0];
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Save_screen_size_in_GIF",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Taille_ecran_dans_GIF=Valeurs[0];
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Auto_nb_colors_used",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Auto_nb_used=Valeurs[0];
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Default_video_mode",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<MODE_320_200) || (Valeurs[0]>MODE_1024_768))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Resolution_par_defaut=Valeurs[0];
fclose(Fichier);
free(Nom_du_fichier);
free(Buffer);

460
saveini.c
View File

@ -4,6 +4,8 @@
#include "const.h"
#include "global.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)
{
@ -11,11 +13,11 @@ int Sauver_INI_Reach_group(FILE * Old_file,FILE * New_file,char * Buffer,char *
char * Group_upper;
char * Buffer_upper;
// On alloue les zones de mmoire:
// On alloue les zones de mémoire:
Group_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);
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);
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);
if (fprintf(New_file,"%s",Buffer)<0)
{
@ -68,7 +70,7 @@ int Sauver_INI_char_in_value_alphabet(char Char)
(Char>='a') &&
(Char<='z')
) ||
(Char == '$') // Symbole d'hexadcimal
(Char == '$') // Symbole d'hexadécimal
)
return 1;
else
@ -95,20 +97,20 @@ void Sauver_INI_Set_value(char * Destination,char * Source,int Nb_values_to_set,
for (;Source[Indice_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;
// Puis pour chaque valeur recopier:
// Puis pour chaque valeur à recopier:
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)
{
// La valeur doit ˆtre crite sous la forme Yes/No
// La valeur doit être écrite sous la forme Yes/No
if (Values[Indice_valeur])
{
// La valeur <=> Yes
// La valeur <=> Yes
memcpy(Destination+Indice_destination,"yes",3);
Indice_destination+=3;
@ -123,11 +125,11 @@ void Sauver_INI_Set_value(char * Destination,char * Source,int Nb_values_to_set,
}
else
{
// La valeur doit ˆtre crite sous forme numrique
// La valeur doit être écrite sous forme numérique
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 '$':
Destination[Indice_destination]='$';
@ -138,7 +140,7 @@ void Sauver_INI_Set_value(char * Destination,char * Source,int Nb_values_to_set,
}
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]);
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))
{
// 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
// 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++)
Destination[Indice_destination]=Source[Indice_source];
}
else
{
// C'est la derniŠre valeur initialiser
// C'est la derniŠre valeur à initialiser
// On recopie toute la fin de la ligne:
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;
//int Indice_buffer;
// On alloue les zones de mmoire:
// On alloue les zones de mémoire:
Option_upper=(char *)malloc(1024);
Buffer_upper=(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);
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);
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);
if (Arret)
{
// On l'a trouve:
// On l'a trouvée:
Sauver_INI_Set_value(Buffer_resultat,Buffer,Nb_values_to_set,Values,Litteral);
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
{
// On l'a pas trouve:
// On l'a pas trouvée:
if (fprintf(New_file,"%s",Buffer)<0)
{
@ -260,228 +262,230 @@ int Sauver_INI(struct S_Config * Conf)
FILE * Nouveau_fichier;
char * Buffer;
int Valeurs[3];
char * Nom_du_fichier;
char * Nom_du_fichier_temporaire;
char Nom_du_fichier[256];
char Nom_du_fichier_temporaire[256];
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);
Nom_du_fichier=(char *)malloc(256);
Nom_du_fichier_temporaire=(char *)malloc(256);
// On calcule les noms des fichiers qu'on manipule:
strcpy(Nom_du_fichier,Repertoire_du_programme);
strcat(Nom_du_fichier,"gfx2.ini");
strcpy(Nom_du_fichier_temporaire,Repertoire_du_programme);
strcat(Nom_du_fichier_temporaire,"gfx2.$$$");
// On renome l'ancienne version du fichier INI vers un fichier temporaire:
if (rename(Nom_du_fichier,Nom_du_fichier_temporaire)!=0)
goto Erreur_ERREUR_SAUVEGARDE_INI;
Ancien_fichier=fopen(Nom_du_fichier_temporaire,"r");
if (Ancien_fichier!=0)
// On vérifie si le fichier INI existe
if ((Ini_existe = Fichier_existe(Nom_du_fichier)))
{
Nouveau_fichier=fopen(Nom_du_fichier,"w");
if (Nouveau_fichier!=0)
strcpy(Nom_du_fichier_temporaire,Repertoire_du_programme);
strcat(Nom_du_fichier_temporaire,"gfx2.$$$");
// On renome l'ancienne version du fichier INI vers un fichier temporaire:
if (rename(Nom_du_fichier,Nom_du_fichier_temporaire)!=0)
{
if ((Retour=Sauver_INI_Reach_group(Ancien_fichier,Nouveau_fichier,Buffer,"[MOUSE]")))
goto Erreur_Retour;
Valeurs[0]=Conf->Indice_Sensibilite_souris_X;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"X_sensitivity",1,Valeurs,0)))
goto Erreur_Retour;
Valeurs[0]=Conf->Indice_Sensibilite_souris_Y;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Y_sensitivity",1,Valeurs,0)))
goto Erreur_Retour;
Valeurs[0]=Conf->Mouse_Facteur_de_correction_X;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"X_correction_factor",1,Valeurs,0)))
goto Erreur_Retour;
Valeurs[0]=Conf->Mouse_Facteur_de_correction_Y;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Y_correction_factor",1,Valeurs,0)))
goto Erreur_Retour;
Valeurs[0]=(Conf->Curseur)+1;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Cursor_aspect",1,Valeurs,0)))
goto Erreur_Retour;
if ((Retour=Sauver_INI_Reach_group(Ancien_fichier,Nouveau_fichier,Buffer,"[MENU]")))
goto Erreur_Retour;
Valeurs[0]=Conf->Coul_menu_pref[2].R;
Valeurs[1]=Conf->Coul_menu_pref[2].V;
Valeurs[2]=Conf->Coul_menu_pref[2].B;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Light_color",3,Valeurs,0)))
goto Erreur_Retour;
Valeurs[0]=Conf->Coul_menu_pref[1].R;
Valeurs[1]=Conf->Coul_menu_pref[1].V;
Valeurs[2]=Conf->Coul_menu_pref[1].B;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Dark_color",3,Valeurs,0)))
goto Erreur_Retour;
Valeurs[0]=Conf->Ratio;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Menu_ratio",1,Valeurs,0)))
goto Erreur_Retour;
Valeurs[0]=(Conf->Fonte)+1;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Font",1,Valeurs,0)))
goto Erreur_Retour;
if ((Retour=Sauver_INI_Reach_group(Ancien_fichier,Nouveau_fichier,Buffer,"[FILE_SELECTOR]")))
goto Erreur_Retour;
Valeurs[0]=Conf->Lire_les_fichiers_caches?1:0;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Show_hidden_files",1,Valeurs,1)))
goto Erreur_Retour;
Valeurs[0]=Conf->Lire_les_repertoires_caches?1:0;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Show_hidden_directories",1,Valeurs,1)))
goto Erreur_Retour;
Valeurs[0]=Conf->Lire_les_repertoires_systemes?1:0;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Show_system_directories",1,Valeurs,1)))
goto Erreur_Retour;
Valeurs[0]=Conf->Chrono_delay;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Preview_delay",1,Valeurs,0)))
goto Erreur_Retour;
Valeurs[0]=Conf->Maximize_preview;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Maximize_preview",1,Valeurs,1)))
goto Erreur_Retour;
Valeurs[0]=Conf->Find_file_fast;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Find_file_fast",1,Valeurs,0)))
goto Erreur_Retour;
if ((Retour=Sauver_INI_Reach_group(Ancien_fichier,Nouveau_fichier,Buffer,"[LOADING]")))
goto Erreur_Retour;
Valeurs[0]=Conf->Auto_set_res;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Auto_set_resolution",1,Valeurs,1)))
goto Erreur_Retour;
Valeurs[0]=Conf->Set_resolution_according_to;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Set_resolution_according_to",1,Valeurs,0)))
goto Erreur_Retour;
Valeurs[0]=Conf->Clear_palette;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Clear_palette",1,Valeurs,1)))
goto Erreur_Retour;
if ((Retour=Sauver_INI_Reach_group(Ancien_fichier,Nouveau_fichier,Buffer,"[MISCELLANEOUS]")))
goto Erreur_Retour;
Valeurs[0]=Conf->Afficher_limites_image;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Draw_limits",1,Valeurs,1)))
goto Erreur_Retour;
Valeurs[0]=Conf->Adjust_brush_pick;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Adjust_brush_pick",1,Valeurs,1)))
goto Erreur_Retour;
Valeurs[0]=2-Conf->Coords_rel;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Coordinates",1,Valeurs,0)))
goto Erreur_Retour;
Valeurs[0]=Conf->Backup;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Backup",1,Valeurs,1)))
goto Erreur_Retour;
Valeurs[0]=Conf->Nb_pages_Undo;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Undo_pages",1,Valeurs,0)))
goto Erreur_Retour;
Valeurs[0]=Conf->Valeur_tempo_jauge_gauche;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Gauges_scrolling_speed_Left",1,Valeurs,0)))
goto Erreur_Retour;
Valeurs[0]=Conf->Valeur_tempo_jauge_droite;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Gauges_scrolling_speed_Right",1,Valeurs,0)))
goto Erreur_Retour;
Valeurs[0]=Conf->Auto_save;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Auto_save",1,Valeurs,1)))
goto Erreur_Retour;
Valeurs[0]=Conf->Nb_max_de_vertex_par_polygon;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Vertices_per_polygon",1,Valeurs,0)))
goto Erreur_Retour;
Valeurs[0]=Conf->Fast_zoom;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Fast_zoom",1,Valeurs,1)))
goto Erreur_Retour;
Valeurs[0]=Conf->Couleurs_separees;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Separate_colors",1,Valeurs,1)))
goto Erreur_Retour;
Valeurs[0]=Conf->FX_Feedback;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"FX_feedback",1,Valeurs,1)))
goto Erreur_Retour;
Valeurs[0]=Conf->Safety_colors;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Safety_colors",1,Valeurs,1)))
goto Erreur_Retour;
Valeurs[0]=Conf->Opening_message;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Opening_message",1,Valeurs,1)))
goto Erreur_Retour;
Valeurs[0]=Conf->Clear_with_stencil;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Clear_with_stencil",1,Valeurs,1)))
goto Erreur_Retour;
Valeurs[0]=Conf->Auto_discontinuous;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Auto_discontinuous",1,Valeurs,1)))
goto Erreur_Retour;
Valeurs[0]=Conf->Taille_ecran_dans_GIF;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Save_screen_size_in_GIF",1,Valeurs,1)))
goto Erreur_Retour;
Valeurs[0]=Conf->Auto_nb_used;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Auto_nb_colors_used",1,Valeurs,1)))
goto Erreur_Retour;
Valeurs[0]=Conf->Resolution_par_defaut;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Default_video_mode",1,Valeurs,0)))
goto Erreur_Retour;
Sauver_INI_Flush(Ancien_fichier,Nouveau_fichier,Buffer);
fclose(Nouveau_fichier);
}
else
{
fclose(Ancien_fichier);
goto Erreur_ERREUR_SAUVEGARDE_INI;
}
fclose(Ancien_fichier);
}
else
// 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)
{
free(Nom_du_fichier_temporaire);
free(Nom_du_fichier);
free(Buffer);
return ERREUR_INI_ABSENT;
fclose(Ancien_fichier);
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]")))
goto Erreur_Retour;
Valeurs[0]=Conf->Indice_Sensibilite_souris_X;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"X_sensitivity",1,Valeurs,0)))
goto Erreur_Retour;
Valeurs[0]=Conf->Indice_Sensibilite_souris_Y;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Y_sensitivity",1,Valeurs,0)))
goto Erreur_Retour;
Valeurs[0]=Conf->Mouse_Facteur_de_correction_X;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"X_correction_factor",1,Valeurs,0)))
goto Erreur_Retour;
Valeurs[0]=Conf->Mouse_Facteur_de_correction_Y;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Y_correction_factor",1,Valeurs,0)))
goto Erreur_Retour;
Valeurs[0]=(Conf->Curseur)+1;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Cursor_aspect",1,Valeurs,0)))
goto Erreur_Retour;
if ((Retour=Sauver_INI_Reach_group(Ancien_fichier,Nouveau_fichier,Buffer,"[MENU]")))
goto Erreur_Retour;
Valeurs[0]=Conf->Coul_menu_pref[2].R;
Valeurs[1]=Conf->Coul_menu_pref[2].V;
Valeurs[2]=Conf->Coul_menu_pref[2].B;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Light_color",3,Valeurs,0)))
goto Erreur_Retour;
Valeurs[0]=Conf->Coul_menu_pref[1].R;
Valeurs[1]=Conf->Coul_menu_pref[1].V;
Valeurs[2]=Conf->Coul_menu_pref[1].B;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Dark_color",3,Valeurs,0)))
goto Erreur_Retour;
Valeurs[0]=Conf->Ratio;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Menu_ratio",1,Valeurs,0)))
goto Erreur_Retour;
Valeurs[0]=(Conf->Fonte)+1;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Font",1,Valeurs,0)))
goto Erreur_Retour;
if ((Retour=Sauver_INI_Reach_group(Ancien_fichier,Nouveau_fichier,Buffer,"[FILE_SELECTOR]")))
goto Erreur_Retour;
Valeurs[0]=Conf->Lire_les_fichiers_caches?1:0;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Show_hidden_files",1,Valeurs,1)))
goto Erreur_Retour;
Valeurs[0]=Conf->Lire_les_repertoires_caches?1:0;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Show_hidden_directories",1,Valeurs,1)))
goto Erreur_Retour;
Valeurs[0]=Conf->Lire_les_repertoires_systemes?1:0;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Show_system_directories",1,Valeurs,1)))
goto Erreur_Retour;
Valeurs[0]=Conf->Chrono_delay;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Preview_delay",1,Valeurs,0)))
goto Erreur_Retour;
Valeurs[0]=Conf->Maximize_preview;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Maximize_preview",1,Valeurs,1)))
goto Erreur_Retour;
Valeurs[0]=Conf->Find_file_fast;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Find_file_fast",1,Valeurs,0)))
goto Erreur_Retour;
if ((Retour=Sauver_INI_Reach_group(Ancien_fichier,Nouveau_fichier,Buffer,"[LOADING]")))
goto Erreur_Retour;
Valeurs[0]=Conf->Auto_set_res;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Auto_set_resolution",1,Valeurs,1)))
goto Erreur_Retour;
Valeurs[0]=Conf->Set_resolution_according_to;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Set_resolution_according_to",1,Valeurs,0)))
goto Erreur_Retour;
Valeurs[0]=Conf->Clear_palette;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Clear_palette",1,Valeurs,1)))
goto Erreur_Retour;
if ((Retour=Sauver_INI_Reach_group(Ancien_fichier,Nouveau_fichier,Buffer,"[MISCELLANEOUS]")))
goto Erreur_Retour;
Valeurs[0]=Conf->Afficher_limites_image;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Draw_limits",1,Valeurs,1)))
goto Erreur_Retour;
Valeurs[0]=Conf->Adjust_brush_pick;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Adjust_brush_pick",1,Valeurs,1)))
goto Erreur_Retour;
Valeurs[0]=2-Conf->Coords_rel;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Coordinates",1,Valeurs,0)))
goto Erreur_Retour;
Valeurs[0]=Conf->Backup;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Backup",1,Valeurs,1)))
goto Erreur_Retour;
Valeurs[0]=Conf->Nb_pages_Undo;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Undo_pages",1,Valeurs,0)))
goto Erreur_Retour;
Valeurs[0]=Conf->Valeur_tempo_jauge_gauche;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Gauges_scrolling_speed_Left",1,Valeurs,0)))
goto Erreur_Retour;
Valeurs[0]=Conf->Valeur_tempo_jauge_droite;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Gauges_scrolling_speed_Right",1,Valeurs,0)))
goto Erreur_Retour;
Valeurs[0]=Conf->Auto_save;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Auto_save",1,Valeurs,1)))
goto Erreur_Retour;
Valeurs[0]=Conf->Nb_max_de_vertex_par_polygon;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Vertices_per_polygon",1,Valeurs,0)))
goto Erreur_Retour;
Valeurs[0]=Conf->Fast_zoom;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Fast_zoom",1,Valeurs,1)))
goto Erreur_Retour;
Valeurs[0]=Conf->Couleurs_separees;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Separate_colors",1,Valeurs,1)))
goto Erreur_Retour;
Valeurs[0]=Conf->FX_Feedback;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"FX_feedback",1,Valeurs,1)))
goto Erreur_Retour;
Valeurs[0]=Conf->Safety_colors;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Safety_colors",1,Valeurs,1)))
goto Erreur_Retour;
Valeurs[0]=Conf->Opening_message;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Opening_message",1,Valeurs,1)))
goto Erreur_Retour;
Valeurs[0]=Conf->Clear_with_stencil;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Clear_with_stencil",1,Valeurs,1)))
goto Erreur_Retour;
Valeurs[0]=Conf->Auto_discontinuous;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Auto_discontinuous",1,Valeurs,1)))
goto Erreur_Retour;
Valeurs[0]=Conf->Taille_ecran_dans_GIF;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Save_screen_size_in_GIF",1,Valeurs,1)))
goto Erreur_Retour;
Valeurs[0]=Conf->Auto_nb_used;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Auto_nb_colors_used",1,Valeurs,1)))
goto Erreur_Retour;
Valeurs[0]=Conf->Resolution_par_defaut;
if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Default_video_mode",1,Valeurs,0)))
goto Erreur_Retour;
Sauver_INI_Flush(Ancien_fichier,Nouveau_fichier,Buffer);
fclose(Nouveau_fichier);
fclose(Ancien_fichier);
// On efface le fichier temporaire <=> Ancienne version du .INI
remove(Nom_du_fichier_temporaire);
free(Nom_du_fichier_temporaire);
free(Nom_du_fichier);
if (Ini_existe)
remove(Nom_du_fichier_temporaire);
free(Buffer);
return 0;
@ -491,15 +495,11 @@ int Sauver_INI(struct S_Config * Conf)
fclose(Nouveau_fichier);
fclose(Ancien_fichier);
free(Nom_du_fichier_temporaire);
free(Nom_du_fichier);
free(Buffer);
return Retour;
Erreur_ERREUR_SAUVEGARDE_INI:
free(Nom_du_fichier_temporaire);
free(Nom_du_fichier);
free(Buffer);
return ERREUR_SAUVEGARDE_INI;
}