Moi aussi je veux jouer
i;
if (sauvegarde) return 2;
return 1;
}
je pense que c'est ma fonction la plus pourrie :#define MAX_CAR_NOM_FIC 19 /* \0 + 8 car. nom du répertoire + \ + 8 car. nom fichier + \0 */
[...]
int open_file (const char *filename) {
char nom_complet[MAX_CAR_NOM_FIC];
char *basename;
char *chiffre;
Bool sauvegarde = FALSE;
SYM_ENTRY *se;
int i;
nom_complet[0] = 0;
if ((basename = strchr (filename, '\'))) {
basename++;
chiffre = nom_complet + sprintf (nom_complet + 1, "%.17s", filename);
if ((se = SymFindPtr (chiffre + 1, 0))) {
byte *ptr = HeapDeref (se -> handle);
if (!strcmp ("ZSVG", ptr + *(word*)ptr - 4)) {
strncpy (nom_jeu, ptr + 10, 7);
chiffre =
nom_complet + 1 + sprintf (nom_complet + 1, REPERTOIRE_JEUX "\%.7s", ptr + 10);
sauvegarde = TRUE;
}
else {
*chiffre = 0;
strncpy (nom_jeu, basename, 7);
}
}
else goto argh;
}
else {
chiffre =
nom_complet + 1 + sprintf (nom_complet + 1, REPERTOIRE_JEUX "\%.7s", filename);
strncpy (nom_jeu, filename, 7);
}
chiffre[1] = 0;
for (i = 0, *chiffre = '1'; i < 4; i++, (*chiffre)++) {
if ((se = SymFindPtr (chiffre + 1, 0)))
game_file.fichier[i] = se -> handle;
else break;
#ifndef DOORS
if (!ttarchive_valid (HeapDeref (game_file.fichier[i]) + 2)) {
#else
if (({
void *ptr = HLock (game_file.fichier[i]);
!ptr || !(game_file.descriptors[i] = shrnklib_OpenArchive (ptr + 2));
})) {
#endif /* DOORS */
ST_helpMsg (FRENCH ? "fichier non valide" : "invalid gamefile");
return 0;
}
}
if (i == 0) {
argh :
ST_helpMsg (FRENCH ? "jeu non trouvé" : "game not found");
return 0;
}
game_file.nombre =
(vous remarquerez notamment que le code deviendrait invalide si jamais MAX_CAR_NOM_FIC s'amusait à ne plus être égal à 19

)