Remove usage of MAX_PATH_CHARACTERS in saveini.c

This commit is contained in:
Thomas Bernard 2019-01-18 12:34:12 +01:00
parent 8f0d036fe1
commit efeaad5b73
No known key found for this signature in database
GPG Key ID: 0FF11B67A5C0863C

View File

@ -2,6 +2,7 @@
*/
/* Grafx2 - The Ultimate 256-color bitmap paint program
Copyright 2019 Thomas Bernard
Copyright 2011 Pawel Góralski
Copyright 2008 Peter Gordon
Copyright 2008 Yves Rizoud
@ -425,7 +426,7 @@ static int Save_INI_set_values(FILE * old_file,FILE * new_file,char * buffer,con
*/
static void Save_INI_flush(FILE * old_file,FILE * new_file,char * buffer)
{
while (fgets(buffer,1024,old_file)!=0)
while (fgets(buffer,1024,old_file) != NULL)
fprintf(new_file,"%s",buffer);
}
@ -439,50 +440,53 @@ int Save_INI(const T_Config * conf)
FILE * new_file;
char * buffer;
int values[3];
char filename[MAX_PATH_CHARACTERS];
char temp_filename[MAX_PATH_CHARACTERS];
char * filename;
char * temp_filename = NULL;
int return_code;
char ref_ini_file[MAX_PATH_CHARACTERS];
char * ref_ini_file;
int ini_file_exists;
int index;
// On alloue les zones de mémoire:
buffer=(char *)malloc(1024);
// Open "clean" INI with defaults from gfx2def.ini
ref_ini_file = Filepath_append_to_dir(Data_directory, INIDEF_FILENAME);
old_file = fopen(ref_ini_file, "r");
if (old_file == 0)
{
free(ref_ini_file);
return ERROR_INI_MISSING;
}
free(ref_ini_file);
// On calcule les noms des fichiers qu'on manipule:
strcpy(filename,Config_directory);
strcat(filename,INI_FILENAME);
// On vérifie si le fichier INI existe
// Check if the ini file already exists
filename = Filepath_append_to_dir(Config_directory, INI_FILENAME);
if ((ini_file_exists = File_exists(filename)))
{
strcpy(temp_filename,Config_directory);
strcat(temp_filename,INISAVE_FILENAME);
temp_filename = Filepath_append_to_dir(Config_directory, INISAVE_FILENAME);
// Delete gfx2.$$$
remove(temp_filename);
// Rename current config file as gfx2.$$$
if (rename(filename, temp_filename) != 0)
{
goto Erreur_ERREUR_SAUVEGARDE_INI;
}
}
// On récupère un fichier INI "propre" à partir de gfx2def.ini
strcpy(ref_ini_file,Data_directory);
strcat(ref_ini_file,INIDEF_FILENAME);
old_file=fopen(ref_ini_file,"rb");
if (old_file==0)
{
fclose(old_file);
free(buffer);
return ERROR_INI_MISSING;
}
new_file=fopen(filename,"wb");
if (new_file==0)
{
free(buffer);
free(filename);
free(temp_filename);
return ERROR_SAVING_INI;
}
}
new_file = fopen(filename, "w");
if (new_file == 0)
{
fclose(old_file);
free(filename);
free(temp_filename);
return ERROR_SAVING_INI;
}
free(filename);
// Allocate work memory buffer
buffer = (char *)malloc(1024);
if ((return_code=Save_INI_reach_group(old_file,new_file,buffer,"[MOUSE]")))
goto Erreur_Retour;
@ -771,23 +775,29 @@ int Save_INI(const T_Config * conf)
fclose(new_file);
fclose(old_file);
// On efface le fichier temporaire <=> Ancienne version du .INI
if (ini_file_exists)
// Remove temporary file <=> old version of .INI
if (ini_file_exists && temp_filename != NULL)
remove(temp_filename);
free(temp_filename);
free(buffer);
return 0;
// Gestion des erreurs:
// Error Handling
Erreur_Retour:
fclose(new_file);
fclose(old_file);
free(buffer);
return return_code;
Erreur_ERREUR_SAUVEGARDE_INI:
free(buffer);
return ERROR_SAVING_INI;
if (ini_file_exists && temp_filename != NULL)
{
// restore old file
filename = Filepath_append_to_dir(Config_directory, INI_FILENAME);
remove(filename);
rename(temp_filename, filename);
free(filename);
}
free(buffer);
free(temp_filename);
return return_code;
}