Example #1
0
med_err
MEDdemonter(med_idt fid,med_idt mid, med_type_donnee type)
{
  med_err ret;
  med_idt root,did;
  char chemin[2*MED_TAILLE_NOM+1];
  char acces_montage[2*MED_TAILLE_NOM+1];

  /*
   * On inhibe le gestionnaire d'erreur HDF
   */
  _MEDmodeErreurVerrouiller();
if (MEDcheckVersion(fid) < 0) return -1;


  /*
   * On accede au type de la donnee
   */
  switch(type) {

  case MED_MAILLAGE :
   strcpy(chemin,MED_MAA);
    break;

  case MED_CHAMP :
    strcpy(chemin,MED_CHA);
    break;

  default :
    return -1;
  }


  /* 
   * On supprime le lien avec les champs|maillages du fichier a demonter 
   */
  chemin[strlen(chemin)-1] = '\0'; 
  if ((ret = _MEDdatagroupLienSupprimer(fid,chemin)) < 0)
    return -1;    

  /*
   * On demonte le fichier dans MED_MNT
   */
  strncpy(acces_montage,MED_MNT,strlen(MED_MNT)-1);
  acces_montage[strlen(MED_MNT)-1] = '\0';
  if ((ret = _MEDfichierDemonter(fid,acces_montage)) < 0)
    return -1;

  /*
   * On ferme le fichier que l'on vient de demonter
   */
  if ((ret = _MEDfichierFermer(mid)) < 0)
    return -1;  

  return ret;
}
Example #2
0
med_err
MEDversionConforme(const char *nom) {
  med_int majeur, mineur;
  med_idt fid, gid;
  med_err ret;

  /*
   * On inhibe le gestionnaire d'erreur HDF
   */
  _MEDmodeErreurVerrouiller();

  /*
   * On ouvre le fichier MED en mode MED_LECT
   */     
  if ((fid = _MEDfichierOuvrir((char *)nom,MED_LECTURE)) < 0)
    return -1;
  
  /*
   * Lecture du numero de version 
   */
  if ((gid = _MEDdatagroupOuvrir(fid,MED_INFOS)) < 0) 
    return -1;
  
  if ((ret = _MEDattrEntierLire(gid,MED_NOM_MAJEUR,&majeur)) < 0)
    return -1;
  
  if ((ret = _MEDattrEntierLire(gid,MED_NOM_MINEUR,&mineur)) < 0)
    return -1;							
  
  /* 
   * On ferme tout 
   */
  if ((ret = _MEDdatagroupFermer(gid)) < 0)
    return -1;
  
  if ((ret = _MEDfichierFermer(fid)) < 0)
    return -1;
 
/* On autorise les versions 2.2.x et 2.3.x , ce qui est le cas depuis  med2.3.1 */ 
  if ((majeur == 2) && (mineur >1) && (mineur<4) )
    return 0;
  else
    return -1;
}
Example #3
0
med_err
MEDfermer(med_idt fid)
{

#ifdef _DEBUG_
   _MEDobjetsOuverts(fid);
#endif

  /*
   * On inhibe le gestionnaire d'erreur
   */
   _MEDmodeErreurVerrouiller();
if (MEDcheckVersion(fid) < 0) return -1;


  /*
   * On ferme le fichier MED
   */
  if (_MEDfichierFermer(fid) < 0)
    return -1;
  else
    return 0;
}
Example #4
0
med_idt
MEDouvrir(char *nom, med_mode_acces mode_acces)
{
  med_idt fid=0; 

  /*
   * On inhibe le gestionnaire d'erreur HDF
   */
  _MEDmodeErreurVerrouiller();

  /*
   * On ouvre le fichier MED sous HDF
   */
  switch(mode_acces)
    {
    case MED_LECTURE :
      if (access(nom,F_OK)) {

	MESSAGE("Impossible d'accéder aux fichier :");
	SSCRUTE(nom);
	return -1;
	
      } else { 
	if ((fid = _MEDfichierOuvrir(nom,mode_acces)) < 0)  return -1;
	/*_MEDsetModeAcces(fid,MED_LECTURE);*/
      };
      break;

    case MED_LECTURE_ECRITURE : 
      if (access(nom,F_OK)) {
	  if ((fid = _MEDfichierCreer(nom,mode_acces)) < 0)
	    return -1;
      } else 
	if ((fid = _MEDfichierOuvrir(nom,mode_acces)) < 0)
	  return -1;
      break;

    case MED_LECTURE_AJOUT    :
      if (access(nom,F_OK))
	{
	  if ((fid = _MEDfichierCreer(nom,mode_acces)) < 0)
	    return -1;
	}
      else 
	if ((fid = _MEDfichierOuvrir(nom,mode_acces)) < 0)
	  return -1;
      break;
      
    case MED_CREATION :
      if ((fid = _MEDfichierCreer(nom,MED_LECTURE_ECRITURE)) < 0)
	return -1;
      break;

    default :
      return -1;
    }

if (MEDcheckVersion(fid) < 0) {
	if (fid >0) _MEDfichierFermer(fid); 
        return -1;
}

  return fid;
}
void _MEDfileObjectsUnmount30(int dummy, ...) {

  med_err _ret = -1;
  char _link[2*MED_NAME_SIZE+1];
/*   char _mountPath[2*MED_NAME_SIZE+1]; */
  char    _mountPath[MED_TAILLE_MNT+2*MED_NAME_SIZE+2]=MED_MNT;

  MED_VARGS_DECL(const, med_idt         , , fid           );
  MED_VARGS_DECL(const, med_idt         , , mid           );
  MED_VARGS_DECL(const, med_class       , , medclass      );
  MED_VARGS_DECL(, med_err *             ,, fret          );

  va_list params;
  va_start(params,dummy);

  MED_VARGS_DEF(const, med_idt         , , fid           );
  MED_VARGS_DEF(const, med_idt         , , mid           );
  MED_VARGS_DEF(const, med_class       , , medclass      );
  MED_VARGS_DEF(, med_err *             ,, fret          );

  _MEDmodeErreurVerrouiller();

  switch(medclass) {

  case MED_MESH :
    strcpy(_link,MED_MAA);
    break;

  case MED_MESH_SUPPORT :
    strcpy(_link,MED_SUP_MAA);
    break;

  case MED_ELSTRUCT :
    strcpy(_link,MED_STRCT);
    break;

  case MED_FAMILY :
    strcpy(_link,MED_FAS);
    break;

  case MED_EQUIVALENCE :
    strcpy(_link,MED_EQS);
    break;

  case MED_JOINT :
    strcpy(_link,MED_JNT);
    break;

  case MED_FIELD :         /* Ajouter aussi MED_CHA_INTERP*/
    strcpy(_link,MED_CHA);
    break;

  case MED_LOCALIZATION :
    strcpy(_link,MED_GAUSS);
    break;

  case MED_PROFILE :
    strcpy(_link,MED_PROFILS);
    break;

  case MED_INTERPOLATION :
    strcpy(_link,MED_JNT);
    break;

  case MED_NUMERICAL_DATA :
    strcpy(_link,MED_NUM_DATA);
    break;

  default :
    goto ERROR;
  }

  /* link destruction in the local file */
  _link[strlen(_link)-1] = '\0';
  if (_MEDdatagroupLienSupprimer(fid,_link) < 0) {
    MED_ERR_(_ret,MED_ERR_ULINK,MED_ERR_FILE,_link);
    goto ERROR;
  }

  /*
   * The file is unmounted
   */
  strcpy(&_mountPath[strlen(_mountPath)-1],_link);

/*   strncpy(_mountPath,MED_MNT,strlen(MED_MNT)-1); */
/*   _mountPath[strlen(MED_MNT)-1] = '\0'; */
  if (_MEDfichierDemonter(fid,_mountPath) < 0) {
    MED_ERR_(_ret,MED_ERR_UMOUNT,MED_ERR_FILE,_mountPath);
    goto ERROR;
  }


  _ret = 0;
 ERROR:

  /*
   * The unmounted file is closed
   */
  if (mid > 0)
    if (_MEDfichierFermer(mid) < 0) {
      MED_ERR_(_ret,MED_ERR_CLOSE,MED_ERR_FILE,"");
      _ret = -1;
  }

  va_end(params);
  *fret = _ret;
  return;
}