--- rpl/src/interface_tex.c 2014/07/17 08:07:25 1.54 +++ rpl/src/interface_tex.c 2023/08/07 17:42:59 1.77 @@ -1,7 +1,7 @@ /* ================================================================================ - RPL/2 (R) version 4.1.19 - Copyright (C) 1989-2014 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. @@ -582,7 +582,7 @@ formateur_elementaire_tex(struct_process if ((*s_etat_processus).instruction_valide == 'Y') { - if ((instruction_majuscule = conversion_majuscule( + if ((instruction_majuscule = conversion_majuscule(s_etat_processus, (*s_etat_processus).instruction_courante)) == NULL) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; @@ -1562,19 +1562,18 @@ formateur_elementaire_tex(struct_process if (niveau == 0) { - sprintf((unsigned char *) (*s_sous_objet_1) - .objet, "%s", &(((unsigned char *) - (*s_sous_objet_1).objet)[1])); - ((unsigned char *) (*s_sous_objet_1).objet) - [strlen((unsigned char *) - (*s_sous_objet_1).objet) - 1] = - d_code_fin_chaine; + memmove(((unsigned char *) (*s_sous_objet_1) + .objet), ((unsigned char *) + (*s_sous_objet_1).objet) + 1, + strlen((unsigned char *) + (*s_sous_objet_1).objet)); } } chaine_parametre = (unsigned char *) (*s_sous_objet_1).objet; - conversion_element_tex(&chaine_parametre, "^"); + conversion_element_tex(s_etat_processus, + &chaine_parametre, "^"); if ((*s_sous_objet_1).objet == NULL) { @@ -1602,8 +1601,8 @@ formateur_elementaire_tex(struct_process { chaine_parametre = (unsigned char *) (*s_sous_objet_1).objet; - conversion_element_tex(&chaine_parametre, - (*((struct_fonction *) + conversion_element_tex(s_etat_processus, + &chaine_parametre, (*((struct_fonction *) (*(*l_element_courant).donnee).objet)) .nom_fonction); @@ -1616,8 +1615,8 @@ formateur_elementaire_tex(struct_process chaine_parametre = (unsigned char *) (*s_sous_objet_2).objet; - conversion_element_tex(&chaine_parametre, - (*((struct_fonction *) + conversion_element_tex(s_etat_processus, + &chaine_parametre, (*((struct_fonction *) (*(*l_element_courant).donnee).objet)) .nom_fonction); @@ -1700,7 +1699,8 @@ formateur_elementaire_tex(struct_process { chaine_parametre = (unsigned char *) (*s_sous_objet_1).objet; - conversion_element_tex(&chaine_parametre, + conversion_element_tex(s_etat_processus, + &chaine_parametre, (*((struct_fonction *) (*(*l_element_courant).donnee).objet)) .nom_fonction); @@ -1714,7 +1714,8 @@ formateur_elementaire_tex(struct_process chaine_parametre = (unsigned char *) (*s_sous_objet_2).objet; - conversion_element_tex(&chaine_parametre, + conversion_element_tex(s_etat_processus, + &chaine_parametre, (*((struct_fonction *) (*(*l_element_courant).donnee).objet)) .nom_fonction); @@ -2052,8 +2053,9 @@ formateur_elementaire_tex(struct_process free(chaine_sauvegarde); - chaine_majuscule = conversion_majuscule((*((struct_nom *) - (*(*l_element_courant).donnee).objet)).nom); + chaine_majuscule = conversion_majuscule(s_etat_processus, + (*((struct_nom *) (*(*l_element_courant).donnee) + .objet)).nom); if (strcmp(chaine_majuscule, "PI") == 0) { @@ -2189,15 +2191,25 @@ correction_formateur_tex(struct_processu */ case '#' : +# if __GNUC__ >= 7 + __attribute__ ((fallthrough)); +# endif + case '_' : { if (mode_mathematique == d_vrai) { break; } +# if __GNUC__ >= 7 + __attribute__ ((fallthrough)); +# endif } case '%' : +# if __GNUC__ >= 7 + __attribute__ ((fallthrough)); +# endif case '&' : { if ((tampon = (unsigned char *) malloc((strlen((*ligne)) + 2) * @@ -2335,7 +2347,7 @@ impression_tex(struct_processus *s_etat_ if ((*s_etat_processus).rpl_home == NULL) { - if (alsprintf(&commande, ds_tex_commande, + if (alsprintf(s_etat_processus, &commande, ds_tex_commande, d_exec_path, d_exec_path, d_exec_path, (*s_etat_processus).nom_fichier_impression, d_exec_path, d_exec_path, @@ -2347,7 +2359,7 @@ impression_tex(struct_processus *s_etat_ return; } - if (alsprintf(&executable_candidat, "%s/bin/rpliconv", + if (alsprintf(s_etat_processus, &executable_candidat, "%s/bin/rpliconv", d_exec_path) < 0) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; @@ -2363,7 +2375,7 @@ impression_tex(struct_processus *s_etat_ free(executable_candidat); - if (alsprintf(&executable_candidat, "%s/bin/rplfile", + if (alsprintf(s_etat_processus, &executable_candidat, "%s/bin/rplfile", d_exec_path) < 0) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; @@ -2381,7 +2393,7 @@ impression_tex(struct_processus *s_etat_ } else { - if (alsprintf(&commande, ds_tex_commande, + if (alsprintf(s_etat_processus, &commande, ds_tex_commande, (*s_etat_processus).rpl_home, (*s_etat_processus).rpl_home, (*s_etat_processus).rpl_home, @@ -2396,7 +2408,7 @@ impression_tex(struct_processus *s_etat_ return; } - if (alsprintf(&executable_candidat, "%s/bin/rpliconv", + if (alsprintf(s_etat_processus, &executable_candidat, "%s/bin/rpliconv", (*s_etat_processus).rpl_home) < 0) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; @@ -2412,7 +2424,7 @@ impression_tex(struct_processus *s_etat_ free(executable_candidat); - if (alsprintf(&executable_candidat, "%s/bin/rplfile", + if (alsprintf(s_etat_processus, &executable_candidat, "%s/bin/rplfile", (*s_etat_processus).rpl_home) < 0) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; @@ -2438,7 +2450,8 @@ impression_tex(struct_processus *s_etat_ { free(commande); - if (alsprintf(&commande, ds_tex_postscript, nom_fichier_ps) < 0) + if (alsprintf(s_etat_processus, &commande, ds_tex_postscript, + nom_fichier_ps) < 0) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; return; @@ -2539,7 +2552,8 @@ impression_tex(struct_processus *s_etat_ */ void -conversion_element_tex(unsigned char **element, unsigned char *fonction) +conversion_element_tex(struct_processus *s_etat_processus, + unsigned char **element, unsigned char *fonction) { unsigned char *chaine; unsigned char *element_courant; @@ -2562,7 +2576,8 @@ conversion_element_tex(unsigned char **e { if (niveau == 0) { - extrait = extraction_chaine((*element), debut_fonction, i - 1); + extrait = extraction_chaine(s_etat_processus, + (*element), debut_fonction, i - 1); if (strcmp(extrait, fonction) != 0) {