--- rpl/src/formateur.c 2013/03/16 11:31:41 1.56 +++ rpl/src/formateur.c 2020/01/10 11:15:42 1.96 @@ -1,7 +1,7 @@ /* ================================================================================ - RPL/2 (R) version 4.1.13 - Copyright (C) 1989-2013 Dr. BERTRAND Joël + RPL/2 (R) version 4.1.32 + Copyright (C) 1989-2020 Dr. BERTRAND Joël This file is part of RPL/2. @@ -42,12 +42,14 @@ formateur(struct_processus *s_etat_proce int parentheses_groupe_gauche; int parentheses_groupe_droit; + integer8 (*__type_disp)(struct_processus *, void **); + logical1 registre45; logical4 autorisation_parenthese; logical4 presence_signe; - long longueur_chaine; + logical8 masque_binaire; struct_liste_chainee *l_atome; struct_liste_chainee *l_element_courant; @@ -72,20 +74,19 @@ formateur(struct_processus *s_etat_proce unsigned char *registre; unsigned char tampon[1024 + 1]; - unsigned long i; - unsigned long j; - unsigned long k; - unsigned long longueur_courante; - unsigned long longueur_decimale_courante; - unsigned long *longueurs_maximales; - unsigned long nombre_arguments; - unsigned long nombre_arguments_fonction; - unsigned long nombre_colonnes; - unsigned long nombre_elements; - unsigned long nombre_lignes; - unsigned long offset; - - integer8 masque_binaire; + integer8 i; + integer8 j; + integer8 k; + integer8 longueur_chaine; + integer8 longueur_courante; + integer8 longueur_decimale_courante; + integer8 *longueurs_maximales; + integer8 nombre_arguments; + integer8 nombre_arguments_fonction; + integer8 nombre_colonnes; + integer8 nombre_elements; + integer8 nombre_lignes; + integer8 offset; chaine = NULL; chaine_formatee = NULL; @@ -104,7 +105,8 @@ formateur(struct_processus *s_etat_proce -------------------------------------------------------------------------------- */ - if (alsprintf(&chaine, "@ %016lX", (*((unsigned long *) + if (alsprintf(s_etat_processus, &chaine, + "@ %016llX", (*((unsigned long long *) ((*s_objet).objet)))) < 0) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; @@ -120,14 +122,20 @@ formateur(struct_processus *s_etat_proce -------------------------------------------------------------------------------- */ - if (alsprintf(&chaine, "Library $ %016lX [%s]", - (unsigned long) (*((struct_bibliotheque *) +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wpointer-to-int-cast" + + if (alsprintf(s_etat_processus, &chaine, "Library $ %016llX [%s]", + (unsigned long long) (*((struct_bibliotheque *) (*s_objet).objet)).descripteur, (*((struct_bibliotheque *) (*s_objet).objet)).nom) < 0) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; return(NULL); } + +# pragma GCC diagnostic pop + } else if ((*s_objet).type == SPH) { @@ -138,13 +146,20 @@ formateur(struct_processus *s_etat_proce -------------------------------------------------------------------------------- */ - if (alsprintf(&chaine, "Semaphore $ %016lX '%s'", +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wpointer-to-int-cast" + + if (alsprintf(s_etat_processus, + &chaine, "Semaphore $ %016llX '%s'", (unsigned long long) &((*((struct_semaphore *) (*s_objet).objet)).semaphore), (*((struct_semaphore *) (*s_objet).objet)).nom) < 0) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; return(NULL); } + +# pragma GCC diagnostic pop + } else if ((*s_objet).type == SQL) { @@ -159,8 +174,8 @@ formateur(struct_processus *s_etat_proce "MYSQL") == 0) { # ifdef MYSQL_SUPPORT - if (alsprintf(&chaine, "Sql $ %016lX (%s)", - (long unsigned int) (*((struct_connecteur_sql *) + if (alsprintf(s_etat_processus, &chaine, "Sql $ %016llX (%s)", + (unsigned long long) (*((struct_connecteur_sql *) (*s_objet).objet)).descripteur.mysql, (*((struct_connecteur_sql *) (*s_objet).objet)).type) < 0) { @@ -186,8 +201,8 @@ formateur(struct_processus *s_etat_proce "POSTGRESQL") == 0) { # ifdef POSTGRESQL_SUPPORT - if (alsprintf(&chaine, "Sql $ %016lX (%s)", - (long unsigned int) (*((struct_connecteur_sql *) + if (alsprintf(s_etat_processus, &chaine, "Sql $ %016llX (%s)", + (unsigned long long) (*((struct_connecteur_sql *) (*s_objet).objet)).descripteur.postgresql, (*((struct_connecteur_sql *) (*s_objet).objet)).type) < 0) { @@ -228,7 +243,8 @@ formateur(struct_processus *s_etat_proce if ((*(*((struct_processus_fils *) (*s_objet).objet)).thread) .processus_detache == d_vrai) { - if (alsprintf(&chaine, "Process $ %016lX", (unsigned long) + if (alsprintf(s_etat_processus, &chaine, + "Process $ %016llX", (unsigned long long) (*(*((struct_processus_fils *) (*s_objet).objet)).thread) .pid) < 0) { @@ -238,10 +254,11 @@ formateur(struct_processus *s_etat_proce } else { - if (alsprintf(&chaine, "Light weight process $ %016lX/%016lX", - (unsigned long) (*(*((struct_processus_fils *) + if (alsprintf(s_etat_processus, &chaine, + "Light weight process $ %016llX/%016llX", + (unsigned long long) (*(*((struct_processus_fils *) (*s_objet).objet)).thread).pid, - (unsigned long) (*(*((struct_processus_fils *) + (unsigned long long) (*(*((struct_processus_fils *) (*s_objet).objet)).thread).tid) < 0) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; @@ -258,7 +275,8 @@ formateur(struct_processus *s_etat_proce -------------------------------------------------------------------------------- */ - if (alsprintf(&chaine, "File $ %016lX", (unsigned long) + if (alsprintf(s_etat_processus, + &chaine, "File $ %016llX", (unsigned long long) (*((struct_fichier *) ((*s_objet).objet))).descripteur) < 0) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; @@ -283,8 +301,10 @@ formateur(struct_processus *s_etat_proce cf(s_etat_processus, 45); } - if ((format_majuscule = conversion_majuscule(format)) == NULL) + if ((format_majuscule = conversion_majuscule(s_etat_processus, + format)) == NULL) { + (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; return(NULL); } @@ -390,9 +410,9 @@ formateur(struct_processus *s_etat_proce -------------------------------------------------------------------------------- */ - if (alsprintf(&chaine, "Socket $ %016lX", - (unsigned long) (*((struct_socket *) - ((*s_objet).objet))).socket) < 0) + if (alsprintf(s_etat_processus, &chaine, + "Socket $ %016llX", (unsigned long long) + (*((struct_socket *) ((*s_objet).objet))).socket) < 0) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; return(NULL); @@ -416,7 +436,8 @@ formateur(struct_processus *s_etat_proce cf(s_etat_processus, 45); } - if ((format_majuscule = conversion_majuscule(format)) == NULL) + if ((format_majuscule = conversion_majuscule(s_etat_processus, + format)) == NULL) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; return(NULL); @@ -689,6 +710,7 @@ formateur(struct_processus *s_etat_proce || ((*s_etat_processus).instruction_courante[1] == '-')) ? d_vrai : d_faux; + (*s_etat_processus).type_en_cours = NON; recherche_type(s_etat_processus); if ((*s_etat_processus).erreur_execution != d_ex) @@ -746,6 +768,7 @@ formateur(struct_processus *s_etat_proce { if ((strcmp(chaine_fonction, "AND") == 0) || (strcmp(chaine_fonction, "XOR") == 0) || + (strcmp(chaine_fonction, "EQV") == 0) || (strcmp(chaine_fonction, "OR") == 0)) { autorisation_parenthese = d_vrai; @@ -772,6 +795,7 @@ formateur(struct_processus *s_etat_proce (strcmp(chaine_fonction, "-") == 0) || (strcmp(chaine_fonction, "AND") == 0) || (strcmp(chaine_fonction, "XOR") == 0) || + (strcmp(chaine_fonction, "EQV") == 0) || (strcmp(chaine_fonction, "OR") == 0)) { autorisation_parenthese = d_vrai; @@ -811,7 +835,7 @@ formateur(struct_processus *s_etat_proce chaine_sauvegarde = (unsigned char *) (*s_sous_objet_2).objet; - if (((*s_sous_objet_2).objet = (void *) + if (((*s_sous_objet_2).objet = malloc((strlen(chaine_sauvegarde) + 2 + 1) * sizeof(unsigned char))) == NULL) { @@ -852,6 +876,7 @@ formateur(struct_processus *s_etat_proce "'%s'", (unsigned char *) (*s_sous_objet_1).objet); + (*s_etat_processus).type_en_cours = NON; recherche_type(s_etat_processus); if ((*s_etat_processus).erreur_execution != d_ex) @@ -907,6 +932,7 @@ formateur(struct_processus *s_etat_proce { if ((strcmp(chaine_fonction, "AND") == 0) || (strcmp(chaine_fonction, "XOR") == 0) || + (strcmp(chaine_fonction, "EQV") == 0) || (strcmp(chaine_fonction, "OR") == 0)) { autorisation_parenthese = d_vrai; @@ -923,6 +949,7 @@ formateur(struct_processus *s_etat_proce (strcmp(chaine_fonction, "-") == 0) || (strcmp(chaine_fonction, "AND") == 0) || (strcmp(chaine_fonction, "XOR") == 0) || + (strcmp(chaine_fonction, "EQV") == 0) || (strcmp(chaine_fonction, "OR") == 0)) { autorisation_parenthese = d_vrai; @@ -941,7 +968,7 @@ formateur(struct_processus *s_etat_proce chaine_sauvegarde = (unsigned char *) (*s_sous_objet_1).objet; - if (((*s_sous_objet_1).objet = (void *) + if (((*s_sous_objet_1).objet = malloc((strlen(chaine_sauvegarde) + 2 + 1) * sizeof(unsigned char))) == NULL) { @@ -965,7 +992,7 @@ formateur(struct_processus *s_etat_proce return(NULL); } - if (((*s_sous_objet).objet = (void *) malloc((strlen( + if (((*s_sous_objet).objet = malloc((strlen( (unsigned char *) (*s_sous_objet_1).objet) + strlen((*((struct_fonction *) (*(*l_element_courant).donnee).objet)) @@ -1046,7 +1073,7 @@ formateur(struct_processus *s_etat_proce if (autorisation_parenthese == d_vrai) { if (((*s_sous_objet).objet = - (void *) malloc((strlen( + malloc((strlen( (unsigned char *) (*s_sous_objet_1).objet) + strlen((*((struct_fonction *) (*(*l_element_courant).donnee).objet)) @@ -1070,7 +1097,7 @@ formateur(struct_processus *s_etat_proce else { if (((*s_sous_objet).objet = - (void *) malloc((strlen( + malloc((strlen( (unsigned char *) (*s_sous_objet_1).objet) + strlen((*((struct_fonction *) (*(*l_element_courant).donnee).objet)) @@ -1149,6 +1176,8 @@ formateur(struct_processus *s_etat_proce (*(*l_element_courant).donnee).objet)).nom_fonction, "XOR") == 0) || (strcmp((*((struct_fonction *) (*(*l_element_courant).donnee).objet)).nom_fonction, + "EQV") == 0) || (strcmp((*((struct_fonction *) + (*(*l_element_courant).donnee).objet)).nom_fonction, "AND") == 0)) { if (depilement(s_etat_processus, &((*s_etat_processus) @@ -1193,6 +1222,7 @@ formateur(struct_processus *s_etat_proce "'%s'", (unsigned char *) (*s_sous_objet_1).objet); + (*s_etat_processus).type_en_cours = NON; recherche_type(s_etat_processus); if ((*s_etat_processus).erreur_execution != d_ex) @@ -1238,6 +1268,7 @@ formateur(struct_processus *s_etat_proce } if (((strcmp(chaine_fonction, "OR") == 0) || + (strcmp(chaine_fonction, "EQV") == 0) || (strcmp(chaine_fonction, "XOR") == 0)) && (strcmp((*((struct_fonction *) (*(*l_element_courant).donnee).objet)) @@ -1268,6 +1299,7 @@ formateur(struct_processus *s_etat_proce "'%s'", (unsigned char *) (*s_sous_objet_2).objet); + (*s_etat_processus).type_en_cours = NON; recherche_type(s_etat_processus); if ((*s_etat_processus).erreur_execution != d_ex) @@ -1313,6 +1345,7 @@ formateur(struct_processus *s_etat_proce } if (((strcmp(chaine_fonction, "OR") == 0) || + (strcmp(chaine_fonction, "EQV") == 0) || (strcmp(chaine_fonction, "XOR") == 0)) && (strcmp((*((struct_fonction *) (*(*l_element_courant).donnee).objet)) @@ -1324,14 +1357,14 @@ formateur(struct_processus *s_etat_proce liberation(s_etat_processus, s_sous_objet_3); - if (((*s_sous_objet).objet = (void *) malloc((strlen( + if (((*s_sous_objet).objet = malloc((strlen( (unsigned char *) (*s_sous_objet_1).objet) + strlen((*((struct_fonction *) (*(*l_element_courant).donnee).objet)) .nom_fonction) + strlen((unsigned char *) (*s_sous_objet_2).objet) + 2 + 1 + - parentheses_groupe_gauche + - parentheses_groupe_droit) * + ((size_t) parentheses_groupe_gauche) + + ((size_t) parentheses_groupe_droit)) * sizeof(unsigned char))) == NULL) { (*s_etat_processus).erreur_systeme = @@ -1468,7 +1501,7 @@ formateur(struct_processus *s_etat_proce return(NULL); } - (*s_sous_objet).objet = (void *) chaine; + (*s_sous_objet).objet = chaine; if (empilement(s_etat_processus, &((*s_etat_processus) .l_base_pile), s_sous_objet) == d_erreur) @@ -1488,7 +1521,7 @@ formateur(struct_processus *s_etat_proce return(NULL); } - if (((*s_sous_objet).objet = (void *) formateur( + if (((*s_sous_objet).objet = formateur( s_etat_processus, 0, (*l_element_courant).donnee)) == NULL) { @@ -1516,8 +1549,8 @@ formateur(struct_processus *s_etat_proce ptrl = chaine_sauvegarde; ptre = (unsigned char *) (*s_sous_objet).objet; - for(ptrl++, i = strlen(chaine_sauvegarde) - 2; i > 0; - i--, *ptre++ = *ptrl++); + for(ptrl++, i = ((integer8) strlen(chaine_sauvegarde)) - 2; + i > 0; i--, *ptre++ = *ptrl++); (*ptre) = d_code_fin_chaine; @@ -1588,7 +1621,7 @@ formateur(struct_processus *s_etat_proce -- Base décimale --------------------------------------------------------------- */ - sprintf(tampon, "%llu", (*((logical8 *) + sprintf(tampon, "%llu", (*((unsigned long long *) ((*s_objet).objet))) & masque_binaire); strcpy(base, "d"); } @@ -1600,7 +1633,7 @@ formateur(struct_processus *s_etat_proce -- Base octale ----------------------------------------------------------------- */ - sprintf(tampon, "%llo", (*((logical8 *) + sprintf(tampon, "%llo", (*((unsigned long long *) ((*s_objet).objet))) & masque_binaire); strcpy(base, "o"); } @@ -1611,7 +1644,7 @@ formateur(struct_processus *s_etat_proce -- Bases hexadécimale et binaire ----------------------------------------------- */ - sprintf(tampon, "%llX", (*((logical8 *) + sprintf(tampon, "%llX", (*((unsigned long long *) ((*s_objet).objet))) & masque_binaire); if (test_cfsf(s_etat_processus, 43) == d_vrai) @@ -1633,7 +1666,7 @@ formateur(struct_processus *s_etat_proce strcpy(chaine, tampon); tampon[0] = 0; - for(i = 0; i < strlen(chaine); i++) + for(i = 0; i < (integer8) strlen(chaine); i++) { switch(chaine[i]) { @@ -1780,7 +1813,7 @@ formateur(struct_processus *s_etat_proce -------------------------------------------------------------------------------- */ - chaine_formatee = formateur_nombre(s_etat_processus, (void *) + chaine_formatee = formateur_nombre(s_etat_processus, ((struct_complexe16 *) ((*s_objet).objet)), 'C'); if (chaine_formatee == NULL) @@ -1815,7 +1848,7 @@ formateur(struct_processus *s_etat_proce while(l_element_courant != NULL) { - if ((chaine_formatee = formateur(s_etat_processus, 0, + if ((chaine_formatee = formateur(s_etat_processus, offset_initial, (*l_element_courant).donnee)) == NULL) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; @@ -1888,7 +1921,7 @@ formateur(struct_processus *s_etat_proce -------------------------------------------------------------------------------- */ - chaine_formatee = formateur_nombre(s_etat_processus, (void *) + chaine_formatee = formateur_nombre(s_etat_processus, ((integer8 *) ((*s_objet).objet)), 'I'); if (chaine_formatee == NULL) @@ -1949,13 +1982,13 @@ formateur(struct_processus *s_etat_proce } strcpy(chaine, "<[ "); - offset = strlen(chaine) + offset_initial; + offset = ((integer8) strlen(chaine)) + offset_initial; for(i = 0; i < (*((struct_tableau *) (*s_objet).objet)) .nombre_elements; i++) { chaine_sauvegarde = chaine; - chaine_formatee = formateur(s_etat_processus, offset, + chaine_formatee = formateur(s_etat_processus, (long) offset, (*((struct_tableau *) (*s_objet).objet)).elements[i]); if (chaine_formatee == NULL) @@ -2046,7 +2079,7 @@ formateur(struct_processus *s_etat_proce chaine_sauvegarde = chaine; chaine = (unsigned char *) malloc( - (strlen(chaine_sauvegarde) + 1 + offset) + (strlen(chaine_sauvegarde) + 1 + ((size_t) offset)) * sizeof(unsigned char)); if (chaine == NULL) @@ -2154,12 +2187,12 @@ formateur(struct_processus *s_etat_proce l_element_courant = (struct_liste_chainee *) ((*s_objet).objet); nombre_elements = 0; - offset = strlen(chaine) + offset_initial; + offset = ((integer8) strlen(chaine)) + offset_initial; while(l_element_courant != NULL) { chaine_sauvegarde = chaine; - chaine_formatee = formateur(s_etat_processus, offset, + chaine_formatee = formateur(s_etat_processus, (long) offset, (*l_element_courant).donnee); if (chaine_formatee == NULL) @@ -2248,7 +2281,7 @@ formateur(struct_processus *s_etat_proce chaine_sauvegarde = chaine; chaine = (unsigned char *) malloc( - (strlen(chaine_sauvegarde) + 1 + offset) + (strlen(chaine_sauvegarde) + 1 + ((size_t) offset)) * sizeof(unsigned char)); if (chaine == NULL) @@ -2356,10 +2389,10 @@ formateur(struct_processus *s_etat_proce if (chaine != NULL) { strcpy(chaine, "[["); - offset = strlen(chaine) + offset_initial - 1; + offset = ((integer8) strlen(chaine)) + offset_initial - 1; - if ((longueurs_maximales = malloc(sizeof(unsigned long) * 2 * - nombre_colonnes)) == NULL) + if ((longueurs_maximales = malloc(sizeof(integer8) * 2 * + ((size_t) nombre_colonnes))) == NULL) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; @@ -2378,7 +2411,7 @@ formateur(struct_processus *s_etat_proce for(j = 0; j < nombre_colonnes; j++) { chaine_formatee = formateur_nombre(s_etat_processus, - (void *) &(((struct_complexe16 **) + &(((struct_complexe16 **) ((*((struct_matrice *) ((*s_objet).objet))).tableau))[i][j]), 'C'); @@ -2389,7 +2422,7 @@ formateur(struct_processus *s_etat_proce return(NULL); } - longueur_courante = strlen(chaine_formatee); + longueur_courante = (integer8) strlen(chaine_formatee); longueur_decimale_courante = 0; if ((ptrl = index(chaine_formatee, @@ -2423,7 +2456,7 @@ formateur(struct_processus *s_etat_proce for(j = 0; j < nombre_colonnes; j++) { chaine_formatee = formateur_nombre(s_etat_processus, - (void *) &(((struct_complexe16 **) + &(((struct_complexe16 **) ((*((struct_matrice *) ((*s_objet).objet))).tableau))[i][j]), 'C'); @@ -2434,7 +2467,7 @@ formateur(struct_processus *s_etat_proce return(NULL); } - longueur_courante = strlen(chaine_formatee); + longueur_courante = (integer8) strlen(chaine_formatee); longueur_decimale_courante = 0; if ((ptrl = index(chaine_formatee, @@ -2453,9 +2486,10 @@ formateur(struct_processus *s_etat_proce chaine = (unsigned char *) malloc( (strlen(chaine_sauvegarde) + - longueur_courante + longueur_decimale_courante + - longueurs_maximales[2 * j] + - longueurs_maximales[(2 * j) + 1] + 2) + ((size_t) longueur_courante) + + ((size_t) longueur_decimale_courante) + + ((size_t) longueurs_maximales[2 * j]) + + ((size_t) longueurs_maximales[(2 * j) + 1]) + 2) * sizeof(unsigned char)); if (chaine == NULL) @@ -2488,7 +2522,8 @@ formateur(struct_processus *s_etat_proce { chaine = (unsigned char *) malloc( (strlen(chaine_sauvegarde) + - longueur_courante + longueur_decimale_courante + ((size_t) longueur_courante) + + ((size_t) longueur_decimale_courante) + 2) * sizeof(unsigned char)); if (chaine == NULL) @@ -2514,8 +2549,8 @@ formateur(struct_processus *s_etat_proce if (test_cfsf(s_etat_processus, 45) == d_vrai) { chaine = (unsigned char *) malloc( - (strlen(chaine_sauvegarde) + 5 + offset) - * sizeof(unsigned char)); + (strlen(chaine_sauvegarde) + 5 + + ((size_t) offset)) * sizeof(unsigned char)); if (chaine == NULL) { @@ -2590,10 +2625,10 @@ formateur(struct_processus *s_etat_proce if (chaine != NULL) { strcpy(chaine, "[["); - offset = strlen(chaine) + offset_initial - 1; + offset = ((integer8) strlen(chaine)) + offset_initial - 1; - if ((longueurs_maximales = malloc(sizeof(unsigned long) * - nombre_colonnes)) == NULL) + if ((longueurs_maximales = malloc(sizeof(integer8) * + ((size_t) nombre_colonnes))) == NULL) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; return(NULL); @@ -2611,7 +2646,7 @@ formateur(struct_processus *s_etat_proce for(j = 0; j < nombre_colonnes; j++) { chaine_formatee = formateur_nombre(s_etat_processus, - (void *) &(((integer8 **) ((*((struct_matrice *) + &(((integer8 **) ((*((struct_matrice *) ((*s_objet).objet))).tableau))[i][j]), 'I'); if (chaine_formatee == NULL) @@ -2621,7 +2656,7 @@ formateur(struct_processus *s_etat_proce return(NULL); } - longueur_courante = strlen(chaine_formatee); + longueur_courante = (integer8) strlen(chaine_formatee); free(chaine_formatee); if (longueurs_maximales[j] < longueur_courante) @@ -2637,7 +2672,7 @@ formateur(struct_processus *s_etat_proce for(j = 0; j < nombre_colonnes; j++) { chaine_formatee = formateur_nombre(s_etat_processus, - (void *) &(((integer8 **) ((*((struct_matrice *) + &(((integer8 **) ((*((struct_matrice *) ((*s_objet).objet))).tableau))[i][j]), 'I'); if (chaine_formatee == NULL) @@ -2647,14 +2682,15 @@ formateur(struct_processus *s_etat_proce return(NULL); } - longueur_courante = strlen(chaine_formatee); + longueur_courante = (integer8) strlen(chaine_formatee); chaine_sauvegarde = chaine; if (test_cfsf(s_etat_processus, 45) == d_vrai) { chaine = (unsigned char *) malloc( - (strlen(chaine_sauvegarde) + longueur_courante - + longueurs_maximales[j] + 2) + (strlen(chaine_sauvegarde) + + ((size_t) longueur_courante) + + ((size_t) longueurs_maximales[j]) + 2) * sizeof(unsigned char)); if (chaine == NULL) @@ -2678,7 +2714,8 @@ formateur(struct_processus *s_etat_proce else { chaine = (unsigned char *) malloc( - (strlen(chaine_sauvegarde) + longueur_courante + (strlen(chaine_sauvegarde) + + ((size_t) longueur_courante) + 2) * sizeof(unsigned char)); if (chaine == NULL) @@ -2704,8 +2741,8 @@ formateur(struct_processus *s_etat_proce if (test_cfsf(s_etat_processus, 45) == d_vrai) { chaine = (unsigned char *) malloc( - (strlen(chaine_sauvegarde) + 5 + offset) - * sizeof(unsigned char)); + (strlen(chaine_sauvegarde) + 5 + + ((size_t) offset)) * sizeof(unsigned char)); if (chaine == NULL) { @@ -2780,10 +2817,10 @@ formateur(struct_processus *s_etat_proce if (chaine != NULL) { strcpy(chaine, "[["); - offset = strlen(chaine) + offset_initial - 1; + offset = ((integer8) strlen(chaine)) + offset_initial - 1; - if ((longueurs_maximales = malloc(sizeof(unsigned long) * 2 * - nombre_colonnes)) == NULL) + if ((longueurs_maximales = malloc(sizeof(integer8) * 2 * + ((size_t) nombre_colonnes))) == NULL) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; return(NULL); @@ -2801,7 +2838,7 @@ formateur(struct_processus *s_etat_proce for(j = 0; j < nombre_colonnes; j++) { chaine_formatee = formateur_nombre(s_etat_processus, - (void *) &(((real8 **) ((*((struct_matrice *) + &(((real8 **) ((*((struct_matrice *) ((*s_objet).objet))).tableau))[i][j]), 'R'); if (chaine_formatee == NULL) @@ -2811,7 +2848,7 @@ formateur(struct_processus *s_etat_proce return(NULL); } - longueur_courante = strlen(chaine_formatee); + longueur_courante = (integer8) strlen(chaine_formatee); longueur_decimale_courante = 0; if ((ptrl = index(chaine_formatee, @@ -2845,7 +2882,7 @@ formateur(struct_processus *s_etat_proce for(j = 0; j < nombre_colonnes; j++) { chaine_formatee = formateur_nombre(s_etat_processus, - (void *) &(((real8 **) ((*((struct_matrice *) + &(((real8 **) ((*((struct_matrice *) ((*s_objet).objet))).tableau))[i][j]), 'R'); if (chaine_formatee == NULL) @@ -2855,7 +2892,7 @@ formateur(struct_processus *s_etat_proce return(NULL); } - longueur_courante = strlen(chaine_formatee); + longueur_courante = (integer8) strlen(chaine_formatee); longueur_decimale_courante = 0; if ((ptrl = index(chaine_formatee, @@ -2873,9 +2910,10 @@ formateur(struct_processus *s_etat_proce { chaine = (unsigned char *) malloc( (strlen(chaine_sauvegarde) + - longueur_courante + longueur_decimale_courante + - longueurs_maximales[2 * j] + - longueurs_maximales[(2 * j) + 1] + 2) + ((size_t) longueur_courante) + + ((size_t) longueur_decimale_courante) + + ((size_t) longueurs_maximales[2 * j]) + + ((size_t) longueurs_maximales[(2 * j) + 1]) + 2) * sizeof(unsigned char)); if (chaine == NULL) @@ -2908,7 +2946,8 @@ formateur(struct_processus *s_etat_proce { chaine = (unsigned char *) malloc( (strlen(chaine_sauvegarde) + - longueur_courante + longueur_decimale_courante + ((size_t) longueur_courante) + + ((size_t) longueur_decimale_courante) + 2) * sizeof(unsigned char)); if (chaine == NULL) @@ -2934,8 +2973,8 @@ formateur(struct_processus *s_etat_proce if (test_cfsf(s_etat_processus, 45) == d_vrai) { chaine = (unsigned char *) malloc( - (strlen(chaine_sauvegarde) + 5 + offset) - * sizeof(unsigned char)); + (strlen(chaine_sauvegarde) + 5 + + ((size_t) offset)) * sizeof(unsigned char)); if (chaine == NULL) { @@ -2993,9 +3032,10 @@ formateur(struct_processus *s_etat_proce } else if ((*s_objet).type == MTX) { - if (alsprintf(&chaine, "Mutex $ %016lX owned by $ %016lX", - (unsigned long) &((*((struct_mutex *) (*s_objet).objet)).mutex), - (unsigned long) (*((struct_mutex *) (*s_objet).objet)).tid) < 0) + if (alsprintf(s_etat_processus, &chaine, + "Mutex $ %016llX owned by $ %016llX", + &((*((struct_mutex *) (*s_objet).objet)).mutex), + (logical8) (*((struct_mutex *) (*s_objet).objet)).tid) < 0) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; return(NULL); @@ -3046,7 +3086,7 @@ formateur(struct_processus *s_etat_proce -------------------------------------------------------------------------------- */ - chaine_formatee = formateur_nombre(s_etat_processus, (void *) + chaine_formatee = formateur_nombre(s_etat_processus, ((real8 *) ((*s_objet).objet)), 'R'); if (chaine_formatee == NULL) @@ -3087,7 +3127,7 @@ formateur(struct_processus *s_etat_proce for(i = 0; i < nombre_colonnes; i++) { - chaine_formatee = formateur_nombre(s_etat_processus, (void *) + chaine_formatee = formateur_nombre(s_etat_processus, &(((struct_complexe16 *) ((*((struct_vecteur *) ((*s_objet).objet))).tableau))[i]), 'C'); @@ -3154,7 +3194,7 @@ formateur(struct_processus *s_etat_proce for(i = 0; i < nombre_colonnes; i++) { - chaine_formatee = formateur_nombre(s_etat_processus, (void *) + chaine_formatee = formateur_nombre(s_etat_processus, &(((integer8 *) ((*((struct_vecteur *) ((*s_objet).objet))).tableau))[i]), 'I'); @@ -3221,7 +3261,7 @@ formateur(struct_processus *s_etat_proce for(i = 0; i < nombre_colonnes; i++) { - chaine_formatee = formateur_nombre(s_etat_processus, (void *) + chaine_formatee = formateur_nombre(s_etat_processus, &(((real8 *) ((*((struct_vecteur *) ((*s_objet).objet))).tableau))[i]), 'R'); @@ -3258,6 +3298,77 @@ formateur(struct_processus *s_etat_proce 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 == 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); @@ -3265,9 +3376,137 @@ formateur(struct_processus *s_etat_proce strcpy(chaine, chaine_sauvegarde); free(chaine_sauvegarde); - strcat(chaine, " ]"); + 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) + * sizeof(unsigned char))) == NULL) + { + (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; + return(NULL); + } + + strcpy(chaine, "System object"); + } + else if ((*s_objet).type == EXT) + { + l_element_courant = (*s_etat_processus).s_bibliotheques; + + while(l_element_courant != NULL) + { + if ((*((struct_bibliotheque *) (*l_element_courant).donnee)) + .descripteur == (*s_objet).descripteur_bibliotheque) + { + if ((__type_disp = dlsym((*s_objet).descripteur_bibliotheque, + "__type_disp")) == NULL) + { + // Symbole externe non affichable + + if ((chaine = malloc((strlen( + "External symbol (disp function not found)") + 1) + * sizeof(unsigned char))) == NULL) + { + (*s_etat_processus).erreur_systeme = + d_es_allocation_memoire; + return(NULL); + } + + strcpy(chaine, "External symbol (disp function not found)"); + } + else + { + // Symbole externe affichable + void **arg; + + arg = (void **) &s_objet; + __type_disp(s_etat_processus, arg); + chaine = (unsigned char *) (*arg); + } + + break; + } + + l_element_courant = (*l_element_courant).suivant; + } + + if (l_element_courant == NULL) + { + // Symbole externe non affichable + + if ((chaine = malloc((strlen("External symbol") + 1) + * sizeof(unsigned char))) == NULL) + { + (*s_etat_processus).erreur_systeme = + d_es_allocation_memoire; + return(NULL); + } + + strcpy(chaine, "External symbol"); } } + else + { + BUG(1, uprintf("Unknown symbol type\n")); + } return(chaine); } @@ -3321,7 +3560,7 @@ formateur_nombre(struct_processus *s_eta strcpy(construction_chaine, "("); tampon = formateur_reel(s_etat_processus, - (void *) &((*((struct_complexe16 *) + &((*((struct_complexe16 *) valeur_numerique)).partie_reelle), 'R'); if (tampon == NULL) @@ -3359,7 +3598,7 @@ formateur_nombre(struct_processus *s_eta } tampon = formateur_reel(s_etat_processus, - (void *) &((*((struct_complexe16 *) + &((*((struct_complexe16 *) valeur_numerique)).partie_imaginaire), 'R'); if (tampon == NULL) @@ -3448,6 +3687,8 @@ formateur_reel(struct_processus *s_etat_ long correction; long dernier_chiffre_significatif; long exposant; + long i; + long j; long longueur_utile; long longueur_utile_limite; @@ -3457,9 +3698,6 @@ formateur_reel(struct_processus *s_etat_ unsigned char *ptr; unsigned char tampon[32 + 1]; - unsigned long i; - unsigned long j; - chaine = (unsigned char *) malloc((32 + 1) * sizeof(unsigned char)); if (chaine == NULL) @@ -3510,7 +3748,7 @@ formateur_reel(struct_processus *s_etat_ exposant = 0; } - mantisse = (*((real8 *) valeur_numerique)) / pow(10, exposant); + mantisse = (*((real8 *) valeur_numerique)) / pow(10, (double) exposant); } else { @@ -3518,13 +3756,13 @@ formateur_reel(struct_processus *s_etat_ if (tampon_entier > ((integer8) 0)) { - exposant = (long) floor(log10(tampon_entier)); + exposant = (long) floor(log10((double) tampon_entier)); } else if (tampon_entier < ((integer8) 0)) { if (tampon_entier != INT64_MIN) { - exposant = (long) floor(log10(-tampon_entier)); + exposant = (long) floor(log10((double) -tampon_entier)); } else { @@ -3537,7 +3775,8 @@ formateur_reel(struct_processus *s_etat_ exposant = 0; } - mantisse = (*((integer8 *) valeur_numerique)) / pow(10, exposant); + mantisse = ((real8) (*((integer8 *) valeur_numerique))) / + pow(10, (double) exposant); } longueur_utile = 0; @@ -3690,7 +3929,7 @@ formateur_reel(struct_processus *s_etat_ sprintf(format, "%%.%luf", longueur_utile); - sprintf(tampon, format, (mantisse * pow(10, exposant))); + sprintf(tampon, format, (mantisse * pow(10, (double) exposant))); strcpy(chaine, tampon); } else if (strcmp(mode, "ENG") == 0) @@ -3713,7 +3952,7 @@ formateur_reel(struct_processus *s_etat_ longueur_utile -= correction; sprintf(format, "%%.%luf", longueur_utile); - sprintf(tampon, format, (mantisse * pow(10, correction))); + sprintf(tampon, format, (mantisse * pow(10, (double) correction))); strcpy(chaine, tampon); strcat(chaine, "E"); sprintf(tampon, "%ld", (exposant - correction)); @@ -3750,7 +3989,7 @@ formateur_reel(struct_processus *s_etat_ sprintf(tampon, format, *((real8 *) valeur_numerique)); - i = strlen(tampon) - 1; + i = ((long) strlen(tampon)) - 1; while(tampon[i] == '0') { tampon[i] = d_code_fin_chaine; @@ -3759,7 +3998,7 @@ formateur_reel(struct_processus *s_etat_ if (ds_imposition_separateur_decimal == d_faux) { - i = strlen(tampon) - 1; + i = ((long) strlen(tampon)) - 1; if (tampon[i] == '.') { tampon[i] = d_code_fin_chaine; @@ -3772,7 +4011,7 @@ formateur_reel(struct_processus *s_etat_ if (test_cfsf(s_etat_processus, 48) == d_vrai) { - for(i = 0; i < strlen(chaine); i++) + for(i = 0; i < (long) strlen(chaine); i++) { if (chaine[i] == '.') {