/* SYNOPSYS : * SYR1_FILE* syr1_fopen(char *name, char *mode); * DESCRIPTION : * gère l'ouverture d'un fichier logique. * PARAMETRES : * name : chaîne de caractères contenant le nom externe du fichier à ouvrir * mode : chaîne de caractères spécifiant le mode d'ouverture ("r" ou "w") * RESULTAT : * La fonction retourne un pointeur sur un Bloc Contrôle Fichier en * cas d'ouverture réussie et NULL en cas d'échec (un message d'erreur est * affiché pour indiquer l'origine de l'erreur). */ SYR1_FILE * syr1_fopen(char *name, char *mode) { int erreur = 0; SYR1_FILE *file = alloc_logical_file(name,mode); if (file != NULL) { if (strcmp(mode,"r")==0) { erreur = syr1_fopen_read(name,file); } else if (strcmp(mode,"w")==0) { erreur = syr1_fopen_write(name,file); } else { erreur =-4; } } if (erreur<0) { free_logical_file(file); return (SYR1_FILE*) NULL; } else { return file; } }
/* SYNOPSYS : * int sys2_fclose_read(SYS2_FILE* file) { * DESCRIPTION : * Ce sous-programme gère la fermeture d'un fichier logique. * PARAMETRES : * file : pointeur sur un Bloc de Contrôle Fichier (BCF) * RESULTAT : * 0 : la fermeture a réussi * -1 : problème pendant la libération du descripteur de fichier logique * (ou le fichier logiques file vaut NULL) */ int sys2_fclose_read(SYS2_FILE* file) { //Check file if(file == NULL) return -1; //Disallocate the buffer free(file->buffer); //Free the file return free_logical_file(file); }
/* SYNOPSYS : * int syr1_fclose_read(SYR1_FILE* file) * DESCRIPTION : * Ce sous-programme gère la fermeture d'un fichier logique. * PARAMETRES : * file : pointeur sur un Bloc de Contrôle Fichier (BCF) * RESULTAT : * 0 : la fermeture a réussi * -1 : problème pendant la libération du descripteur de fichier logique * (ou le fichier logiques file vaut NULL) */ int syr1_fclose_read(SYR1_FILE* file) { //Here we have all the working case if (file != NULL) { return free_logical_file(file); } //If errors return -1; }