diff --git a/Makefile b/Makefile index 1d477719..1ed99e40 100644 --- a/Makefile +++ b/Makefile @@ -89,6 +89,7 @@ else LOPT = `sdl-config --libs` -lSDL_image $(TTFLOPT) CC = gcc OBJDIR = obj/unix + X11LOPT = -lX11 endif endif endif @@ -103,7 +104,7 @@ ifeq ($(NOTTF),1) TTFLABEL = -nottf else TTFCOPT = - TTFLOPT = -L/usr/local/lib -lSDL_ttf -lX11 + TTFLOPT = -L/usr/local/lib -lSDL_ttf $(X11LOPT) TTFLIBS = libfreetype-6.dll SDL_ttf.dll TTFLABEL = endif @@ -111,7 +112,7 @@ endif .PHONY : all debug release clean depend zip version force -OBJ = $(OBJDIR)/main.o $(OBJDIR)/init.o $(OBJDIR)/graph.o $(OBJDIR)/sdlscreen.o $(OBJDIR)/divers.o $(OBJDIR)/special.o $(OBJDIR)/boutons.o $(OBJDIR)/palette.o $(OBJDIR)/aide.o $(OBJDIR)/operatio.o $(OBJDIR)/pages.o $(OBJDIR)/loadsave.o $(OBJDIR)/readline.o $(OBJDIR)/moteur.o $(OBJDIR)/files.o $(OBJDIR)/op_c.o $(OBJDIR)/linux.o $(OBJDIR)/readini.o $(OBJDIR)/saveini.o $(OBJDIR)/shade.o $(OBJDIR)/clavier.o $(OBJDIR)/io.o $(OBJDIR)/version.o $(OBJDIR)/texte.o $(OBJDIR)/SFont.o +OBJ = $(OBJDIR)/main.o $(OBJDIR)/init.o $(OBJDIR)/graph.o $(OBJDIR)/sdlscreen.o $(OBJDIR)/divers.o $(OBJDIR)/special.o $(OBJDIR)/boutons.o $(OBJDIR)/palette.o $(OBJDIR)/aide.o $(OBJDIR)/operatio.o $(OBJDIR)/pages.o $(OBJDIR)/loadsave.o $(OBJDIR)/readline.o $(OBJDIR)/moteur.o $(OBJDIR)/files.o $(OBJDIR)/op_c.o $(OBJDIR)/readini.o $(OBJDIR)/saveini.o $(OBJDIR)/shade.o $(OBJDIR)/clavier.o $(OBJDIR)/io.o $(OBJDIR)/version.o $(OBJDIR)/texte.o $(OBJDIR)/SFont.o CFGOBJ = $(OBJDIR)/gfxcfg.o $(OBJDIR)/SFont.o $(OBJDIR)/clavier.o $(OBJDIR)/io.o all : $(BIN) $(CFGBIN) @@ -125,7 +126,7 @@ release : $(BIN) $(CFGBIN) # A release zip archive ziprelease: version $(BIN) $(BINCFG) release tar cvzf src-svn`svnversion | sed 's/:/-/'`.tgz *.c *.h Makefile Makefile.dep - zip grafx2-svn`svnversion | sed 's/:/-/'`$(TTFLABEL)-win32.zip $(BIN) $(CFGBIN) gfx2.dat gfx2.ico doc/gpl-2.0.txt SDL.dll fonts/8pxfont.png SDL_image.dll $(TTFLIBS) fonts/Tuffy.ttf src-svn`svnversion | sed 's/:/-/'`.tgz + zip grafx2-svn`svnversion | sed 's/:/-/'`$(TTFLABEL)-win32.zip $(BIN) $(CFGBIN) gfx2.dat gfx2.ico doc/gpl-2.0.txt SDL.dll fonts/8pxfont.png SDL_image.dll zlib1.dll libpng13.dll $(TTFLIBS) fonts/Tuffy.ttf src-svn`svnversion | sed 's/:/-/'`.tgz $(DELCOMMAND) src-svn`svnversion | sed 's/:/-/'`.tgz tar cvzf grafx2-svn`svnversion | sed 's/:/-/'`$(TTFLABEL)-src.tgz *.c *.h Makefile Makefile.dep gfx2.dat gfx2.ico doc/gpl-2.0.txt fonts/8pxfont.png fonts/Tuffy.ttf diff --git a/Makefile.dep b/Makefile.dep index 8e87331b..6ea5823b 100644 --- a/Makefile.dep +++ b/Makefile.dep @@ -1,39 +1,38 @@ $(OBJDIR)/SFont.o: SFont.c SFont.h $(OBJDIR)/aide.o: aide.c const.h struct.h global.h loadsave.h divers.h graph.h \ - moteur.h tables_aide.h aide.h sdlscreen.h + moteur.h tables_aide.h aide.h sdlscreen.h texte.h $(OBJDIR)/boutons.o: boutons.c const.h struct.h global.h loadsave.h divers.h \ graph.h moteur.h readline.h files.h init.h boutons.h operatio.h pages.h \ - erreurs.h readini.h saveini.h shade.h io.h aide.h texte.h + erreurs.h readini.h saveini.h shade.h io.h aide.h texte.h sdlscreen.h $(OBJDIR)/clavier.o: clavier.c global.h struct.h const.h loadsave.h $(OBJDIR)/divers.o: divers.c struct.h const.h sdlscreen.h global.h loadsave.h \ graph.h erreurs.h boutons.h moteur.h divers.h clavier.h $(OBJDIR)/files.o: files.c const.h struct.h global.h loadsave.h graph.h divers.h \ - erreurs.h linux.h + erreurs.h io.h $(OBJDIR)/gfxcfg.o: gfxcfg.c SFont.h struct.h const.h clavier.h io.h hotkeys.h -$(OBJDIR)/graph.o: graph.c sdlscreen.h struct.h const.h graph.h divers.h moteur.h \ - boutons.h pages.h global.h loadsave.h erreurs.h +$(OBJDIR)/graph.o: graph.c global.h struct.h const.h loadsave.h moteur.h boutons.h \ + pages.h erreurs.h sdlscreen.h graph.h divers.h $(OBJDIR)/init.o: init.c const.h struct.h global.h loadsave.h graph.h boutons.h \ palette.h aide.h operatio.h divers.h erreurs.h clavier.h io.h hotkeys.h $(OBJDIR)/io.o: io.c struct.h const.h io.h -$(OBJDIR)/linux.o: linux.c $(OBJDIR)/loadsave.o: loadsave.c const.h struct.h global.h loadsave.h graph.h \ - divers.h pages.h op_c.h boutons.h erreurs.h linux.h io.h sdlscreen.h + divers.h pages.h op_c.h boutons.h erreurs.h io.h sdlscreen.h $(OBJDIR)/main.o: main.c const.h struct.h global.h loadsave.h graph.h divers.h \ init.h boutons.h moteur.h pages.h files.h sdlscreen.h erreurs.h \ - readini.h saveini.h linux.h io.h + readini.h saveini.h io.h texte.h $(OBJDIR)/moteur.o: moteur.c const.h struct.h global.h loadsave.h graph.h divers.h \ - special.h boutons.h operatio.h shade.h erreurs.h linux.h sdlscreen.h + special.h boutons.h operatio.h shade.h erreurs.h sdlscreen.h $(OBJDIR)/op_c.o: op_c.c op_c.h struct.h const.h erreurs.h graph.h $(OBJDIR)/operatio.o: operatio.c const.h struct.h global.h loadsave.h divers.h \ - moteur.h graph.h operatio.h boutons.h pages.h erreurs.h + moteur.h graph.h operatio.h boutons.h pages.h erreurs.h sdlscreen.h $(OBJDIR)/pages.o: pages.c global.h struct.h const.h loadsave.h pages.h graph.h \ - erreurs.h linux.h + erreurs.h $(OBJDIR)/palette.o: palette.c const.h struct.h global.h loadsave.h divers.h \ graph.h moteur.h readline.h boutons.h pages.h aide.h sdlscreen.h \ erreurs.h op_c.h $(OBJDIR)/readini.o: readini.c const.h global.h struct.h loadsave.h graph.h $(OBJDIR)/readline.o: readline.c const.h struct.h global.h loadsave.h graph.h \ - divers.h erreurs.h linux.h sdlscreen.h + divers.h erreurs.h sdlscreen.h readline.h $(OBJDIR)/saveini.o: saveini.c const.h global.h struct.h loadsave.h readini.h \ files.h erreurs.h graph.h $(OBJDIR)/sdlscreen.o: sdlscreen.c global.h struct.h const.h loadsave.h sdlscreen.h \ @@ -42,5 +41,7 @@ $(OBJDIR)/shade.o: shade.c global.h struct.h const.h loadsave.h graph.h moteur.h divers.h readline.h aide.h sdlscreen.h $(OBJDIR)/special.o: special.c const.h struct.h global.h loadsave.h graph.h \ moteur.h -$(OBJDIR)/texte.o: texte.c SFont.h sdlscreen.h struct.h const.h global.h loadsave.h +$(OBJDIR)/testfonts.o: testfonts.c +$(OBJDIR)/texte.o: texte.c SFont.h struct.h const.h global.h loadsave.h sdlscreen.h \ + io.h files.h $(OBJDIR)/version.o: version.c diff --git a/aide.c b/aide.c index a2f1fa7e..d7807fbc 100644 --- a/aide.c +++ b/aide.c @@ -23,6 +23,16 @@ */ #include #include + +#if defined(__WIN32__) + #include +#elif defined(__macosx__) + #include + #include +#elif defined (__linux__) + #include +#endif + #include "const.h" #include "struct.h" #include "global.h" @@ -34,25 +44,6 @@ #include "sdlscreen.h" #include "texte.h" -#include - -#ifdef __linux__ - #ifdef __macosx__ - #include - #include - #else - #include - #endif -#else -#ifndef __amigaos4__ -#ifndef __BEOS__ -#ifndef __HAIKU__ - #include -#endif -#endif -#endif -#endif - extern char SVNRevision[]; // -- Menu d'aide ----------------------------------------------------------- @@ -316,19 +307,7 @@ void Bouton_Stats(void) char Buffer[37]; dword Utilisation_couleur[256]; unsigned long long freeRam; - - #ifdef __linux__ - struct statfs Informations_Disque; - uint64_t Taille = 0; - #else - #if defined(__amigaos4__)||defined(__BEOS__)||defined(__HAIKU__) - uint64_t Taille = 0; - #else - unsigned __int64 Taille; - ULARGE_INTEGER tailleU; - #endif - #endif - + uint64_t Taille = 0; Ouvrir_fenetre(310,174,"Statistics"); @@ -369,16 +348,22 @@ void Bouton_Stats(void) sprintf(Buffer,"Free space on %c:",Principal_Repertoire_courant[0]); Print_dans_fenetre(10,67,Buffer,STATS_COULEUR_TITRES,CM_Noir); - #ifdef __linux__ - statfs(Principal_Repertoire_courant,&Informations_Disque); - Taille=(uint64_t) Informations_Disque.f_bfree * (uint64_t) Informations_Disque.f_bsize; - #else - #if defined(__amigaos4__)||defined(__BEOS__)||defined(__HAIKU__) - #else - GetDiskFreeSpaceEx(Principal_Repertoire_courant,&tailleU,NULL,NULL); - Taille = tailleU.QuadPart; - #endif - #endif +#if defined(__WIN32__) + { + ULARGE_INTEGER tailleU; + GetDiskFreeSpaceEx(Principal_Repertoire_courant,&tailleU,NULL,NULL); + Taille = tailleU.QuadPart; + } +#elif defined(__linux__) || (__macosx__) + // Note: under MacOSX, both macros are defined anyway. + { + struct statfs Informations_Disque; + statfs(Principal_Repertoire_courant,&Informations_Disque); + Taille=(uint64_t) Informations_Disque.f_bfree * (uint64_t) Informations_Disque.f_bsize; + } +#else + // Free disk space is only for shows. Other platforms can display 0. +#endif if(Taille > (100ULL*1024*1024*1024)) sprintf(Buffer,"%d Gigabytes",(unsigned int)(Taille/(1024*1024*1024))); diff --git a/boutons.c b/boutons.c index de96a690..3496b5f4 100644 --- a/boutons.c +++ b/boutons.c @@ -1294,9 +1294,9 @@ void Afficher_liste_modes(short Debut_liste, short Position_curseur) Num2str(Mode_video[Mode_courant].Hauteur,Chaine+5,4); if(Mode_video[Mode_courant].Fullscreen == 1) - memcpy(Chaine+9," Fullscreen ",15); + memcpy(Chaine+9," Fullscreen ",13); else - memcpy(Chaine+9," Window ",15); + memcpy(Chaine+9," Window ",13); if (Mode_video[Mode_courant].Largeur*3 == Mode_video[Mode_courant].Hauteur*4) Ratio=" 4:3"; @@ -1321,7 +1321,7 @@ void Afficher_liste_modes(short Debut_liste, short Position_curseur) strcat(Chaine,Ratio); - Print_dans_fenetre(30,Pos_Y,Chaine,Couleur_texte,Couleur_fond); + Print_dans_fenetre(38,Pos_Y,Chaine,Couleur_texte,Couleur_fond); } } diff --git a/clavier.c b/clavier.c index 7a76d229..0458d193 100644 --- a/clavier.c +++ b/clavier.c @@ -469,7 +469,7 @@ word Conversion_ANSI(SDL_keysym Sym) // This part was removed from the MacOSX port, but I put it back for others // as on Linux and Windows, it's what allows editing a text line with the keys // SDLK_LEFT, SDLK_RIGHT, SDLK_HOME, SDLK_END etc. - #ifndef __MACOSX__ + #ifndef __macosx__ if ( Sym.unicode == 0) { return Sym.sym; diff --git a/files.c b/files.c index 040228eb..df4116ea 100644 --- a/files.c +++ b/files.c @@ -20,11 +20,6 @@ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#include "const.h" -#include "struct.h" -#include "global.h" -#include "graph.h" -#include "divers.h" #include #include #include @@ -35,30 +30,30 @@ #include #include -#ifdef __amigaos4__ -#include -#endif - -#include "erreurs.h" -#include "linux.h" -#include "io.h" - - -#if defined(__linux__)||defined(__BEOS__)||defined(__HAIKU__) - #include - #define isHidden(Enreg) ((Enreg)->d_name[0]=='.') -#elif defined(__amigaos4__) +#if defined(__amigaos4__) + #include #include #define isHidden(Enreg) (0) #elif defined(__WATCOMC__) #include #define isHidden(Enreg) ((Enreg)->d_attr & _A_HIDDEN) -#elif defined(__MINGW32__) +#elif defined(__WIN32__) #include #include #define isHidden(Enreg) (GetFileAttributesA((Enreg)->d_name)&FILE_ATTRIBUTE_HIDDEN) +#else + #include + #define isHidden(Enreg) ((Enreg)->d_name[0]=='.') #endif +#include "const.h" +#include "struct.h" +#include "global.h" +#include "graph.h" +#include "divers.h" +#include "erreurs.h" +#include "io.h" + #define COULEUR_FICHIER_NORMAL CM_Clair // Couleur du texte pour une ligne de fichier non sélectionné #define COULEUR_REPERTOIRE_NORMAL CM_Fonce // Couleur du texte pour une ligne de répertoire non sélectionné #define COULEUR_FOND_NORMAL CM_Noir // Couleur du fond pour une ligne non sélectionnée diff --git a/global.h b/global.h index d069633f..17adc8cb 100644 --- a/global.h +++ b/global.h @@ -117,6 +117,16 @@ GLOBAL dword Touche; // Touche tap GLOBAL dword Touche_ANSI; // Caractère tapé GLOBAL Uint8* Etat_Du_Clavier; // Scancode de la touche en cours et etat des touches de ctrl // Modificateurs pour Touche +// (Name conflict with windows.h) +#ifdef MOD_SHIFT + #undef MOD_SHIFT +#endif +#ifdef MOD_CTRL + #undef MOD_CTRL +#endif +#ifdef MOD_ALT + #undef MOD_ALT +#endif #define MOD_SHIFT 0x1000 #define MOD_CTRL 0x2000 #define MOD_ALT 0x4000 diff --git a/graph.c b/graph.c index 9ef03447..8ca9b036 100644 --- a/graph.c +++ b/graph.c @@ -19,35 +19,28 @@ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#include "sdlscreen.h" -#include "graph.h" -#include "divers.h" -#include -#ifdef __macosx__ - #include +#if defined(__WIN32__) + #define _WIN32_WINNT 0x0500 + #include +#elif defined(__macosx__) + #include #else - #include + #include #endif #include #include +#include + +#include "global.h" +#include "struct.h" #include "moteur.h" #include "boutons.h" #include "pages.h" -#include "global.h" -#include "struct.h" #include "erreurs.h" - -#ifdef __linux__ - #ifdef __macosx__ - #include - #else - #include - #endif -#elif __WATCOMC__ - #define _WIN32_WINNT 0x0500 - #include -#endif +#include "sdlscreen.h" +#include "graph.h" +#include "divers.h" // Fonction qui met à jour la zone de l'image donnée en paramètre sur l'écran. // Tient compte du décalage X et Y et du zoom, et fait tous les controles nécessaires @@ -565,8 +558,15 @@ unsigned long Memoire_libre(void) A revoir, mais est-ce vraiment utile? _heapmin(); */ - #ifdef __linux__ - #ifdef __macosx__ + // Memory is no longer relevant. If there is ANY problem or doubt here, + // you can simply return 10*1024*1024 (10Mb), to make the "Pages"something + // memory allocation functions happy. + #if defined(__WIN32__) + MEMORYSTATUSEX mstt; + mstt.dwLength = sizeof(MEMORYSTATUSEX); + GlobalMemoryStatusEx(&mstt); + return mstt.ullAvailPhys; + #elif defined(__macosx__) int mib[2]; int maxmem; size_t len; @@ -576,18 +576,10 @@ unsigned long Memoire_libre(void) len = sizeof(maxmem); sysctl(mib,2,&maxmem,&len,NULL,0); return maxmem; - #else + #else struct sysinfo info; sysinfo(&info); return info.freeram*info.mem_unit; - #endif - #elif __WATCOMC__ - MEMORYSTATUSEX mstt; - mstt.dwLength = sizeof(MEMORYSTATUSEX); - GlobalMemoryStatusEx(&mstt); - return mstt.ullAvailPhys; - #else - return 10*1024*1024; #endif } diff --git a/init.c b/init.c index 2f1be0cc..52f41fbc 100644 --- a/init.c +++ b/init.c @@ -48,17 +48,9 @@ #include "errno.h" -#ifndef __linux__ -#ifndef __amigaos4__ -#ifndef __BEOS__ -#ifndef __HAIKU__ -#include "windows.h" -#endif -#endif -#endif -#endif - -#ifdef __macosx__ +#if defined(__WIN32__) + #include +#elif defined(__macosx__) #import #import #endif @@ -108,22 +100,13 @@ void Ajouter_lecteur(char Lettre, byte Type, char *Chemin) // Rechercher la liste et le type des lecteurs de la machine void Rechercher_drives(void) { + #if defined(__amigaos4__) - #if defined(__linux__) - //Sous linux, il n'y a pas de lecteurs, on va juste mettre - // un disque dur qui pointera vers la racine, - // et un autre vers le home directory de l'utilisateur. - char * Home = getenv("HOME"); - Ajouter_lecteur('/', LECTEUR_HDD, "/"); - Ajouter_lecteur('~', LECTEUR_HDD, Home ? Home : ""); - #elif defined(__BEOS__) || defined(__HAIKU__) - char * Home = getenv("$HOME"); - Ajouter_lecteur('/', LECTEUR_HDD, "/"); - Ajouter_lecteur('~', LECTEUR_HDD, Home ? Home : ""); - #elif defined(__amigaos4__) // No icons by default. // It's possible to add some here. + #elif defined (__WIN32__) + char NomLecteur[]="A:\\"; int DriveBits = GetLogicalDrives(); int IndiceLecteur; @@ -163,6 +146,19 @@ void Rechercher_drives(void) IndiceLecteur++; } } + + #else + + //Sous les différents unix, il n'y a pas de lecteurs, on va juste mettre + // un disque dur qui pointera vers la racine, + // et un autre vers le home directory de l'utilisateur. + #if defined(__BEOS__) || defined(__HAIKU__) + char * Home = getenv("$HOME"); + #else + char * Home = getenv("HOME"); + #endif + Ajouter_lecteur('/', LECTEUR_HDD, "/"); + Ajouter_lecteur('~', LECTEUR_HDD, Home ? Home : ""); #endif } @@ -199,7 +195,7 @@ void Charger_DAT(void) case ENOENT: puts("The file path is empty or points to a non-existing directory."); break; case ENOMEM: puts("Pas assez de mémoire pour le noyau."); break; case ENOTDIR: puts("Un composant du chemin d'accès n'est pas un répertoire."); break; - #if defined(__linux__)||defined(__amigaos4__)||defined(__BEOS__)||defined(__HAIKU__) + #ifdef ELOOP case ELOOP: puts("Trop de liens symboliques rencontrés dans le chemin d'accès."); break; #endif } diff --git a/io.h b/io.h index fa8b8af9..18a4a6ec 100644 --- a/io.h +++ b/io.h @@ -43,8 +43,8 @@ void Extraire_chemin(char *Destination, const char *Source); char * Position_dernier_slash(const char * Chaine); -#if defined(__linux__)||defined(__BEOS__)||defined(__HAIKU__) - #define SEPARATEUR_CHEMIN "/" -#else +#if defined(__amigaos4__) || defined(__WIN32__) #define SEPARATEUR_CHEMIN "\\" +#else + #define SEPARATEUR_CHEMIN "/" #endif diff --git a/linux.c b/linux.c deleted file mode 100644 index 0cb7015b..00000000 --- a/linux.c +++ /dev/null @@ -1,41 +0,0 @@ -/* Grafx2 - The Ultimate 256-color bitmap paint program - - Copyright 2008 Peter Gordon - Copyright 2007 Adrien Destugues - Copyright 1996-2001 Sunset Design (Guillaume Dorme & Karl Maritaud) - - Grafx2 is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License - as published by the Free Software Foundation; version 2 - of the License. - - Grafx2 is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with Grafx2; if not, see or - write to the Free Software Foundation, Inc., - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ -// Diverses fonctions qui existaient sous dos mais pas sous linux... -#if defined(__linux__)||defined(__amigaos4__)||defined(__BEOS__)||defined(__HAIKU__) - -#include -#include -#include - -int filelength(int fichier) -{ - struct stat infos_fichier; - fstat(fichier,&infos_fichier); - return infos_fichier.st_size; -} - -void itoa(int source,char* dest, int longueur) -{ - snprintf(dest,longueur,"%d",source); -} - -#endif diff --git a/linux.h b/linux.h deleted file mode 100644 index 2fb3f5d9..00000000 --- a/linux.h +++ /dev/null @@ -1,38 +0,0 @@ -/* Grafx2 - The Ultimate 256-color bitmap paint program - - Copyright 2007 Adrien Destugues - Copyright 1996-2001 Sunset Design (Guillaume Dorme & Karl Maritaud) - - Grafx2 is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License - as published by the Free Software Foundation; version 2 - of the License. - - Grafx2 is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with Grafx2; if not, see or - write to the Free Software Foundation, Inc., - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ -#ifndef _LINUX_H_ -#define _LINUX_H_ - -#ifdef __linux__ - -struct find_t { - unsigned char attrib; - char name[256]; -}; - -int filelength(int); - -void itoa(int source,char* dest, int longueur); -/* Integer TO Ascii */ - -#endif - -#endif diff --git a/loadsave.c b/loadsave.c index 82bcc884..894953c1 100644 --- a/loadsave.c +++ b/loadsave.c @@ -39,12 +39,19 @@ #include "op_c.h" #include "boutons.h" #include "erreurs.h" -#include "linux.h" #include "io.h" #include "sdlscreen.h" #define FILENAMESPACE 13 +// Taille de fichier, en octets +int FileLength(FILE * Fichier) +{ + struct stat infos_fichier; + fstat(fileno(Fichier),&infos_fichier); + return infos_fichier.st_size; +} + // Chargement des pixels dans l'écran principal void Pixel_Chargement_dans_ecran_courant(word Pos_X,word Pos_Y,byte Couleur) { @@ -4210,7 +4217,7 @@ void Test_KCF(void) Nom_fichier_complet(Nom_du_fichier,0); if ((Fichier=fopen(Nom_du_fichier, "rb"))) { - if (filelength(fileno(Fichier))==sizeof(T_KCF_Header)) + if (FileLength(Fichier)==sizeof(T_KCF_Header)) { read_bytes(Fichier,&Buffer,sizeof(T_KCF_Header)); // On vérifie une propriété de la structure de palette: @@ -4260,7 +4267,7 @@ void Load_KCF(void) Nom_fichier_complet(Nom_du_fichier,0); if ((Fichier=fopen(Nom_du_fichier, "rb"))) { - Taille_du_fichier=filelength(fileno(Fichier)); + Taille_du_fichier=FileLength(Fichier); if (Taille_du_fichier==sizeof(T_KCF_Header)) { // Fichier KCF à l'ancien format @@ -4497,7 +4504,7 @@ void Load_SCx(void) if ((Fichier=fopen(Nom_du_fichier, "rb"))) { - Taille_du_fichier=filelength(fileno(Fichier)); + Taille_du_fichier=FileLength(Fichier); if ((read_bytes(Fichier,&SCx_Header,sizeof(T_SCx_Header)))) { @@ -4755,7 +4762,7 @@ void Test_PI1(void) if ((Fichier=fopen(Nom_du_fichier, "rb"))) { // Vérification de la taille - Taille=filelength(fileno(Fichier)); + Taille=FileLength(Fichier); if ((Taille==32034) || (Taille==32066)) { // Lecture et vérification de la résolution @@ -4794,7 +4801,7 @@ void Load_PI1(void) if (read_bytes(Fichier,buffer,32034)) { // Initialisation de la preview - Initialiser_preview(320,200,filelength(fileno(Fichier)),FORMAT_PI1); + Initialiser_preview(320,200,FileLength(Fichier),FORMAT_PI1); if (Erreur_fichier==0) { // Initialisation de la palette @@ -5083,7 +5090,7 @@ void Test_PC1(void) if ((Fichier=fopen(Nom_du_fichier, "rb"))) { // Vérification de la taille - Taille=filelength(fileno(Fichier)); + Taille=FileLength(Fichier); if ((Taille<=32066)) { // Lecture et vérification de la résolution @@ -5116,7 +5123,7 @@ void Load_PC1(void) Erreur_fichier=0; if ((Fichier=fopen(Nom_du_fichier, "rb"))) { - Taille=filelength(fileno(Fichier)); + Taille=FileLength(Fichier); // allocation des buffers mémoire buffercomp=(byte *)malloc(Taille); bufferdecomp=(byte *)malloc(32000); @@ -5126,7 +5133,7 @@ void Load_PC1(void) if (read_bytes(Fichier,buffercomp,Taille)) { // Initialisation de la preview - Initialiser_preview(320,200,filelength(fileno(Fichier)),FORMAT_PC1); + Initialiser_preview(320,200,FileLength(Fichier),FORMAT_PC1); if (Erreur_fichier==0) { // Initialisation de la palette diff --git a/main.c b/main.c index 8dd2293d..073a0163 100644 --- a/main.c +++ b/main.c @@ -45,26 +45,16 @@ #include "erreurs.h" #include "readini.h" #include "saveini.h" -#include "linux.h" #include "io.h" #include "texte.h" -#ifndef __linux__ -#ifndef __amigaos4__ -#ifndef __BEOS__ -#ifndef __HAIKU__ +#if defined(__WIN32__) #include #include #define chdir(dir) SetCurrentDirectory(dir) - #define M_PI 3.14159265358979323846 -#endif -#endif -#endif -#endif - -#ifdef __macosx__ -#import -#import +#elif defined(__macosx__) + #import + #import #endif byte Ancien_nb_lignes; // Ancien nombre de lignes de l'écran @@ -227,23 +217,17 @@ void Analyse_de_la_ligne_de_commande(int argc,char * argv[]) // On récupère le chemin complet du paramètre // Et on découpe ce chemin en répertoire(path) + fichier(.ext) - #if defined(__linux__) || defined(__amigaos4__) || defined(__BEOS__) || defined(__HAIKU__) - Buffer=realpath(argv[Indice],NULL); - #else + #if defined(__WIN32__) Buffer = malloc(TAILLE_CHEMIN_FICHIER); _fullpath(Buffer,argv[Indice],TAILLE_CHEMIN_FICHIER); + #else + Buffer=realpath(argv[Indice],NULL); #endif Extraire_chemin(Principal_Repertoire_fichier, Buffer); Extraire_nom_fichier(Principal_Nom_fichier, Buffer); - #ifndef __linux__ - #ifndef __amigaos4__ - #ifndef __BEOS__ - #ifndef __HAIKU__ + #if defined(__WIN32__) free(Buffer); #endif - #endif - #endif - #endif chdir(Principal_Repertoire_fichier); } else diff --git a/moteur.c b/moteur.c index a73a3b57..a7133a65 100644 --- a/moteur.c +++ b/moteur.c @@ -35,7 +35,6 @@ #include "operatio.h" #include "shade.h" #include "erreurs.h" -#include "linux.h" #include "sdlscreen.h" //---------- Annuler les effets des modes de dessin (sauf la grille) --------- diff --git a/pages.c b/pages.c index d76642e8..edb90488 100644 --- a/pages.c +++ b/pages.c @@ -31,7 +31,6 @@ #include "pages.h" #include "graph.h" #include "erreurs.h" -#include "linux.h" /// /// GESTION DES PAGES diff --git a/readline.c b/readline.c index 0aa4ff2e..1566891c 100644 --- a/readline.c +++ b/readline.c @@ -35,7 +35,6 @@ #include "divers.h" #include "erreurs.h" #include "const.h" -#include "linux.h" #include "sdlscreen.h" #include "readline.h" @@ -44,8 +43,6 @@ #define COULEUR_TEXTE_CURSEUR CM_Noir #define COULEUR_FOND_CURSEUR CM_Fonce -extern int Update_necessaire; - // Suppresion d'un caractère à une certaine POSITION dans une CHAINE. void Supprimer_caractere(char * Chaine, byte Position) { @@ -78,10 +75,13 @@ int CaractereValide(int Caractere) // Sous Linux: Seul le / est strictement interdit, mais beaucoup // d'autres poseront des problèmes au shell, alors on évite. // Sous Windows : c'est moins grave car le fopen() échouerait de toutes façons. - #ifdef __linux__ - char CaracteresInterdits[] = {'/', '|', '?', '*', '<', '>'}; - #else + // AmigaOS4: Pas de ':' car utilisé pour les volumes. + #if defined(__WIN32__) char CaracteresInterdits[] = {'/', '|', '?', '*', '<', '>', ':', '\\'}; + #elif defined (__amigaos4__) + char CaracteresInterdits[] = {'/', '|', '?', '*', '<', '>', ':'}; + #else + char CaracteresInterdits[] = {'/', '|', '?', '*', '<', '>'}; #endif if (Caractere < ' ' || Caractere > 255) @@ -154,7 +154,7 @@ byte Readline_ex(word Pos_X,word Pos_Y,char * Chaine,byte Taille_affichee,byte T strcpy(Chaine_initiale,Chaine); if (Type_saisie==1) - itoa(atoi(Chaine),Chaine,10); // On tasse la chaine à gauche + snprintf(Chaine,10,"%d",atoi(Chaine)); // On tasse la chaine à gauche // Chaine[0]='\0'; // On efface la chaîne si c'est valeur numérique @@ -173,11 +173,7 @@ byte Readline_ex(word Pos_X,word Pos_Y,char * Chaine,byte Taille_affichee,byte T Rafficher_toute_la_chaine(Pos_X,Pos_Y,Chaine_affichee,Position - Offset); UpdateRect(Fenetre_Pos_X+(Pos_X*Menu_Facteur_X),Fenetre_Pos_Y+(Pos_Y*Menu_Facteur_Y), Taille_affichee*(Menu_Facteur_X<<3),(Menu_Facteur_Y<<3)); - -#ifdef __macosx__ - Update_necessaire = 1; Flush_update(); -#endif while ((Touche_lue!=SDLK_RETURN) && (Touche_lue!=SDLK_ESCAPE)) { @@ -319,11 +315,7 @@ affichage: UpdateRect(Fenetre_Pos_X+(Pos_X*Menu_Facteur_X),Fenetre_Pos_Y+(Pos_Y*Menu_Facteur_Y), Taille_affichee*(Menu_Facteur_X<<3),(Menu_Facteur_Y<<3)); } // Fin du "switch(Touche_lue)" - -#ifdef __macosx__ - Update_necessaire = 1; Flush_update(); -#endif } // Fin du "while" diff --git a/texte.c b/texte.c index c53099e4..322cddd8 100644 --- a/texte.c +++ b/texte.c @@ -199,6 +199,7 @@ void Initialisation_Texte(void) #endif #elif defined(__linux__) // Récupération de la liste des fonts avec fontconfig + #ifndef NOTTF #define USE_XLIB #ifdef USE_XLIB @@ -211,6 +212,7 @@ void Initialisation_Texte(void) XFreeFontPath(font_path_list); #endif + #endif #endif }