Esempio n. 1
0
/* 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;
  }
}
Esempio n. 2
0
/* 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);
}
Esempio n. 3
0
/* 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;
}