コード例 #1
0
ファイル: medconforme.c プロジェクト: mndjinga/CDMATH
int main(int argc, char *argv[]) {
  med_idt  fid    =0;
  med_int  majeur =0, mineur=0, release=0;
  med_err  ret    =-1;
  med_bool hdfok     =MED_FALSE;
  med_bool medok     =MED_FALSE;
  med_bool fileexist =MED_FALSE;
  med_bool accessok  =MED_FALSE;

  if (argc != 2) {
    fprintf(stdout,">> Utilisation : medconforme <nom_de_fichier_med> \n");
    return 0;
  }

  /*
   * Quelle version de la bibliotheque MED est utilisee ?
   */
  ret=MEDlibraryNumVersion(&majeur, &mineur, &release);
  EXIT_IF( ret<0 , "Erreur d'appel de la routine MEDlibraryNumVersion.", NULL);
  fprintf(stdout,"- Version de MED-fichier utilisée par medconforme : "IFORMAT"."IFORMAT"."IFORMAT" \n",majeur,mineur,release); 

  /*
   * Le fichier à lire est-il accessible ?
   */
  ret = MEDfileExist(argv[1],MED_ACC_RDONLY,&fileexist,&accessok );
  MED_ERR_EXIT_IF(ret < 0 , MED_ERR_CALL,MED_ERR_API,"MEDfileExist");
  if ( !fileexist ) {  fprintf(stdout,"- Le fichier [%s] n'existe pas \n",argv[1]); goto SORTIE; }
  if ( !accessok  ) {  fprintf(stdout,"- Le fichier [%s] n'est pas accessible en lecture \n",argv[1]); goto SORTIE; }
  
  /*
   * Le fichier à lire est-il au bon format de fichier HDF ?
   */
  ret=MEDfileCompatibility(argv[1],&hdfok,&medok);
  MED_ERR_EXIT_IF(ret < 0 , MED_ERR_CALL,MED_ERR_API,"MEDfileCompatibility");
  if ( hdfok ) fprintf(stdout,"- Format HDF du fichier MED [%s] conforme au format HDF utilisé par la bibliothèque \n",argv[1]);
  else       { fprintf(stdout,"- Format HDF du fichier MED [%s] non conforme au format HDF utilisé par la bibliothèque \n",argv[1]); goto SORTIE; }

  /*
   * Le fichier à lire a-t-il été créé avec une version de la bilbiothèque MED conforme avec celle utilisée ?
   * (Numéros majeur identique et mineur de la bibliothèque supérieur à celui du fichier).
   */
  if ( medok ) {
    fprintf(stdout,"- Version MED du fichier [%s] conforme a la bibliothèque MED utilisée \n",argv[1]);

    if ((fid = MEDfileOpen(argv[1],MED_ACC_RDONLY)) < 0) {
      MED_ERR_(ret,MED_ERR_OPEN,MED_ERR_FILE,argv[1]);
      goto ERROR;
    }
    
    /*
     * Une fois le fichier ouvert on peut avoir acces au numero de version complet
     */
    if ( MEDfileNumVersionRd(fid, &majeur, &mineur, &release) < 0 ) {
      MED_ERR_(ret,MED_ERR_CALL,MED_ERR_API,"MEDfileNumVersionRd");
      goto ERROR;
    }
    fprintf(stdout,"- Ce fichier a ete créé avec MED-fichier V"IFORMAT"."IFORMAT"."IFORMAT" \n",majeur,mineur,release);

  }
  else
    fprintf(stdout,"- Version MED du fichier [%s] non conforme avec celle de la bibliothèque utilisée \n",argv[1]); 

 SORTIE:
  ret = 0;
 ERROR:
  
  if (fid > 0)
    if (MEDfileClose(fid) < 0) {
      MED_ERR_(ret,MED_ERR_CLOSE,MED_ERR_FILE,argv[1]);
      ret = -1;
    }

  return ret;
}
コード例 #2
0
ファイル: test18.c プロジェクト: PROJECT-CDMATH/CDMATH
int main (int argc, char **argv)

{
  med_idt   fid=0;
  med_int   majeur=0, mineur=0, release=0;
  med_bool  hdfok=MED_FALSE,medok=MED_FALSE;
  char      medversion[MED_SNAME_SIZE+1]="";

  /* Creation du fichier test18.med */
  if ((fid = MEDfileOpen("test18.med",MODE_ACCES)) < 0) {
    MESSAGE("Erreur a la creation du fichier test18.med");
    return -1;
  }
  fprintf(stdout,"- Creation du fichier test18.med \n");

  if (MEDfileClose(fid) < 0) {
    MESSAGE("Erreur a la fermeture du fichier");
    return -1;
  }
  fprintf(stdout,"- Fermeture du fichier \n");

  /*
   * Quelle version de la bibliotheque MED est utilisee ?
   */
  MEDlibraryNumVersion(&majeur, &mineur, &release);
  fprintf(stdout,"- Version de MED utilisee pour lire le fichier : "IFORMAT"."IFORMAT"."IFORMAT" \n",majeur,mineur,release); 
  /*
   * Le fichier à lire est-il au bon format de fichier HDF ?
   */
  if (MEDfileCompatibility("test18.med",&hdfok,&medok)<0 ) {
    MESSAGE("Erreur à la vérification de la compatibilité du fichier avec les bibliothèques med et hdf.");
    return -1;
  }
  if ( hdfok )
    fprintf(stdout,"- Format HDF du fichier MED conforme au format HDF utilise par la bibliotheque \n");
  else
    fprintf(stdout,"- Format HDF du fichier MED non conforme au format HDF utilise par la bibliotheque \n");

  /*
   * Le fichier a lire a-t-il été créé avec une version de la bibliothèque MED conforme avec celle utilise ?
   * (Numéros majeur et mineur identiques).
   */
  if ( medok)
    fprintf(stdout,"- Version MED du fichier conforme a la bibliotheque MED utilisee \n");
  else
    fprintf(stdout,"- Version MED du fichier non conforme a la bibliotheque MED utilisee \n");

  if ((fid = MEDfileOpen("test18.med",MED_ACC_RDONLY)) < 0) {
    MESSAGE("Erreur a l'ouverture du fichier test18.med");
    return -1;
  }
  fprintf(stdout,"- Ouverture du fichier en lecture \n");

  /*
   * Une fois le fichier ouvert on peut avoir acces au numero de version complet
   */
  if (MEDfileNumVersionRd(fid, &majeur, &mineur, &release) < 0) {
    MESSAGE("Erreur a la lecture du numero de version de la bibliothèque ");
    return -1;
  }
  fprintf(stdout,"- Ce fichier a ete cree avec MED "IFORMAT"."IFORMAT"."IFORMAT" \n",majeur,mineur,release); 

  if ( MEDfileStrVersionRd(fid, medversion) < 0 ) {
    MESSAGE("Erreur à la lecture de la version du fichier MED");
    return -1;
  }
  fprintf(stdout,"- Ce fichier a ete cree avec %s\n",medversion);

  if (MEDfileClose(fid) < 0) {
    MESSAGE("Erreur a la fermeture du fichier");
    return -1;
  }
  fprintf(stdout,"- Fermeture du fichier \n");

  return 0;
}