Diff for /rpl/src/instructions_r4.c between versions 1.71 and 1.72

version 1.71, 2013/03/01 09:29:30 version 1.72, 2013/03/10 17:01:05
Line 892  instruction_read(struct_processus *s_eta Line 892  instruction_read(struct_processus *s_eta
     struct_liste_chainee            *l_element_courant;      struct_liste_chainee            *l_element_courant;
     struct_liste_chainee            *l_element_courant_format;      struct_liste_chainee            *l_element_courant_format;
     struct_liste_chainee            *l_element_inclus;      struct_liste_chainee            *l_element_inclus;
     struct_liste_chainee            *l_element_suivant;  
   
     struct_objet                    *s_objet_adresse;      struct_objet                    *s_objet_adresse;
     struct_objet                    *s_objet_argument_1;      struct_objet                    *s_objet_argument_1;
     struct_objet                    *s_objet_argument_2;      struct_objet                    *s_objet_argument_2;
     struct_objet                    *s_objet_element;  
     struct_objet                    *s_objet_resultat;      struct_objet                    *s_objet_resultat;
     struct_objet                    *s_objet_type;      struct_objet                    *s_objet_type;
   
Line 909  instruction_read(struct_processus *s_eta Line 907  instruction_read(struct_processus *s_eta
     unsigned char                   *tampon_lecture;      unsigned char                   *tampon_lecture;
     unsigned char                   *tampon;      unsigned char                   *tampon;
     unsigned char                   *tampon2;      unsigned char                   *tampon2;
     unsigned char                   type_enregistrement;  
   
     (*s_etat_processus).erreur_execution = d_ex;      (*s_etat_processus).erreur_execution = d_ex;
   
Line 1948  instruction_read(struct_processus *s_eta Line 1945  instruction_read(struct_processus *s_eta
   
                 BUG(((*descripteur).type != 'C'), uprintf("Bad filtype !\n"));                  BUG(((*descripteur).type != 'C'), uprintf("Bad filtype !\n"));
   
                 if (fread(&type_enregistrement, (size_t) sizeof(unsigned char),                  if ((s_objet_resultat = lecture_fichier_non_formate(
                         1, (*descripteur).descripteur_c) != 1)                          s_etat_processus, (*descripteur).descripteur_c, -1,
                           d_faux)) == NULL)
                 {                  {
                     (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;  
                     return;  
                 }  
   
                 if ((type_enregistrement & 0xF0) != 0x40)  
                 {  
                     // L'enregistrement trouvé n'est pas une liste.  
                     // Tout porte à croire que le fichier est corrompu.  
                     (*s_etat_processus).erreur_execution =  
                             d_ex_fichier_corrompu;  
                     return;                      return;
                 }                  }
   
                 switch(type_enregistrement)                  if (empilement(s_etat_processus,
                 {                          &((*s_etat_processus).l_base_pile),
                     unsigned char       taille_enregistrement[8];                          s_objet_resultat) == d_erreur)
   
                     case 0x48:  
                     {  
                         if (fread(taille_enregistrement,  
                                 (size_t) sizeof(unsigned char),  
                                 1, (*descripteur).descripteur_c) != 1)  
                         {  
                             (*s_etat_processus).erreur_systeme =  
                                     d_es_erreur_fichier;  
                             return;  
                         }  
   
                         longueur_enregistrement = taille_enregistrement[0];  
                         break;  
                     }  
   
                     case 0x49:  
                     {  
                         if (fread(taille_enregistrement,  
                                 (size_t) sizeof(unsigned char),  
                                 2, (*descripteur).descripteur_c) != 2)  
                         {  
                             (*s_etat_processus).erreur_systeme =  
                                     d_es_erreur_fichier;  
                             return;  
                         }  
   
 // A FAIRE conversion de taille_enregistrement en longueur_enregistrement  
                         break;  
                     }  
   
                     case 0x4A:  
                     {  
                         if (fread(taille_enregistrement,  
                                 (size_t) sizeof(unsigned char),  
                                 4, (*descripteur).descripteur_c) != 4)  
                         {  
                             (*s_etat_processus).erreur_systeme =  
                                     d_es_erreur_fichier;  
                             return;  
                         }  
   
 // A FAIRE conversion de taille_enregistrement en longueur_enregistrement  
                         break;  
                     }  
   
                     case 0x4B:  
                     {  
                         if (fread(taille_enregistrement,  
                                 (size_t) sizeof(unsigned char),  
                                 8, (*descripteur).descripteur_c) != 8)  
                         {  
                             (*s_etat_processus).erreur_systeme =  
                                     d_es_erreur_fichier;  
                             return;  
                         }  
   
 // A FAIRE conversion de taille_enregistrement en longueur_enregistrement  
                         break;  
                     }  
   
                     default:  
                     {  
                         longueur_enregistrement = type_enregistrement & 0x07;  
                     }  
                 }  
   
 printf("L=%d\n", longueur_enregistrement);  
                 // La variable longueur_enregistrement contient le nombre  
                 // d'éléments à lire dans le fichier pour générer la liste  
                 // contenant l'enregistrement.  
   
                 if ((s_objet_resultat = allocation(s_etat_processus, LST))  
                         == NULL)  
                 {                  {
                     (*s_etat_processus).erreur_systeme =  
                             d_es_allocation_memoire;  
                     return;                      return;
                 }                  }
   
                 for(i = 0; i < longueur_enregistrement; i++)  
                 {  
                     /* A FAIRE  
                     s_objet_element = decodage_enregistrement(s_etat_processus,  
                             (*descripteur).descripteur_c);  
                             */  
                     s_objet_element = NULL;  
   
                     if (s_objet_element == NULL)  
                     {  
                         liberation(s_etat_processus, s_objet_resultat);  
                         return;  
                     }  
   
                     if ((*s_objet_resultat).objet == NULL)  
                     {  
                         if (((*s_objet_resultat).objet = allocation_maillon(  
                                 s_etat_processus)) == NULL)  
                         {  
                             (*s_etat_processus).erreur_systeme =  
                                     d_es_allocation_memoire;  
                             return;  
                         }  
   
                         (*((struct_liste_chainee *) (*s_objet_resultat).objet))  
                                 .donnee = s_objet_element;  
                         l_element_courant = (*s_objet_resultat).objet;  
                     }  
                     else  
                     {  
                         if ((l_element_suivant = allocation_maillon(  
                                 s_etat_processus)) == NULL)  
                         {  
                             (*s_etat_processus).erreur_systeme =  
                                     d_es_allocation_memoire;  
                             return;  
                         }  
   
                         (*l_element_courant).suivant = l_element_suivant;  
                         (*l_element_suivant).donnee = s_objet_element;  
                         l_element_courant = l_element_suivant;  
                     }  
                 }  
   
                 // On saute les caractère des gestion de la commande  
                 // BACKSPACE.  
                 // A FAIRE  
             }              }
         }          }
         else          else

Removed from v.1.71  
changed lines
  Added in v.1.72


CVSweb interface <joel.bertrand@systella.fr>