--- rpl/src/instructions_i3.c 2010/04/21 13:45:47 1.8 +++ rpl/src/instructions_i3.c 2012/05/21 17:25:43 1.36 @@ -1,7 +1,7 @@ /* ================================================================================ - RPL/2 (R) version 4.0.15 - Copyright (C) 1989-2010 Dr. BERTRAND Joël + RPL/2 (R) version 4.1.9 + Copyright (C) 1989-2012 Dr. BERTRAND Joël This file is part of RPL/2. @@ -20,7 +20,7 @@ */ -#include "rpl.conv.h" +#include "rpl-conv.h" /* @@ -188,13 +188,9 @@ instruction_inquire(struct_processus *s_ 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, - (struct_fichier *) (*s_objet_argument_2).objet)) == NULL) + (struct_fichier *) (*s_objet_argument_2).objet)) == + NULL) { return; } @@ -206,36 +202,59 @@ instruction_inquire(struct_processus *s_ free(requete); - (*s_etat_processus).erreur_execution = d_ex_erreur_type_fichier; + (*s_etat_processus).erreur_execution = + d_ex_erreur_type_fichier; 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) - { - if (fread(&caractere, sizeof(unsigned char), (size_t) 1, - (*dfichier).descripteur_c) > 0) + fin_fichier = d_vrai; + + while(feof((*dfichier).descripteur_c) == 0) { - if (caractere == '{') + if (fread(&caractere, sizeof(unsigned char), (size_t) 1, + (*dfichier).descripteur_c) > 0) { - fin_fichier = d_faux; - break; + if (caractere == '{') + { + fin_fichier = d_faux; + break; + } } } - } - if (fseek((*dfichier).descripteur_c, position_courante, SEEK_SET) - != 0) + if (fseek((*dfichier).descripteur_c, position_courante, + SEEK_SET) != 0) + { + (*s_etat_processus).erreur_systeme = d_es_erreur_fichier; + return; + } + } + else { - (*s_etat_processus).erreur_systeme = d_es_erreur_fichier; - return; + // Fichier de type FLOW + if (feof((*dfichier).descripteur_c) == 0) + { + fin_fichier = d_faux; + } + else + { + fin_fichier = d_vrai; + } } if (fin_fichier == d_faux)