OS4, OSX: Centralized the part which determined which directory contains the program's files.
Owners of these platforms, please check if I did it ok. It should crash spectacularly on program init or shutdown if I messed up. git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@312 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
parent
392f5f13d0
commit
b49fde7015
35
init.c
35
init.c
@ -60,13 +60,30 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Chercher le répertoire contenant GFX2.EXE
|
// Chercher le répertoire contenant GFX2.EXE
|
||||||
void Chercher_repertoire_du_programme(char * Chaine)
|
// en: Determine which directory contains the executable, data, and configuration.
|
||||||
|
// The argument is argv[0], but some platforms don't need it.
|
||||||
|
#if defined(__macosx__) || defined(__amigaos4__)
|
||||||
|
#define ARG_UNUSED __attribute__((unused))
|
||||||
|
#else
|
||||||
|
#define ARG_UNUSED
|
||||||
|
#endif
|
||||||
|
void Chercher_repertoire_du_programme(ARG_UNUSED char * Chaine)
|
||||||
{
|
{
|
||||||
#ifdef __macosx__
|
#undef ARG_UNUSED
|
||||||
|
|
||||||
|
// MacOSX
|
||||||
|
#if defined(__macosx__)
|
||||||
CFURLRef url = CFBundleCopyBundleURL(CFBundleGetMainBundle());
|
CFURLRef url = CFBundleCopyBundleURL(CFBundleGetMainBundle());
|
||||||
CFURLGetFileSystemRepresentation(url,true,(UInt8*)Repertoire_du_programme,MAXPATHLEN);
|
CFURLGetFileSystemRepresentation(url,true,(UInt8*)Repertoire_du_programme,MAXPATHLEN);
|
||||||
CFRelease(url);
|
CFRelease(url);
|
||||||
strcat(Repertoire_du_programme,"Contents/Resources");
|
strcat(Repertoire_du_programme,"/Contents/Resources/");
|
||||||
|
|
||||||
|
// AmigaOS4: hard-coded volume name.
|
||||||
|
#elif defined(__amigaos4__)
|
||||||
|
strcpy(Repertoire_du_programme,"PROGDIR:");
|
||||||
|
|
||||||
|
// Windows, linux: The part of argv[0] before the executable name.
|
||||||
|
// Keep the last / or \.
|
||||||
#else
|
#else
|
||||||
Extraire_chemin(Repertoire_du_programme, Chaine);
|
Extraire_chemin(Repertoire_du_programme, Chaine);
|
||||||
#endif
|
#endif
|
||||||
@ -161,12 +178,8 @@ void Charger_DAT(void)
|
|||||||
|
|
||||||
struct stat Informations_Fichier;
|
struct stat Informations_Fichier;
|
||||||
|
|
||||||
#ifdef __amigaos4__
|
|
||||||
strcpy(Nom_du_fichier,"PROGDIR:gfx2.dat");
|
|
||||||
#else
|
|
||||||
strcpy(Nom_du_fichier,Repertoire_du_programme);
|
strcpy(Nom_du_fichier,Repertoire_du_programme);
|
||||||
strcat(Nom_du_fichier,"gfx2.dat");
|
strcat(Nom_du_fichier,"gfx2.dat");
|
||||||
#endif
|
|
||||||
|
|
||||||
if(stat(Nom_du_fichier,&Informations_Fichier))
|
if(stat(Nom_du_fichier,&Informations_Fichier))
|
||||||
{
|
{
|
||||||
@ -1576,12 +1589,8 @@ int Charger_CFG(int Tout_charger)
|
|||||||
struct stat Informations_Fichier;
|
struct stat Informations_Fichier;
|
||||||
int Conversion_touches = 0;
|
int Conversion_touches = 0;
|
||||||
|
|
||||||
#ifdef __amigaos4__
|
|
||||||
strcpy(Nom_du_fichier,"PROGDIR:gfx2.cfg");
|
|
||||||
#else
|
|
||||||
strcpy(Nom_du_fichier,Repertoire_du_programme);
|
strcpy(Nom_du_fichier,Repertoire_du_programme);
|
||||||
strcat(Nom_du_fichier,"gfx2.cfg");
|
strcat(Nom_du_fichier,"gfx2.cfg");
|
||||||
#endif
|
|
||||||
|
|
||||||
stat(Nom_du_fichier,&Informations_Fichier);
|
stat(Nom_du_fichier,&Informations_Fichier);
|
||||||
Taille_fichier=Informations_Fichier.st_size;
|
Taille_fichier=Informations_Fichier.st_size;
|
||||||
@ -1851,12 +1860,8 @@ int Sauver_CFG(void)
|
|||||||
struct Config_Infos_touche CFG_Infos_touche;
|
struct Config_Infos_touche CFG_Infos_touche;
|
||||||
struct Config_Mode_video CFG_Mode_video;
|
struct Config_Mode_video CFG_Mode_video;
|
||||||
|
|
||||||
#ifdef __amigaos4__
|
|
||||||
strcpy(Nom_du_fichier,"PROGDIR:gfx2.cfg");
|
|
||||||
#else
|
|
||||||
strcpy(Nom_du_fichier,Repertoire_du_programme);
|
strcpy(Nom_du_fichier,Repertoire_du_programme);
|
||||||
strcat(Nom_du_fichier,"gfx2.cfg");
|
strcat(Nom_du_fichier,"gfx2.cfg");
|
||||||
#endif
|
|
||||||
|
|
||||||
if ((Handle=fopen(Nom_du_fichier,"wb"))==NULL)
|
if ((Handle=fopen(Nom_du_fichier,"wb"))==NULL)
|
||||||
return ERREUR_SAUVEGARDE_CFG;
|
return ERREUR_SAUVEGARDE_CFG;
|
||||||
|
|||||||
8
main.c
8
main.c
@ -264,15 +264,7 @@ void Initialisation_du_programme(int argc,char * argv[])
|
|||||||
Initialiser_S_Liste_de_pages(Brouillon_Backups);
|
Initialiser_S_Liste_de_pages(Brouillon_Backups);
|
||||||
|
|
||||||
// On détermine dès le départ où se trouve le fichier:
|
// On détermine dès le départ où se trouve le fichier:
|
||||||
// On détermine dès le départ où se trouve le fichier:
|
|
||||||
#ifdef __macosx__
|
|
||||||
CFURLRef url = CFBundleCopyBundleURL(CFBundleGetMainBundle());
|
|
||||||
CFURLGetFileSystemRepresentation(url, true, (UInt8 *) Repertoire_du_programme, MAXPATHLEN);
|
|
||||||
CFRelease(url);
|
|
||||||
strcat(Repertoire_du_programme, "/Contents/Resources/");
|
|
||||||
#else
|
|
||||||
Chercher_repertoire_du_programme(argv[0]);
|
Chercher_repertoire_du_programme(argv[0]);
|
||||||
#endif
|
|
||||||
|
|
||||||
// On détecte les lecteurs qui sont accessibles:
|
// On détecte les lecteurs qui sont accessibles:
|
||||||
Rechercher_drives();
|
Rechercher_drives();
|
||||||
|
|||||||
@ -403,23 +403,15 @@ int Charger_INI(struct S_Config * Conf)
|
|||||||
Nom_du_fichier=(char *)malloc(256);
|
Nom_du_fichier=(char *)malloc(256);
|
||||||
|
|
||||||
// On calcule le nom du fichier qu'on manipule:
|
// On calcule le nom du fichier qu'on manipule:
|
||||||
#ifdef __amigaos4__
|
|
||||||
strcpy(Nom_du_fichier,"PROGDIR:gfx2.ini");
|
|
||||||
#else
|
|
||||||
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");
|
||||||
#endif
|
|
||||||
|
|
||||||
Fichier=fopen(Nom_du_fichier,"rb");
|
Fichier=fopen(Nom_du_fichier,"rb");
|
||||||
if (Fichier==0)
|
if (Fichier==0)
|
||||||
{
|
{
|
||||||
// Si le fichier ini est absent on le relit depuis gfx2.dat
|
// Si le fichier ini est absent on le relit depuis gfx2.dat
|
||||||
#ifdef __amigaos4__
|
|
||||||
strcpy(Nom_du_fichier,"PROGDIR:gfx2.dat");
|
|
||||||
#else
|
|
||||||
strcpy(Nom_du_fichier,Repertoire_du_programme);
|
strcpy(Nom_du_fichier,Repertoire_du_programme);
|
||||||
strcat(Nom_du_fichier,"gfx2.dat");
|
strcat(Nom_du_fichier,"gfx2.dat");
|
||||||
#endif
|
|
||||||
Fichier=fopen(Nom_du_fichier,"rb");
|
Fichier=fopen(Nom_du_fichier,"rb");
|
||||||
if (Fichier == 0)
|
if (Fichier == 0)
|
||||||
{
|
{
|
||||||
|
|||||||
12
saveini.c
12
saveini.c
@ -399,22 +399,14 @@ int Sauver_INI(struct S_Config * Conf)
|
|||||||
Buffer=(char *)malloc(1024);
|
Buffer=(char *)malloc(1024);
|
||||||
|
|
||||||
// On calcule les noms des fichiers qu'on manipule:
|
// On calcule les noms des fichiers qu'on manipule:
|
||||||
#ifdef __amigaos4__
|
|
||||||
strcpy(Nom_du_fichier,"PROGDIR:gfx2.ini");
|
|
||||||
#else
|
|
||||||
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");
|
||||||
#endif
|
|
||||||
|
|
||||||
// On vérifie si le fichier INI existe
|
// On vérifie si le fichier INI existe
|
||||||
if ((Ini_existe = Fichier_existe(Nom_du_fichier)))
|
if ((Ini_existe = Fichier_existe(Nom_du_fichier)))
|
||||||
{
|
{
|
||||||
#ifdef __amigaos4__
|
|
||||||
strcpy(Nom_du_fichier_temporaire,"PROGDIR:gfx2.$$$");
|
|
||||||
#else
|
|
||||||
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.$$$");
|
||||||
#endif
|
|
||||||
|
|
||||||
// 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)
|
||||||
@ -423,12 +415,8 @@ int Sauver_INI(struct S_Config * Conf)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// On récupère un fichier INI "propre" dans GFX2.DAT
|
// On récupère un fichier INI "propre" dans GFX2.DAT
|
||||||
#ifdef __amigaos4__
|
|
||||||
strcpy(Nom_du_fichier_DAT,"PROGDIR:gfx2.dat");
|
|
||||||
#else
|
|
||||||
strcpy(Nom_du_fichier_DAT,Repertoire_du_programme);
|
strcpy(Nom_du_fichier_DAT,Repertoire_du_programme);
|
||||||
strcat(Nom_du_fichier_DAT,"gfx2.dat");
|
strcat(Nom_du_fichier_DAT,"gfx2.dat");
|
||||||
#endif
|
|
||||||
Ancien_fichier=fopen(Nom_du_fichier_DAT,"rb");
|
Ancien_fichier=fopen(Nom_du_fichier_DAT,"rb");
|
||||||
if (Ancien_fichier==0)
|
if (Ancien_fichier==0)
|
||||||
{
|
{
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user