--- rpl/src/instructions_i3.c 2011/11/26 10:01:29 1.30 +++ rpl/src/instructions_i3.c 2011/12/05 17:45:00 1.31 @@ -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. + */ + + if ((position_courante = ftell((*dfichier).descripteur_c)) + == -1) + { + (*s_etat_processus).erreur_systeme = d_es_erreur_fichier; + return; + } - fin_fichier = d_vrai; + fin_fichier = d_vrai; - while(feof((*dfichier).descripteur_c) == 0) - { - if (fread(&caractere, sizeof(unsigned char), (size_t) 1, - (*dfichier).descripteur_c) > 0) + 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)