diff --git a/Makefile b/Makefile index 0baa7820..52b58732 100644 --- a/Makefile +++ b/Makefile @@ -3,7 +3,7 @@ ifdef COMSPEC DELCOMMAND = del BIN = grafx2.exe COPT = -Wall -O -g -ggdb -Dmain=SDL_main $(SCREEN) -LOPT = -mwindows -lmingw32 -lSDLmain -lSDL +LOPT = -mwindows -lmingw32 -lSDLmain -lSDL -lshlwapi else # Linux specific DELCOMMAND = rm -rf diff --git a/files.c b/files.c index 8e97393e..9872e15c 100644 --- a/files.c +++ b/files.c @@ -121,6 +121,7 @@ char * Nom_formate(char * Nom) static char Resultat[13]; int Curseur; int Autre_curseur; + int Pos_DernierPoint; if (strcmp(Nom,"..")==0) { @@ -131,12 +132,19 @@ char * Nom_formate(char * Nom) strcpy(Resultat," . "); // On commence par recopier la partie pr‚c‚dent le point: for (Curseur=0;( (Nom[Curseur]!='.') && (Nom[Curseur]!='\0') );Curseur++) - Resultat[Curseur]=Nom[Curseur]; + { + if (Curseur < 8) + Resultat[Curseur]=Nom[Curseur]; + } + // On recherche le dernier point dans le reste du nom + for (Pos_DernierPoint = Curseur; Nom[Curseur]!='\0'; Curseur++) + if (Nom[Curseur]=='.') + Pos_DernierPoint = Curseur; // Ensuite on recopie la partie qui suit le point (si n‚cessaire): - if (Nom[Curseur]) + if (Nom[Pos_DernierPoint]) { - for (Curseur++,Autre_curseur=9;Nom[Curseur]!='\0';Curseur++,Autre_curseur++) + for (Curseur = Pos_DernierPoint+1,Autre_curseur=9;Nom[Curseur]!='\0' && Autre_curseur < 12;Curseur++,Autre_curseur++) Resultat[Autre_curseur]=Nom[Curseur]; } } diff --git a/main.c b/main.c index 4ba51c30..67c1c1ea 100644 --- a/main.c +++ b/main.c @@ -26,7 +26,7 @@ #ifdef __linux__ #include "linux.h" //Fichier avec diverses fonctions qui existaient sous dos mais pas sous linux... -#elif __WATCOMC__ +#else #include #include #define chdir(dir) SetCurrentDirectory(dir) @@ -215,14 +215,28 @@ void Analyse_de_la_ligne_de_commande(int argc,char * argv[]) #ifdef __linux__ Buffer=realpath(argv[1],NULL); _splitpath(Buffer,Principal_Repertoire_fichier,Principal_Nom_fichier); - #elif __WATCOMC__ + #else Buffer = malloc(MAX_PATH); - PathCanonicalize(Buffer,argv[1]); - _splitpath(Buffer, - Principal_Repertoire_fichier, - Principal_Repertoire_fichier+3, - Principal_Nom_fichier, - Principal_Nom_fichier+8); + _fullpath(Buffer,argv[1],MAX_PATH); + { + // Découpage du nom canonique de fichier en chemin + nom. + // On croirait que c'est du classique pour la LibC, mais non... + int i; + int PosDernierSeparateur = 0; + for (i=0; Buffer[i]!='\0'; i++) + { + Principal_Repertoire_fichier[i] = Buffer[i]; + if (Buffer[i]=='\\') + PosDernierSeparateur = i; + } + Principal_Repertoire_fichier[PosDernierSeparateur]='\0'; + for (i=0; Buffer[PosDernierSeparateur + i + 1]!='\0'; i++) + { + Principal_Nom_fichier[i] = Buffer[PosDernierSeparateur + i + 1]; + } + Principal_Nom_fichier[i]='\0'; + + } free(Buffer); #endif