Diff for /rpl/src/formateur.c between versions 1.63 and 1.96

version 1.63, 2013/04/17 13:53:17 version 1.96, 2020/01/10 11:15:42
Line 1 Line 1
 /*  /*
 ================================================================================  ================================================================================
   RPL/2 (R) version 4.1.14    RPL/2 (R) version 4.1.32
   Copyright (C) 1989-2013 Dr. BERTRAND Joël    Copyright (C) 1989-2020 Dr. BERTRAND Joël
   
   This file is part of RPL/2.    This file is part of RPL/2.
   
Line 42  formateur(struct_processus *s_etat_proce Line 42  formateur(struct_processus *s_etat_proce
     int                         parentheses_groupe_gauche;      int                         parentheses_groupe_gauche;
     int                         parentheses_groupe_droit;      int                         parentheses_groupe_droit;
   
       integer8                    (*__type_disp)(struct_processus *, void **);
   
     logical1                    registre45;      logical1                    registre45;
   
     logical4                    autorisation_parenthese;      logical4                    autorisation_parenthese;
Line 103  formateur(struct_processus *s_etat_proce Line 105  formateur(struct_processus *s_etat_proce
 --------------------------------------------------------------------------------  --------------------------------------------------------------------------------
 */  */
   
         if (alsprintf(&chaine, "@ %016llX", (*((unsigned long long *)          if (alsprintf(s_etat_processus, &chaine,
                   "@ %016llX", (*((unsigned long long *)
                 ((*s_objet).objet)))) < 0)                  ((*s_objet).objet)))) < 0)
         {          {
             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;              (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
Line 119  formateur(struct_processus *s_etat_proce Line 122  formateur(struct_processus *s_etat_proce
 --------------------------------------------------------------------------------  --------------------------------------------------------------------------------
 */  */
   
         if (alsprintf(&chaine, "Library $ %016llX [%s]",  #       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 *)                  (unsigned long long) (*((struct_bibliotheque *)
                 (*s_objet).objet)).descripteur, (*((struct_bibliotheque *)                  (*s_objet).objet)).descripteur, (*((struct_bibliotheque *)
                 (*s_objet).objet)).nom) < 0)                  (*s_objet).objet)).nom) < 0)
