Diff for /rpl/src/instructions_i3.c between versions 1.7 and 1.39

version 1.7, 2010/04/07 13:45:06 version 1.39, 2012/12/18 13:19:36
Line 1 Line 1
 /*  /*
 ================================================================================  ================================================================================
   RPL/2 (R) version 4.0.14    RPL/2 (R) version 4.1.12
   Copyright (C) 1989-2010 Dr. BERTRAND Joël    Copyright (C) 1989-2012 Dr. BERTRAND Joël
   
   This file is part of RPL/2.    This file is part of RPL/2.
   
Line 20 Line 20
 */  */
   
   
 #include "rpl.conv.h"  #include "rpl-conv.h"
   
   
 /*  /*
Line 188  instruction_inquire(struct_processus *s_ Line 188  instruction_inquire(struct_processus *s_
                 return;                  return;
             }              }
   
             /*  
              * La fin du fichier renvoyée ne correspond pas à la fin physique  
              * du fichier mais à un défaut d'enregistrement.  
              */  
   
             if ((dfichier = descripteur_fichier(s_etat_processus,              if ((dfichier = descripteur_fichier(s_etat_processus,
                     (struct_fichier *) (*s_objet_argument_2).objet)) == NULL)                      (struct_fichier *) (*s_objet_argument_2).objet)) ==
                       NULL)
             {              {
                 return;                  return;
             }              }
Line 206  instruction_inquire(struct_processus *s_ Line 202  instruction_inquire(struct_processus *s_
   
                 free(requete);                  free(requete);
   
                 (*s_etat_processus).erreur_execution = d_ex_erreur_type_fichier;                  (*s_etat_processus).erreur_execution =
                           d_ex_erreur_type_fichier;
                 return;                  return;
             }              }
   
             if ((position_courante = ftell((*dfichier).descripteur_c)) == -1)              if ((*((struct_fichier *) (*s_objet_argument_2).objet)).binaire
                       != 'F')
             {              {
                 (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;                  /*
                 return;                   * La fin du fichier renvoyée ne correspond pas à la fin
             }                   * physique du fichier mais à un défaut d'enregistrement.
                    */
   
             fin_fichier = d_vrai;                  if ((position_courante = ftell((*dfichier).descripteur_c))
                           == -1)
                   {
                       (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;
                       return;
                   }
   
             while(feof((*dfichier).descripteur_c) == 0)                  fin_fichier = d_vrai;
             {  
                 if (fread(&caractere, sizeof(unsigned char), (size_t) 1,                  while(feof((*dfichier).descripteur_c) == 0)
                         (*dfichier).descripteur_c) > 0)  
                 {                  {
                     if (caractere == '{')                      if (fread(&caractere, sizeof(unsigned char), (size_t) 1,
                               (*dfichier).descripteur_c) > 0)
                     {                      {
                         fin_fichier = d_faux;                          if (caractere == '{')
                         break;                          {
                               fin_fichier = d_faux;
                               break;
                           }
                     }                      }
                 }                  }
             }  
   
             if (fseek((*dfichier).descripteur_c, position_courante, SEEK_SET)                  if (fseek((*dfichier).descripteur_c, position_courante,
                     != 0)                          SEEK_SET) != 0)
                   {
                       (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;
                       return;
                   }
               }
               else
             {              {
                 (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;                  // Fichier de type FLOW
                 return;                  if (feof((*dfichier).descripteur_c) == 0)
                   {
                       fin_fichier = d_faux;
                   }
                   else
                   {
                       fin_fichier = d_vrai;
                   }
             }              }
   
             if (fin_fichier == d_faux)              if (fin_fichier == d_faux)

Removed from v.1.7  
changed lines
  Added in v.1.39


CVSweb interface <joel.bertrand@systella.fr>