Diff for /rpl/src/instructions_r4.c between versions 1.4 and 1.5

version 1.4, 2010/03/04 10:17:52 version 1.5, 2010/03/06 18:29:07
Line 751  instruction_relax(struct_processus *s_et Line 751  instruction_relax(struct_processus *s_et
 void  void
 instruction_rewind(struct_processus *s_etat_processus)  instruction_rewind(struct_processus *s_etat_processus)
 {  {
     file                            *descripteur;      struct_descripteur_fichier      *descripteur;
   
     struct_objet                    *s_objet_argument;      struct_objet                    *s_objet_argument;
   
Line 803  instruction_rewind(struct_processus *s_e Line 803  instruction_rewind(struct_processus *s_e
             return;              return;
         }          }
   
         if (fseek(descripteur, (long) 0, SEEK_SET) != 0)          if ((*descripteur).type == 'C')
           {
               if (fseek((*descripteur).descripteur_c, (long) 0, SEEK_SET) != 0)
               {
                   (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;
                   return;
               }
           }
           else
         {          {
             liberation(s_etat_processus, s_objet_argument);              liberation(s_etat_processus, s_objet_argument);
   
             (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;              (*s_etat_processus).erreur_execution = d_ex_erreur_type_fichier;
             return;              return;
         }          }
     }      }
Line 838  instruction_rewind(struct_processus *s_e Line 846  instruction_rewind(struct_processus *s_e
 void  void
 instruction_read(struct_processus *s_etat_processus)  instruction_read(struct_processus *s_etat_processus)
 {  {
     file                            *descripteur;  
   
     logical1                        indicateur_48;      logical1                        indicateur_48;
     logical1                        presence_chaine;      logical1                        presence_chaine;
     logical1                        presence_indicateur;      logical1                        presence_indicateur;
Line 862  instruction_read(struct_processus *s_eta Line 868  instruction_read(struct_processus *s_eta
   
     struct timespec                 attente;      struct timespec                 attente;
   
       struct_descripteur_fichier      *descripteur;
   
     struct_objet                    *s_objet_adresse;      struct_objet                    *s_objet_adresse;
     struct_objet                    *s_objet_argument;      struct_objet                    *s_objet_argument;
     struct_objet                    *s_objet_resultat;      struct_objet                    *s_objet_resultat;
Line 919  instruction_read(struct_processus *s_eta Line 927  instruction_read(struct_processus *s_eta
   
     if ((*s_objet_argument).type == FCH)      if ((*s_objet_argument).type == FCH)
     {      {
           if ((descripteur = descripteur_fichier(s_etat_processus,
                   (struct_fichier *) (*s_objet_argument).objet)) == NULL)
           {
               return;
           }
   
         /*          /*
          * Vérification des verrous           * Vérification des verrous
          */           */
Line 929  instruction_read(struct_processus *s_eta Line 943  instruction_read(struct_processus *s_eta
         lock.l_len = 0;          lock.l_len = 0;
         lock.l_pid = getpid();          lock.l_pid = getpid();
   
         if ((descripteur = descripteur_fichier(s_etat_processus,          if (fcntl(fileno((*descripteur).descripteur_c), F_GETLK, &lock)
                 (struct_fichier *) (*s_objet_argument).objet)) == NULL)                  == -1)
         {  
             return;  
         }  
   
         if (fcntl(fileno(descripteur), F_GETLK, &lock) == -1)  
         {          {
             liberation(s_etat_processus, s_objet_argument);              liberation(s_etat_processus, s_objet_argument);
   
Line 966  instruction_read(struct_processus *s_eta Line 975  instruction_read(struct_processus *s_eta
         else if ((*((struct_fichier *) (*s_objet_argument).objet)).protection          else if ((*((struct_fichier *) (*s_objet_argument).objet)).protection
                 == 'N')                  == 'N')
         {          {
             if (fflush(descripteur) != 0)              if ((*descripteur).type == 'C')
             {              {
                 (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;                  if (fflush((*descripteur).descripteur_c) != 0)
                 return;                  {
                       (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;
                       return;
                   }
             }              }
         }          }
   
Line 995  instruction_read(struct_processus *s_eta Line 1007  instruction_read(struct_processus *s_eta
                     return;                      return;
                 }                  }
   
                 if ((position_initiale = ftell(descripteur)) == -1)                  BUG(((*descripteur).type != 'C'), uprintf("Bad filtype !\n"));
   
                   if ((position_initiale = ftell((*descripteur).descripteur_c))
                           == -1)
                 {                  {
                     (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;                      (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;
                     return;                      return;
Line 1005  instruction_read(struct_processus *s_eta Line 1020  instruction_read(struct_processus *s_eta
                 {                  {
                     longueur_effective = fread(tampon_lecture,                      longueur_effective = fread(tampon_lecture,
                             (size_t) sizeof(unsigned char), longueur_questure,                              (size_t) sizeof(unsigned char), longueur_questure,
                             descripteur);                              (*descripteur).descripteur_c);
   
                     pointeur = 0;                      pointeur = 0;
                     presence_indicateur = d_faux;                      presence_indicateur = d_faux;
Line 1042  instruction_read(struct_processus *s_eta Line 1057  instruction_read(struct_processus *s_eta
                 presence_chaine = d_faux;                  presence_chaine = d_faux;
                 niveau = 1;                  niveau = 1;
   
                 if (fseek(descripteur, position_finale, SEEK_SET) != 0)                  if (fseek((*descripteur).descripteur_c, position_finale,
                           SEEK_SET) != 0)
                 {                  {
                     liberation(s_etat_processus, s_objet_argument);                      liberation(s_etat_processus, s_objet_argument);
                     free(tampon_lecture);                      free(tampon_lecture);
Line 1055  instruction_read(struct_processus *s_eta Line 1071  instruction_read(struct_processus *s_eta
                 {                  {
                     longueur_effective = fread(tampon_lecture,                      longueur_effective = fread(tampon_lecture,
                             (size_t) sizeof(unsigned char), longueur_questure,                              (size_t) sizeof(unsigned char), longueur_questure,
                             descripteur);                              (*descripteur).descripteur_c);
   
                     pointeur = 0;                      pointeur = 0;
                     presence_indicateur = d_faux;                      presence_indicateur = d_faux;
Line 1119  instruction_read(struct_processus *s_eta Line 1135  instruction_read(struct_processus *s_eta
                     return;                      return;
                 }                  }
   
                 if (fseek(descripteur, position_initiale, SEEK_SET) != 0)                  if (fseek((*descripteur).descripteur_c, position_initiale,
                           SEEK_SET) != 0)
                 {                  {
                     liberation(s_etat_processus, s_objet_argument);                      liberation(s_etat_processus, s_objet_argument);
                     free(tampon_lecture);                      free(tampon_lecture);
Line 1131  instruction_read(struct_processus *s_eta Line 1148  instruction_read(struct_processus *s_eta
                 longueur_effective = fread(tampon_lecture,                  longueur_effective = fread(tampon_lecture,
                         (size_t) sizeof(unsigned char),                          (size_t) sizeof(unsigned char),
                         (size_t) longueur_enregistrement,                          (size_t) longueur_enregistrement,
                         descripteur);                          (*descripteur).descripteur_c);
   
                 if (longueur_effective != longueur_enregistrement)                  if (longueur_effective != longueur_enregistrement)
                 {                  {
Line 1141  instruction_read(struct_processus *s_eta Line 1158  instruction_read(struct_processus *s_eta
   
                 tampon_lecture[longueur_enregistrement] = d_code_fin_chaine;                  tampon_lecture[longueur_enregistrement] = d_code_fin_chaine;
                 tampon = (*s_etat_processus).instruction_courante;                  tampon = (*s_etat_processus).instruction_courante;
                 (*s_etat_processus).instruction_courante = tampon_lecture;  
                   if (((*s_etat_processus).instruction_courante =
                           transliteration(s_etat_processus, tampon_lecture,
                           "UTF-8", d_locale)) == NULL)
                   {
                       liberation(s_etat_processus, s_objet_argument);
                       free(tampon_lecture);
                       return;
                   }
   
                 indicateur_48 = test_cfsf(s_etat_processus, 48);                  indicateur_48 = test_cfsf(s_etat_processus, 48);
                 cf(s_etat_processus, 48);                  cf(s_etat_processus, 48);
   
                 recherche_type(s_etat_processus);                  recherche_type(s_etat_processus);
                   free((*s_etat_processus).instruction_courante);
   
                 if ((*s_etat_processus).erreur_execution != d_ex)                  if ((*s_etat_processus).erreur_execution != d_ex)
                 {                  {

Removed from v.1.4  
changed lines
  Added in v.1.5


CVSweb interface <joel.bertrand@systella.fr>