--- rpl/src/controle.c 2010/08/10 18:02:43 1.11 +++ rpl/src/controle.c 2012/10/01 11:04:59 1.39 @@ -1,7 +1,7 @@ /* ================================================================================ - RPL/2 (R) version 4.0.18 - Copyright (C) 1989-2010 Dr. BERTRAND Joël + RPL/2 (R) version 4.1.11 + Copyright (C) 1989-2012 Dr. BERTRAND Joël This file is part of RPL/2. @@ -56,12 +56,15 @@ controle(struct_processus *s_etat_proces struct stat stat_buf; unsigned char *chaine; + unsigned char *registre; unsigned char somme[EVP_MAX_MD_SIZE]; unsigned char somme_hexadecimale[2 * EVP_MAX_MD_SIZE]; unsigned int i; unsigned int longueur_somme; + registre = fichier; + # ifdef OS2 unsigned char *tampon; @@ -73,12 +76,15 @@ controle(struct_processus *s_etat_proces } sprintf(tampon, "%s.exe", fichier); - free(fichier); fichier = tampon; # endif if (stat(fichier, &stat_buf) != 0) { +# ifdef OS2 + free(fichier); +# endif + (*s_etat_processus).erreur_systeme = d_es_erreur_fichier; return(d_faux); } @@ -87,18 +93,30 @@ controle(struct_processus *s_etat_proces if ((chaine = malloc(taille_fichier)) == NULL) { +# ifdef OS2 + free(fichier); +# endif + (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; return(d_faux); } if ((in_fd = open(fichier, 0, O_RDONLY)) < 0) { +# ifdef OS2 + free(fichier); +# endif + free(chaine); (*s_etat_processus).erreur_systeme = d_es_erreur_fichier; return(d_faux); } +# ifdef OS2 + free(fichier); +# endif + if ((octets_lus = read(in_fd, chaine, taille_fichier)) != taille_fichier) { # ifndef OS2 @@ -189,6 +207,21 @@ controle(struct_processus *s_etat_proces } else { + if ((*s_etat_processus).langue == 'F') + { + printf("+++Fatal : Somme de contrôle invalide\n"); + printf("Fonction %s(%s)\n", type, registre); + printf("Résultat obtenu : %s\n", somme_hexadecimale); + printf("Résultat attendu : %s\n", somme_candidate); + } + else + { + printf("+++Fatal : Hash code mismatch\n"); + printf("Function %s(%s)\n", type, registre); + printf("Computed hash code : %s\n", somme_hexadecimale); + printf("Expected hash code : %s\n", somme_candidate); + } + drapeau = d_faux; }