--- rpl/src/formateur_fichiers.c 2013/03/19 11:46:11 1.58 +++ rpl/src/formateur_fichiers.c 2013/03/19 12:27:56 1.59 @@ -3638,13 +3638,29 @@ formateur_fichier(struct_processus *s_et (((*(*l_element_courant_format).donnee).type == TBL) && ((*(*l_element_courant).donnee).type == TBL))) { - if ((chaine_formatee = formateur_fichier(s_etat_processus, - (*l_element_courant).donnee, - (*l_element_courant_format).donnee, 0, 0, ' ', 'U', - longueur_effective, recursivite, export_fichier)) - == NULL) + if (format_sortie != 'N') { - return(NULL); + if ((chaine_formatee = formateur_fichier( + s_etat_processus, + (*l_element_courant).donnee, + (*l_element_courant_format).donnee, + 0, 0, ' ', 'U', longueur_effective, recursivite, + export_fichier)) == NULL) + { + return(NULL); + } + } + else + { + if ((chaine_formatee = formateur_fichier( + s_etat_processus, + (*l_element_courant).donnee, + (*l_element_courant_format).donnee, + 0, 0, 'N', 'U', longueur_effective, recursivite, + export_fichier)) == NULL) + { + return(NULL); + } } if ((chaine = realloc(chaine, (longueur_totale + @@ -3782,17 +3798,25 @@ formateur_fichier(struct_processus *s_et nombre_elements++; l_element_courant = (*l_element_courant).suivant; - l_element_courant_format = (*l_element_courant_format).suivant; + + if (format_sortie != 'N') + { + l_element_courant_format = + (*l_element_courant_format).suivant; + } } - if ((l_element_courant != NULL) || - (l_element_courant_format != NULL)) + if (format_sortie != 'N') { - free(chaine); + if ((l_element_courant != NULL) || + (l_element_courant_format != NULL)) + { + free(chaine); - (*s_etat_processus).erreur_execution = - d_ex_erreur_format_fichier; - return(NULL); + (*s_etat_processus).erreur_execution = + d_ex_erreur_format_fichier; + return(NULL); + } } (*longueur_effective) = longueur_totale; @@ -4892,6 +4916,7 @@ lecture_fichier_non_formate(struct_proce unsigned char *buffer; unsigned char *flux; unsigned char *ptr; + unsigned char type_objet; size_t deplacement; @@ -4938,7 +4963,7 @@ lecture_fichier_non_formate(struct_proce } } - switch(octets[0] & 0xF0) + switch(type_objet = (octets[0] & 0xF0)) { case 0x00: // Binaire { @@ -5361,6 +5386,8 @@ lecture_fichier_non_formate(struct_proce } case 0x40: // Liste + case 0x60: // Expression + case 0x70: // Expression algébrique { if ((octets[0] & 0x08) == 0) // Longueur sur 6 bits { @@ -5545,9 +5572,26 @@ lecture_fichier_non_formate(struct_proce } } - if ((s_objet = allocation(s_etat_processus, LST)) == NULL) + if (type_objet == 0x40) { - return(NULL); + if ((s_objet = allocation(s_etat_processus, LST)) == NULL) + { + return(NULL); + } + } + else if (type_objet == 0x60) + { + if ((s_objet = allocation(s_etat_processus, RPN)) == NULL) + { + return(NULL); + } + } + else + { + if ((s_objet = allocation(s_etat_processus, ALG)) == NULL) + { + return(NULL); + } } l_element_courant = NULL;