--- rpl/src/rplcore.c 2010/01/27 22:22:17 1.2 +++ rpl/src/rplcore.c 2013/02/26 19:56:17 1.42 @@ -1,7 +1,7 @@ /* ================================================================================ - RPL/2 (R) version 4.0.10 - Copyright (C) 1989-2010 Dr. BERTRAND Joël + RPL/2 (R) version 4.1.12 + Copyright (C) 1989-2013 Dr. BERTRAND Joël This file is part of RPL/2. @@ -20,7 +20,7 @@ */ -#include "rpl.conv.h" +#include "rpl-conv.h" /* @@ -58,6 +58,7 @@ rplcore(struct_processus *s_etat_process unsigned char *pile; unsigned char *ptr; unsigned char *ptr_bis; + unsigned char registre; unsigned char registre_langue; (*s_etat_processus).core = d_faux; @@ -141,7 +142,30 @@ rplcore(struct_processus *s_etat_process return; } - if (fprintf(fichier, "// Error :\n%s [%s at level %lu]\n\n", + if ((*s_etat_processus).instruction_derniere_erreur != NULL) + { + if (fprintf(fichier, "// Error :\n%s [level %lu]\n\n", + message_erreur, (*s_etat_processus).niveau_derniere_erreur) < 0) + { + free(message_erreur); + + (*s_etat_processus).erreur_systeme = d_es_erreur_fichier; + return; + } + } + else if ((*s_etat_processus).instruction_derniere_erreur[0] == + d_code_fin_chaine) + { + if (fprintf(fichier, "// Error :\n%s [level %lu]\n\n", + message_erreur, (*s_etat_processus).niveau_derniere_erreur) < 0) + { + free(message_erreur); + + (*s_etat_processus).erreur_systeme = d_es_erreur_fichier; + return; + } + } + else if (fprintf(fichier, "// Error :\n%s [%s at level %lu]\n\n", message_erreur, (*s_etat_processus).instruction_derniere_erreur, (*s_etat_processus).niveau_derniere_erreur) < 0) { @@ -153,6 +177,14 @@ rplcore(struct_processus *s_etat_process free(message_erreur); + if (fprintf(fichier, "// System stack\n\n") < 0) + { + (*s_etat_processus).erreur_systeme = d_es_erreur_fichier; + return; + } + + trace(s_etat_processus, fichier); + if (fprintf(fichier, "// Process stack\n\n") < 0) { (*s_etat_processus).erreur_systeme = d_es_erreur_fichier; @@ -235,7 +267,12 @@ rplcore(struct_processus *s_etat_process if ((*s_etat_processus).l_base_pile != NULL) { + registre = (*s_etat_processus).autorisation_conversion_chaine; + (*s_etat_processus).autorisation_conversion_chaine = 'N'; + ecriture_pile(s_etat_processus, fichier, l_base_pile, 1); + + (*s_etat_processus).autorisation_conversion_chaine = registre; } else { @@ -280,8 +317,13 @@ rplcore(struct_processus *s_etat_process if ((*s_etat_processus).l_base_pile != NULL) { + registre = (*s_etat_processus).autorisation_conversion_chaine; + (*s_etat_processus).autorisation_conversion_chaine = 'N'; + ecriture_pile(s_etat_processus, fichier, (*s_etat_processus).l_base_pile, 1); + + (*s_etat_processus).autorisation_conversion_chaine = registre; } else {