--- rpl/src/formateur.c 2017/08/03 17:17:43 1.88 +++ rpl/src/formateur.c 2023/08/07 17:42:50 1.99 @@ -1,7 +1,7 @@ /* ================================================================================ - RPL/2 (R) version 4.1.28 - Copyright (C) 1989-2017 Dr. BERTRAND Joël + RPL/2 (R) version 4.1.35 + Copyright (C) 1989-2023 Dr. BERTRAND Joël This file is part of RPL/2. @@ -3307,6 +3307,135 @@ formateur(struct_processus *s_etat_proce strcat(chaine, " ]"); } } + else if ((*s_objet).type == REC) + { + chaine = (unsigned char *) malloc(4 * sizeof(unsigned char)); + + if (chaine == NULL) + { + (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; + return(NULL); + } + + strcpy(chaine, "|[ "); + offset = ((integer8) strlen(chaine)) + offset_initial; + + // L'objet se compose de deux tables à une dimension de + // mêmes tailles. + + chaine_sauvegarde = chaine; + + if ((chaine_formatee = formateur(s_etat_processus, (long) offset, + (*((struct_record *) (*s_objet).objet)).noms)) == NULL) + { + (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; + return(NULL); + } + + if ((chaine = (unsigned char *) malloc((strlen(chaine_formatee) + + strlen(chaine_sauvegarde) + 1) + * sizeof(unsigned char))) == NULL) + { + (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; + return(NULL); + } + + sprintf(chaine, "%s%s", chaine_sauvegarde, chaine_formatee); + free(chaine_sauvegarde); + free(chaine_formatee); + + if (test_cfsf(s_etat_processus, 45) == d_vrai) + { + chaine_sauvegarde = chaine; + + if ((chaine = (unsigned char *) malloc( + (strlen(chaine_sauvegarde) + 2) * sizeof(unsigned char))) + == NULL) + { + (*s_etat_processus).erreur_systeme = + d_es_allocation_memoire; + return(NULL); + } + + strcpy(chaine, chaine_sauvegarde); + free(chaine_sauvegarde); + strcat(chaine, "\n"); + + chaine_sauvegarde = chaine; + + chaine = (unsigned char *) malloc( + (strlen(chaine_sauvegarde) + 1 + ((size_t) offset)) + * sizeof(unsigned char)); + + if (chaine == NULL) + { + (*s_etat_processus).erreur_systeme = + d_es_allocation_memoire; + return(NULL); + } + + strcpy(chaine, chaine_sauvegarde); + free(chaine_sauvegarde); + ptre = &(chaine[strlen(chaine)]); + + for(k = 0; k < offset; k++, *(ptre++) = ' '); + + (*ptre) = d_code_fin_chaine; + } + else + { + chaine_sauvegarde = chaine; + + if ((chaine = (unsigned char *) malloc( + (strlen(chaine_sauvegarde) + 2) + * sizeof(unsigned char))) == NULL) + { + (*s_etat_processus).erreur_systeme = + d_es_allocation_memoire; + return(NULL); + } + + strcpy(chaine, chaine_sauvegarde); + free(chaine_sauvegarde); + strcat(chaine, " "); + } + + chaine_sauvegarde = chaine; + + if ((chaine_formatee = formateur(s_etat_processus, (long) offset, + (*((struct_record *) (*s_objet).objet)).donnees)) == NULL) + { + (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; + return(NULL); + } + + if ((chaine = (unsigned char *) malloc((strlen(chaine_formatee) + + strlen(chaine_sauvegarde) + 1) + * sizeof(unsigned char))) == NULL) + { + (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; + return(NULL); + } + + sprintf(chaine, "%s%s", chaine_sauvegarde, chaine_formatee); + free(chaine_sauvegarde); + free(chaine_formatee); + + chaine_sauvegarde = chaine; + chaine = (unsigned char *) malloc((strlen(chaine_sauvegarde) + 4) + * sizeof(unsigned char)); + + if (chaine == NULL) + { + (*s_etat_processus).erreur_systeme = + d_es_allocation_memoire; + return(NULL); + } + + strcpy(chaine, chaine_sauvegarde); + free(chaine_sauvegarde); + strcat(chaine, " ]|"); + } else if ((*s_objet).type == NON) { if ((chaine = malloc((strlen("System object") + 1)