Line 127  formateur(struct_processus *s_etat_proce Line 133  formateur(struct_processus *s_etat_proce
             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;              (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
             return(NULL);              return(NULL);
         }          }
   
   #       pragma GCC diagnostic pop
   
     }      }
     else if ((*s_objet).type == SPH)      else if ((*s_objet).type == SPH)
     {      {
Line 137  formateur(struct_processus *s_etat_proce Line 146  formateur(struct_processus *s_etat_proce
 --------------------------------------------------------------------------------  --------------------------------------------------------------------------------
 */  */
   
         if (alsprintf(&chaine, "Semaphore $ %016llX '%s'", (unsigned long long)  #       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)).semaphore),
                 (*((struct_semaphore *) (*s_objet).objet)).nom) < 0)                  (*((struct_semaphore *) (*s_objet).objet)).nom) < 0)
         {          {
             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;              (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
             return(NULL);              return(NULL);
         }          }
   
   #       pragma GCC diagnostic pop
   
     }      }
     else if ((*s_objet).type == SQL)      else if ((*s_objet).type == SQL)
     {      {
Line 158  formateur(struct_processus *s_etat_proce Line 174  formateur(struct_processus *s_etat_proce
                 "MYSQL") == 0)                  "MYSQL") == 0)
         {          {
 #           ifdef MYSQL_SUPPORT  #           ifdef MYSQL_SUPPORT
             if (alsprintf(&chaine, "Sql $ %016llX (%s)",              if (alsprintf(s_etat_processus, &chaine, "Sql $ %016llX (%s)",
                     (unsigned long long) (*((struct_connecteur_sql *)                      (unsigned long long) (*((struct_connecteur_sql *)
                     (*s_objet).objet)).descripteur.mysql,                      (*s_objet).objet)).descripteur.mysql,
                     (*((struct_connecteur_sql *) (*s_objet).objet)).type) < 0)                      (*((struct_connecteur_sql *) (*s_objet).objet)).type) < 0)
Line 185  formateur(struct_processus *s_etat_proce Line 201  formateur(struct_processus *s_etat_proce
                 "POSTGRESQL") == 0)                  "POSTGRESQL") == 0)
         {          {
 #           ifdef POSTGRESQL_SUPPORT  #           ifdef POSTGRESQL_SUPPORT
             if (alsprintf(&chaine, "Sql $ %016llX (%s)",              if (alsprintf(s_etat_processus, &chaine, "Sql $ %016llX (%s)",
                     (unsigned long long) (*((struct_connecteur_sql *)                      (unsigned long long) (*((struct_connecteur_sql *)
                     (*s_objet).objet)).descripteur.postgresql,                      (*s_objet).objet)).descripteur.postgresql,
                     (*((struct_connecteur_sql *) (*s_objet).objet)).type) < 0)                      (*((struct_connecteur_sql *) (*s_objet).objet)).type) < 0)
Line 227  formateur(struct_processus *s_etat_proce Line 243  formateur(struct_processus *s_etat_proce
         if ((*(*((struct_processus_fils *) (*s_objet).objet)).thread)          if ((*(*((struct_processus_fils *) (*s_objet).objet)).thread)
                 .processus_detache == d_vrai)                  .processus_detache == d_vrai)
         {          {
             if (alsprintf(&chaine, "Process $ %016llX", (unsigned long long)              if (alsprintf(s_etat_processus, &chaine,
                       "Process $ %016llX", (unsigned long long)
                     (*(*((struct_processus_fils *) (*s_objet).objet)).thread)                      (*(*((struct_processus_fils *) (*s_objet).objet)).thread)
                     .pid) < 0)                      .pid) < 0)
             {              {
Line 237  formateur(struct_processus *s_etat_proce Line 254  formateur(struct_processus *s_etat_proce
         }          }
         else          else
         {          {
             if (alsprintf(&chaine, "Light weight process $ %016llX/%016llX",              if (alsprintf(s_etat_processus, &chaine,
                       "Light weight process $ %016llX/%016llX",
                     (unsigned long long) (*(*((struct_processus_fils *)                      (unsigned long long) (*(*((struct_processus_fils *)
                     (*s_objet).objet)).thread).pid,                      (*s_objet).objet)).thread).pid,
                     (unsigned long long) (*(*((struct_processus_fils *)                      (unsigned long long) (*(*((struct_processus_fils *)
Line 257  formateur(struct_processus *s_etat_proce Line 275  formateur(struct_processus *s_etat_proce
 --------------------------------------------------------------------------------  --------------------------------------------------------------------------------
 */  */
   
         if (alsprintf(&chaine, "File $ %016llX", (unsigned long long)          if (alsprintf(s_etat_processus,
                   &chaine, "File $ %016llX", (unsigned long long)
                 (*((struct_fichier *) ((*s_objet).objet))).descripteur) < 0)                  (*((struct_fichier *) ((*s_objet).objet))).descripteur) < 0)
         {          {
             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;              (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
Line 282  formateur(struct_processus *s_etat_proce Line 301  formateur(struct_processus *s_etat_proce
             cf(s_etat_processus, 45);              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);              return(NULL);
         }          }
   
Line 389  formateur(struct_processus *s_etat_proce Line 410  formateur(struct_processus *s_etat_proce
 --------------------------------------------------------------------------------  --------------------------------------------------------------------------------
 */  */
   
         if (alsprintf(&chaine, "Socket $ %016llX", (unsigned long long)          if (alsprintf(s_etat_processus, &chaine,
                   "Socket $ %016llX", (unsigned long long)
                 (*((struct_socket *) ((*s_objet).objet))).socket) < 0)                  (*((struct_socket *) ((*s_objet).objet))).socket) < 0)
         {          {
             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;              (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
Line 414  formateur(struct_processus *s_etat_proce Line 436  formateur(struct_processus *s_etat_proce
             cf(s_etat_processus, 45);              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;              (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
             return(NULL);              return(NULL);
Line 687  formateur(struct_processus *s_etat_proce Line 710  formateur(struct_processus *s_etat_proce
                                 || ((*s_etat_processus).instruction_courante[1]                                  || ((*s_etat_processus).instruction_courante[1]
                                 == '-')) ? d_vrai : d_faux;                                  == '-')) ? d_vrai : d_faux;
   
                           (*s_etat_processus).type_en_cours = NON;
                         recherche_type(s_etat_processus);                          recherche_type(s_etat_processus);
   
                         if ((*s_etat_processus).erreur_execution != d_ex)                          if ((*s_etat_processus).erreur_execution != d_ex)
Line 744  formateur(struct_processus *s_etat_proce Line 768  formateur(struct_processus *s_etat_proce
                             {                              {
                                 if ((strcmp(chaine_fonction, "AND") == 0) ||                                  if ((strcmp(chaine_fonction, "AND") == 0) ||
                                         (strcmp(chaine_fonction, "XOR") == 0) ||                                          (strcmp(chaine_fonction, "XOR") == 0) ||
                                           (strcmp(chaine_fonction, "EQV") == 0) ||
                                         (strcmp(chaine_fonction, "OR") == 0))                                          (strcmp(chaine_fonction, "OR") == 0))
                                 {                                  {
                                     autorisation_parenthese = d_vrai;                                      autorisation_parenthese = d_vrai;
Line 770  formateur(struct_processus *s_etat_proce Line 795  formateur(struct_processus *s_etat_proce
                                         (strcmp(chaine_fonction, "-") == 0) ||                                          (strcmp(chaine_fonction, "-") == 0) ||
                                         (strcmp(chaine_fonction, "AND") == 0) ||                                          (strcmp(chaine_fonction, "AND") == 0) ||
                                         (strcmp(chaine_fonction, "XOR") == 0) ||                                          (strcmp(chaine_fonction, "XOR") == 0) ||
                                           (strcmp(chaine_fonction, "EQV") == 0) ||
                                         (strcmp(chaine_fonction, "OR") == 0))                                          (strcmp(chaine_fonction, "OR") == 0))
                                 {                                  {
                                     autorisation_parenthese = d_vrai;                                      autorisation_parenthese = d_vrai;
Line 850  formateur(struct_processus *s_etat_proce Line 876  formateur(struct_processus *s_etat_proce
                                 "'%s'", (unsigned char *)                                  "'%s'", (unsigned char *)
                                 (*s_sous_objet_1).objet);                                  (*s_sous_objet_1).objet);
   
                           (*s_etat_processus).type_en_cours = NON;
                         recherche_type(s_etat_processus);                          recherche_type(s_etat_processus);
   
                         if ((*s_etat_processus).erreur_execution != d_ex)                          if ((*s_etat_processus).erreur_execution != d_ex)
Line 905  formateur(struct_processus *s_etat_proce Line 932  formateur(struct_processus *s_etat_proce
                             {                              {
                                 if ((strcmp(chaine_fonction, "AND") == 0) ||                                  if ((strcmp(chaine_fonction, "AND") == 0) ||
                                         (strcmp(chaine_fonction, "XOR") == 0) ||                                          (strcmp(chaine_fonction, "XOR") == 0) ||
                                           (strcmp(chaine_fonction, "EQV") == 0) ||
                                         (strcmp(chaine_fonction, "OR") == 0))                                          (strcmp(chaine_fonction, "OR") == 0))
                                 {                                  {
                                     autorisation_parenthese = d_vrai;                                      autorisation_parenthese = d_vrai;
Line 921  formateur(struct_processus *s_etat_proce Line 949  formateur(struct_processus *s_etat_proce
                                         (strcmp(chaine_fonction, "-") == 0) ||                                          (strcmp(chaine_fonction, "-") == 0) ||
                                         (strcmp(chaine_fonction, "AND") == 0) ||                                          (strcmp(chaine_fonction, "AND") == 0) ||
                                         (strcmp(chaine_fonction, "XOR") == 0) ||                                          (strcmp(chaine_fonction, "XOR") == 0) ||
                                           (strcmp(chaine_fonction, "EQV") == 0) ||
                                         (strcmp(chaine_fonction, "OR") == 0))                                          (strcmp(chaine_fonction, "OR") == 0))
                                 {                                  {
                                     autorisation_parenthese = d_vrai;                                      autorisation_parenthese = d_vrai;
Line 1147  formateur(struct_processus *s_etat_proce Line 1176  formateur(struct_processus *s_etat_proce
                             (*(*l_element_courant).donnee).objet)).nom_fonction,                              (*(*l_element_courant).donnee).objet)).nom_fonction,
                             "XOR") == 0) || (strcmp((*((struct_fonction *)                              "XOR") == 0) || (strcmp((*((struct_fonction *)
                             (*(*l_element_courant).donnee).objet)).nom_fonction,                              (*(*l_element_courant).donnee).objet)).nom_fonction,
                               "EQV") == 0) || (strcmp((*((struct_fonction *)
                               (*(*l_element_courant).donnee).objet)).nom_fonction,
                             "AND") == 0))                              "AND") == 0))
                     {                      {
                         if (depilement(s_etat_processus, &((*s_etat_processus)                          if (depilement(s_etat_processus, &((*s_etat_processus)
Line 1191  formateur(struct_processus *s_etat_proce Line 1222  formateur(struct_processus *s_etat_proce
                                 "'%s'", (unsigned char *)                                  "'%s'", (unsigned char *)
                                 (*s_sous_objet_1).objet);                                  (*s_sous_objet_1).objet);
   
                           (*s_etat_processus).type_en_cours = NON;
                         recherche_type(s_etat_processus);                          recherche_type(s_etat_processus);
   
                         if ((*s_etat_processus).erreur_execution != d_ex)                          if ((*s_etat_processus).erreur_execution != d_ex)
Line 1236  formateur(struct_processus *s_etat_proce Line 1268  formateur(struct_processus *s_etat_proce
                             }                              }
   
                             if (((strcmp(chaine_fonction, "OR") == 0) ||                              if (((strcmp(chaine_fonction, "OR") == 0) ||
                                       (strcmp(chaine_fonction, "EQV") == 0) ||
                                     (strcmp(chaine_fonction, "XOR") == 0)) &&                                      (strcmp(chaine_fonction, "XOR") == 0)) &&
                                     (strcmp((*((struct_fonction *)                                      (strcmp((*((struct_fonction *)
                                     (*(*l_element_courant).donnee).objet))                                      (*(*l_element_courant).donnee).objet))
Line 1266  formateur(struct_processus *s_etat_proce Line 1299  formateur(struct_processus *s_etat_proce
                                 "'%s'", (unsigned char *)                                  "'%s'", (unsigned char *)
                                 (*s_sous_objet_2).objet);                                  (*s_sous_objet_2).objet);
   
                           (*s_etat_processus).type_en_cours = NON;
                         recherche_type(s_etat_processus);                          recherche_type(s_etat_processus);
   
                         if ((*s_etat_processus).erreur_execution != d_ex)                          if ((*s_etat_processus).erreur_execution != d_ex)
Line 1311  formateur(struct_processus *s_etat_proce Line 1345  formateur(struct_processus *s_etat_proce
                             }                              }
   
                             if (((strcmp(chaine_fonction, "OR") == 0) ||                              if (((strcmp(chaine_fonction, "OR") == 0) ||
                                       (strcmp(chaine_fonction, "EQV") == 0) ||
                                     (strcmp(chaine_fonction, "XOR") == 0)) &&                                      (strcmp(chaine_fonction, "XOR") == 0)) &&
                                     (strcmp((*((struct_fonction *)                                      (strcmp((*((struct_fonction *)
                                     (*(*l_element_courant).donnee).objet))                                      (*(*l_element_courant).donnee).objet))
Line 2997  formateur(struct_processus *s_etat_proce Line 3032  formateur(struct_processus *s_etat_proce
     }      }
     else if ((*s_objet).type == MTX)      else if ((*s_objet).type == MTX)
     {      {
         if (alsprintf(&chaine, "Mutex $ %016llX owned by $ %016llX",          if (alsprintf(s_etat_processus, &chaine,
                   "Mutex $ %016llX owned by $ %016llX",
                 &((*((struct_mutex *) (*s_objet).objet)).mutex),                  &((*((struct_mutex *) (*s_objet).objet)).mutex),
                 (logical8) (*((struct_mutex *) (*s_objet).objet)).tid) < 0)                  (logical8) (*((struct_mutex *) (*s_objet).objet)).tid) < 0)
         {          {
Line 3262  formateur(struct_processus *s_etat_proce Line 3298  formateur(struct_processus *s_etat_proce
   
             if (chaine == NULL)              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 =                  (*s_etat_processus).erreur_systeme =
                         d_es_allocation_memoire;                          d_es_allocation_memoire;
                 return(NULL);                  return(NULL);
Line 3269  formateur(struct_processus *s_etat_proce Line 3359  formateur(struct_processus *s_etat_proce
   
             strcpy(chaine, chaine_sauvegarde);              strcpy(chaine, chaine_sauvegarde);
             free(chaine_sauvegarde);              free(chaine_sauvegarde);
             strcat(chaine, " ]");              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)
                   * 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);      return(chaine);

Removed from v.1.63  
changed lines
  Added in v.1.96


CVSweb interface <joel.bertrand@systella.fr>