med_err MEDequivalenceInfo(const med_idt fid, const char * const meshname, const int equivit, char * const equivname, char * const equivdescription, med_int * const nstep, med_int * const nocstpncorrespondence ) { char * name = "_MEDequivalenceInfo"; int dummy=0; med_err fret=-1; med_int majeur, mineur, release; MedFuncType func; MEDfileNumVersionRd(fid, &majeur, &mineur, &release); func = _MEDversionedApi3(name,majeur,mineur,release); if ( func != (MedFuncType) NULL ) func (dummy, fid, meshname, equivit, equivname, equivdescription, nstep, nocstpncorrespondence, &fret); return fret; }
med_err MEDparameterValueRd(const med_idt fid, const char* const paramname, const med_int numdt, const med_int numit, unsigned char* const value) { char * name = "_MEDparameterValueRd"; int dummy=0; med_err fret=-1; med_int majeur, mineur, release; MedFuncType func; MEDfileNumVersionRd(fid, &majeur, &mineur, &release); func = _MEDversionedApi3(name,majeur,mineur,release); if ( func != (MedFuncType) NULL ) func (dummy, fid, paramname, numdt, numit, value, &fret); return fret; }
med_int _MEDfield23nValue (const med_idt fid, const char * const fieldname,const med_int numdt,const med_int numit, const med_entity_type entitytype, const med_geometry_type geotype, const char * const meshname, char * const profilename,const int profileit, const med_storage_mode storagemode,med_int * const profilesize, char * const localizationname, med_int * const nintegrationpoint ) { char * name = "_MEDfield23nValue"; int dummy=0; med_int fret=-1; med_int majeur, mineur, release; MedFuncType func; MEDfileNumVersionRd(fid, &majeur, &mineur, &release); func = _MEDversionedApi3(name,majeur,mineur,release); if ( func != (MedFuncType) NULL ) func (dummy, fid, fieldname, numdt, numit, entitytype, geotype, meshname, profilename, profileit, storagemode, profilesize, localizationname, nintegrationpoint, &fret); return fret; }
med_err MEDsubdomainJointInfo(const med_idt fid, const char * const localmeshname, const int jointit, char * const jointname, char * const description, med_int * const domainnumber, char * const remotemeshname, med_int * const nstep, med_int * const nocstpncorrespondence) { char * name = "_MEDsubdomainJointInfo"; int dummy=0; med_err fret=-1; med_int majeur, mineur, release; MedFuncType func; MEDfileNumVersionRd(fid, &majeur, &mineur, &release); func = _MEDversionedApi3(name,majeur,mineur,release); if ( func != (MedFuncType) NULL ) func (dummy, fid, localmeshname, jointit, jointname, description, domainnumber, remotemeshname, nstep, nocstpncorrespondence, &fret); return fret; }
EVersion GetVersionId(const std::string& theFileName, bool theDoPreCheckInSeparateProcess) { INITMSG(MYDEBUG,"GetVersionId - theFileName = '"<<theFileName<<"'"<<std::endl); EVersion aVersion = eVUnknown; #ifndef WIN32 if (access(theFileName.c_str(),F_OK)) return aVersion; if(theDoPreCheckInSeparateProcess){ // First check, is it possible to deal with the file std::ostringstream aStr; // File name is in quotes for the case of space(s) inside it (PAL13009) aStr<<"bash -c \""<<getenv("SMESH_ROOT_DIR")<<"/bin/salome/mprint_version \'"<<theFileName<<"\'\""; if(!MYDEBUG) aStr<<" 2>&1 > /dev/null"; std::string aCommand = aStr.str(); int aStatus = system(aCommand.c_str()); BEGMSG(MYDEBUG,"aCommand = '"<<aCommand<<"'; aStatus = "<<aStatus<<std::endl); if(aStatus != 0) return aVersion; } #endif // check compatibility of hdf and med versions med_bool hdfok, medok; MEDfileCompatibility(theFileName.c_str(), &hdfok, &medok); if ((!hdfok) /*|| (!medok)*/) // med-2.1 is KO since med-3.0.0 return aVersion; // Next, try to open the file trough the MED API const char* aFileName = theFileName.c_str(); med_idt aFid = MEDfileOpen(aFileName,MED_ACC_RDONLY); MSG(MYDEBUG,"GetVersionId - theFileName = '"<<theFileName<<"'; aFid = "<<aFid<<std::endl); if(aFid >= 0){ med_int aMajor, aMinor, aRelease; med_err aRet = MEDfileNumVersionRd(aFid,&aMajor,&aMinor,&aRelease); INITMSG(MYDEBUG,"GetVersionId - theFileName = '"<<theFileName<<"'; aRet = "<<aRet<<std::endl); if(aRet >= 0){ if(aMajor == 2 && aMinor == 1) aVersion = eV2_1; else aVersion = eV2_2; } else { // VSR: simulate med 2.3.6 behavior, med file version is assumed to 2.1 aVersion = eV2_1; } } MEDfileClose(aFid); BEGMSG(MYDEBUG,"GetVersionId - theFileName = '"<<theFileName<<"'; aVersion = "<<aVersion<<std::endl); return aVersion; }
med_err MEDfield23ValueWithProfileRd(const med_idt fid, const char* const fieldname, const med_int numdt, const med_int numit, const med_entity_type entitype, const med_geometry_type geotype, const char* const meshname, const med_storage_mode storagemode, const char * const profilename, const med_switch_mode switchmode, const med_int componentselect, unsigned char* const value) { char * name = "_MEDfieldValueAdvancedRd"; int dummy=0; med_err fret=-1; med_int majeur=0, mineur=0, release=0; MedFuncType func; /* ISCRUTE((*filter).nentity ); */ /* ISCRUTE((*filter).nvaluesperentity ); */ /* ISCRUTE((*filter).nconstituentpervalue ); */ /* ISCRUTE((*filter).constituentselect ); */ /* ISCRUTE((*filter).switchmode ); */ /* ISCRUTE((*filter).filterarraysize ); */ /* ISCRUTE((*filter).profilearraysize ); */ /* ISCRUTE((*filter).storagemode ); */ /* SSCRUTE((*filter).profilename ); */ MEDfileNumVersionRd(fid, &majeur, &mineur, &release); func = _MEDversionedApi3(name,majeur,mineur,release); if ( func != (MedFuncType) NULL ) func (dummy, fid, fieldname, numdt, numit, entitype, geotype, meshname, storagemode, profilename, switchmode, componentselect, NULL, value, &fret); return fret; }
med_int nmfifnvr(const med_idt const *fid, med_int* const major, med_int* const minor, med_int* const release) #endif { med_int _ret; _ret = (med_int) MEDfileNumVersionRd(*fid,major,minor,release); return(_ret); }
med_int MEDnFamily(const med_idt fid, const char * const meshname) { char * name = "_MEDnFamily"; int dummy=0; med_int fret=-1; med_int majeur, mineur, release; MedFuncType func; MEDfileNumVersionRd(fid, &majeur, &mineur, &release); func = _MEDversionedApi3(name,majeur,mineur,release); if ( func != (MedFuncType) NULL ) func (dummy, fid, meshname , &fret); return fret; }
med_int MEDmeshnAxisByName (const med_idt fid, const char * const meshname) { char * name = "_MEDmeshnAxisByName"; int dummy=0; med_int fret=-1; med_int majeur, mineur, release; med_bool isasupportmesh = MED_FALSE; MedFuncType func; MEDfileNumVersionRd(fid, &majeur, &mineur, &release); func = _MEDversionedApi3(name,majeur,mineur,release); if ( func != (MedFuncType) NULL ) func (dummy, fid, meshname, isasupportmesh, &fret); return fret; }
bool getMEDVersion( const std::string& fname, int& major, int& minor, int& release ) { med_idt f = MEDfileOpen(fname.c_str(), MED_ACC_RDONLY ); if( f<0 ) return false; med_int aMajor, aMinor, aRelease; med_err aRet = MEDfileNumVersionRd( f, &aMajor, &aMinor, &aRelease ); major = aMajor; minor = aMinor; release = aRelease; MEDfileClose( f ); if( aRet<0 ) { // VSR: simulate med 2.3.6 behavior, med file version is assumed to 2.1 major = 2; minor = release = -1; //return false; } return true; }
med_err MEDfileCommentRd(const med_idt fid, char* const comment) { char * name = "_MEDfileCommentRd"; int dummy=0; med_err fret=-1; med_int majeur, mineur, release; MedFuncType func; _MEDmodeErreurVerrouiller(); MEDfileNumVersionRd(fid, &majeur, &mineur, &release); func = _MEDversionedApi3(name,majeur,mineur,release); if ( func != (MedFuncType) NULL ) func (dummy, fid, comment, &fret); return fret; }
med_int MEDfield23nProfile(const med_idt fid, const char * const fieldname, const med_int numdt, const med_int numit, const med_entity_type entitype, const med_geometry_type geotype, const int meshit, char * const meshname, char * const defaultprofilename, char * const defaultlocalizationname) { char * name = "_MEDfield23nProfile"; int dummy=0; med_int fret=-1; med_int majeur, mineur, release; MedFuncType func; meshname[0]='\0'; defaultprofilename[0]='\0'; defaultlocalizationname[0]='\0'; MEDfileNumVersionRd(fid, &majeur, &mineur, &release); func = _MEDversionedApi3(name,majeur,mineur,release); if ( func != (MedFuncType) NULL ) func (dummy, fid, fieldname, numdt, numit, entitype, geotype, meshit, meshname, defaultprofilename, defaultlocalizationname, &fret); return fret; }
med_err MEDmeshUniversalNameRd(const med_idt fid, const char * const meshname, char * const univname ) { char * name = "_MEDmeshUniversalNameRd"; int dummy=0; med_err fret=-1; med_int majeur, mineur, release; MedFuncType func; MEDfileNumVersionRd(fid, &majeur, &mineur, &release); func = _MEDversionedApi3(name,majeur,mineur,release); if ( func != (MedFuncType) NULL ) func (dummy, fid, meshname, univname , &fret); return fret; }
med_idt MEDfileObjectsMount(const med_idt fid, const char* const mountfilename, const med_class medclass ) { char * name = "_MEDfileObjectsMount"; int dummy=0; med_idt fret=-1; med_int majeur, mineur, release; MedFuncType func; MEDfileNumVersionRd(fid, &majeur, &mineur, &release); func = _MEDversionedApi3(name,majeur,mineur,release); if ( func != (MedFuncType) NULL ) func (dummy, fid, 0, mountfilename, medclass, &fret); return fret; }
int MEDimport(char * filein, char * fileout) { med_idt fid, gid; med_err ret; med_int majeur, mineur, release; med_bool hdfok=MED_FALSE; med_bool medok=MED_FALSE; char *_fileout,*tmp=NULL; int _fileoutsize; bool hasfileout=false; char *commande; med_int nprofil; char chemin_profils[MED_TAILLE_PROFILS+1]; char chemin_liens[MED_TAILLE_LIENS+1]; char version[9]; int MAJ_21_22 = 0, MAJ_231_232 = 0, MAJ_236_300 = 0, MAJ_300_310 = 0, MAJ_310_320 = 0 ; #ifdef PPRO_NT char *drive, *dir, *ext; #endif unsigned char reponse='o'; med_bool _noversion=MED_FALSE; EXIT_IF(filein == NULL,"Le nom du fichier d'entrée est vide : ", filein); hasfileout = strcmp(fileout,""); if ( hasfileout ) { _fileoutsize = strlen(fileout); _fileout = fileout; } else { _fileoutsize = strlen(filein)+strlen(PACKAGE_VERSION); tmp = (char *) malloc(sizeof(char)*(_fileoutsize+1)); strcpy(tmp,filein); strcat(tmp,PACKAGE_VERSION); #ifdef PPRO_NT _splitpath( tmp, drive, dir, _fileout, ext ); #else _fileout = basename(tmp); #endif _fileoutsize = strlen(_fileout); } /* Test du format du fichier */ ret = MEDfileCompatibility(filein,&hdfok,&medok); if (ret < 0 ) { fprintf(stdout,">>> Attention le fichier %s ne contient pas de numéro de version. \n",filein); fprintf(stdout,">>> Le fichier %s est supposé être en version 2.1.1. \n",filein); /* PAs d'interactif dans une bibliothèque !*/ /* fprintf(stdout,">>> Voulez-vous essayer une conversion d'un fichier < 2.2 (o/n) ? "); */ /* scanf("%c",&reponse); */ if ( (reponse != 'o') && (reponse != 'O') && (reponse != 'y') && (reponse != 'Y') ) { EXIT_IF(MEDfileCompatibility(filein,&hdfok,&medok) < 0, "Erreur d'appel de MEDfileCompatibility : ", filein); } _noversion = MED_TRUE; } EXIT_IF( !hdfok , "Le fichier d'entrée n'est pas dans un format HDF compatible : ", filein); /* EXIT_IF( !medok , */ /* "MEDimport ne gère pas le format MED de ce fichier : ", filein); */ /* Creation et ouverture du fichier que l'on va convertir au format MED actuel */ commande = (char *) malloc(sizeof(char)*(strlen("cp ")+strlen(filein)+ strlen(" ")+_fileoutsize + 4 +1 ) ); EXIT_IF(commande == NULL,NULL,NULL); strcpy(commande,"cp \""); strcat(commande,filein); strcat(commande,"\" \""); strcat(commande,_fileout); strcat(commande,"\""); fprintf(stdout,">>> Creation du fichier %s : %s \n",_fileout,commande); system(commande); free(commande); commande = (char *) malloc(sizeof(char)*(strlen("chmod u+w \"") + _fileoutsize +1 +1 ) ); EXIT_IF(commande == NULL,NULL,NULL); strcpy(commande,"chmod u+w \""); strcat(commande,_fileout); strcat(commande,"\""); fprintf(stdout,">>> Chmod +w du fichier %s : %s \n",_fileout,commande); system(commande); free(commande); fid = MEDfileOpen(_fileout,MED_ACC_RDWR); EXIT_IF(fid < 0,"Ouverture du fichier : ", _fileout); /* Verification du numero de version */ if (! _noversion) ret = MEDfileNumVersionRd(fid,&majeur,&mineur,&release); else { ret=0; majeur=2; mineur=1; release=1; } sprintf(version, IFORMAT"_"IFORMAT"_"IFORMAT, majeur, mineur, release); EXIT_IF(ret < 0,"Lecture du numero de version de MED-fichier",NULL); if (strcmp(version, "2_2_0") < 0) MAJ_21_22 = 1; if (strcmp(version, "2_3_2") < 0) MAJ_231_232 = 1; if (strcmp(version, "3_0_0") < 0) MAJ_236_300 = 1; if (strcmp(version, "3_1_0") < 0) MAJ_300_310 = 1; if (strcmp(version, "3_2_0") < 0) MAJ_310_320 = 1; /* Ne pas oublier que la version cible du fichier à convertir est celui de la bibliothèque. */ if (MAJ_310_320 == 0) { fprintf(stdout,"Le fichier %s est déjà au bon format !!! \n",_fileout); ret = MEDfileClose(fid); EXIT_IF(ret < 0,"Fermeture du fichier",filein); return 0; } /* On avertit qu'on commence la conversion */ fprintf(stdout,">>> Lancement de la normalisation du fichier selon le format " PACKAGE_VERSION " ...\n"); /* On inhibe le gestionnaire d'erreur HDF5 */ _MEDmodeErreurVerrouiller(); /* Mise a jour du numero de version */ fprintf(stdout,"- Lancement de la mise à jour du numéro de version ... \n"); /* La mise à jour MAJ_version(fid); doit être différée pour que les majs des fichiers anciens fonctionnent correctement*/ /* MAJ_version(fid); */ MAJ_write_version_num(fid,2,3,6); fprintf(stdout," Numéro de version : ... OK ... \n"); if (MAJ_21_22) { /* Mise a jour des maillages : type = MED_NON_STRUCTURE, description, ... */ fprintf(stdout,"- Lancement de la mise à jour des maillages (21_22)... \n"); MAJ_21_22_maillages(fid); fprintf(stdout," Maillage(s) : ... OK ...\n"); /* Mise a jour des champs */ fprintf(stdout,"- Lancement de la mise à jour des champs de résultats (21_22)... \n"); MAJ_21_22_champs(fid); fprintf(stdout," Champs(s) : ... OK ...\n"); /* Mise a jour des profils eventuels */ nprofil = MEDnProfil(fid); if (nprofil > 0) { fprintf(stdout,"- Lancement de la mise à jour des profils (21_22)... \n"); MAJ_21_22_profils(fid,nprofil); fprintf(stdout," Profils(s) : ... OK ...\n"); } else { strncpy(chemin_profils,MED_PROFILS,MED_TAILLE_PROFILS-1); chemin_profils[MED_TAILLE_PROFILS-1] = '\0'; gid = _MEDdatagroupCreer(fid,chemin_profils); EXIT_IF(gid < 0,"Creation du groupe HDF sur les profils",chemin_profils); ret = _MEDdatagroupFermer(gid); EXIT_IF(ret < 0,"Fermeture du groupe HDF sur les profils",chemin_profils); } /* On cree le groupe HDF pour les liens */ strncpy(chemin_liens,MED_LIENS,MED_TAILLE_LIENS-1); chemin_liens[MED_TAILLE_LIENS-1] = '\0'; gid = _MEDdatagroupCreer(fid,chemin_liens); EXIT_IF(gid < 0,"Creation du groupe HDF sur les liens",chemin_liens); ret = _MEDdatagroupFermer(gid); EXIT_IF(ret < 0,"Fermeture du groupe HDF sur les liens",chemin_liens); } if (MAJ_231_232) { /* Mise a jour des champs */ fprintf(stdout,"- Lancement de la mise à jour des champs de résultats (231_232)... \n"); MAJ_231_232_champs(fid); fprintf(stdout," Champs(s) : ... OK ...\n"); fprintf(stdout,"- Lancement de la mise à jour des noms de maillages (231_232)... \n"); MAJ_231_232_maillages(fid); fprintf(stdout," Noms(s) de maillage(s): ... OK ...\n"); } if (MAJ_236_300) { /* Le système de cache de version a été developpé à partir de la 3.0*/ /* Initialise le cache sur une 2.3.6 (cas d'absence d'INFO)*/ _MEDfileVersion(fid); /* Mise a jour des champs */ fprintf(stdout,"- Lancement de la mise à jour des champs de résultats (236_300)... \n"); MAJ_236_300_champs(fid); fprintf(stdout," Champs(s) : ... OK ...\n"); /* MAJ_version(fid); */ fprintf(stdout,"- Lancement de la mise à jour des maillages (236_300)... \n"); MAJ_236_300_maillages(fid); fprintf(stdout," Maillage(s): ... OK ...\n"); /* MAJ_version(fid); */ } if (MAJ_300_310) { /* Le système de cache de version a été developpé à partir de la 3.0*/ /* Initialise le cache sur une 3.0.8 (cas d'absence d'INFO)*/ /* s'il n'a pas déjà été instanciée ds les MAJ précédentes */ MAJ_write_version_num(fid,3,0,8); _MEDfileVersion(fid); /* Si le cache était dèjà instancié, met à jour le cache */ MAJ_version_num(fid,3,0,8); /* Mise a jour des champs */ fprintf(stdout,"- Lancement de la mise à jour des champs de résultats (300_310) ... \n"); MAJ_300_310_champs(fid); fprintf(stdout," Champs(s) : ... OK ...\n"); } if (MAJ_310_320) { /* Le système de cache de version a été developpé à partir de la 3.0*/ /* Initialise le cache sur une 3.0.8 (cas d'absence d'INFO)*/ /* s'il n'a pas été déjà été instanciée ds les MAJ_ précédentes */ MAJ_write_version_num(fid,3,1,0); _MEDfileVersion(fid); /* Si le cache était dèjà instancié, met à jour le cache */ MAJ_version_num(fid,3,1,0); /* Mise a jour des familles/groupes */ fprintf(stdout,"- Lancement de la mise à jour des familles/groupes (310_320) ... \n"); MAJ_310_320_familles(fid); fprintf(stdout," Famille(s)/Groupe(s) : ... OK ...\n"); } /* A l'écriture d'une nouvelle version de MAJ ex 310_320, il est necessaire de revisiter les appels à MAJ_version(fid) pour les remplacer par les appels MAJ_version(fid,3,1,Lastest31z) */ MAJ_version(fid); MAJ_write_version_num(fid,MED_NUM_MAJEUR,MED_NUM_MINEUR,MED_NUM_RELEASE); /* Fermeture du fichier */ ret = MEDfileClose(fid); EXIT_IF(ret < 0,"Fermeture du fichier",_fileout); /* On avertit que c'est fini */ fprintf(stdout,">>> Conversion du fichier %s au format MED V" PACKAGE_VERSION " terminée\n", _fileout); /* On libere la memoire */ if (!hasfileout) free(tmp); return 0; }
void _MEDfileObjectsMount236(int dummy,...) { med_idt _ret = -1; med_idt _id, _rootId=0; char _mountPath[2*MED_NAME_SIZE+1]; char _link[MED_NAME_SIZE+1]; med_access_mode _accessMode; med_int majeur=0, mineur=0, release=0; med_int rfileversionMMR,rfileversionMM,rfileversionM; med_int lfileversionMMR,lfileversionMM,lfileversionM; med_bool _datagroupexist=MED_FALSE,_isasoftlink=MED_FALSE; MED_VARGS_DECL(const, med_idt , , fid ); MED_VARGS_DECL(const, med_idt , , gid ); MED_VARGS_DECL(const, char* , const , mountfilename ); MED_VARGS_DECL(const, med_class , , medclass ); MED_VARGS_DECL(, med_idt * ,, fret ); va_list params; va_start(params,dummy); MED_VARGS_DEF(const, med_idt , , fid ); MED_VARGS_DEF(const, med_idt , , gid ); MED_VARGS_DEF(const, char* , const , mountfilename ); MED_VARGS_DEF(const, med_class , , medclass ); MED_VARGS_DEF(, med_idt * ,, fret ); _MEDmodeErreurVerrouiller(); if ( MEDfileNumVersionRd(fid, &majeur, &mineur, &release) < 0) { MED_ERR_(_ret,MED_ERR_CALL,MED_ERR_API,"MEDfileNumVersionRd"); ISCRUTE(majeur);ISCRUTE(mineur);ISCRUTE(release); goto ERROR; } lfileversionM = 100*majeur; lfileversionMM = 100*majeur+10*mineur; lfileversionMMR = lfileversionMM+release; /* * does the file exist ? */ if (access(mountfilename,F_OK)) { MED_ERR_(_ret,MED_ERR_EXIST,MED_ERR_FILE,mountfilename); goto ERROR; } if ( (_accessMode = (med_access_mode)_MEDmodeAcces(fid) ) == MED_ACC_UNDEF ) { MED_ERR_(_ret,MED_ERR_ACCESS,MED_ERR_FILE,""); ISCRUTE_int(_accessMode); goto ERROR; } /* * Open the file "mountfilename". */ if ((_id = _MEDfileOpen(mountfilename,_accessMode)) < 0) { MED_ERR_(_ret,MED_ERR_OPEN,MED_ERR_FILE,mountfilename); goto ERROR; } if ( MEDfileNumVersionRd(_id, &majeur, &mineur, &release) < 0 ) { MED_ERR_(_ret,MED_ERR_CALL,MED_ERR_API,"MEDfileNumVersionRd"); SSCRUTE(mountfilename);ISCRUTE(majeur);ISCRUTE(mineur); ISCRUTE(release); goto ERROR; } rfileversionM = 100*majeur; rfileversionMM = 100*majeur+10*mineur; rfileversionMMR = rfileversionMM+release; if ( !( ( (rfileversionMM >= 220) && (lfileversionMM >= 220) && (rfileversionMMR <= 236) && (lfileversionMMR <= 236) ) ) ){ MED_ERR_(_ret,MED_ERR_INVALID,MED_ERR_FILE,mountfilename); ISCRUTE(rfileversionMMR);ISCRUTE(lfileversionMMR); goto ERROR; } /* * Mount point creation in the local file */ _rootId = _MEDdatagroupOuvrir(fid,MED_MNT); if (_rootId < 0) if ((_rootId = _MEDdatagroupCreer(fid,MED_MNT)) < 0) { MED_ERR_(_ret,MED_ERR_OPEN,MED_ERR_FILE,MED_MNT); goto ERROR; } /* * The file "mountfilename" is mounted in the local file */ strncpy(_mountPath,MED_MNT,strlen(MED_MNT)-1); _mountPath[strlen(MED_MNT)-1] = '\0'; if (_MEDfichierMonter(fid,_mountPath,_id) < 0) { MED_ERR_(_ret,MED_ERR_MOUNT,MED_ERR_FILE,mountfilename); goto ERROR; } /* * Give access to the class object in the local file */ switch(medclass) { case MED_MESH : strcpy(_link,MED_MAA); break; case MED_FIELD : strcpy(_link,MED_CHA); break; default : goto ERROR; } strcat(_mountPath,_link); _mountPath[strlen(_mountPath)-1] = '\0'; _link[strlen(_link)-1] = '\0'; if (_MEDdatagroupLienCreer(fid,_mountPath,_link) < 0) { MED_ERR_(_ret,MED_ERR_CREATE,MED_ERR_LINK,_link); SSCRUTE(_mountPath); goto ERROR; } _ret = _id; ERROR: if (_rootId > 0) if (_MEDdatagroupFermer(_rootId) < 0) { MED_ERR_(_ret,MED_ERR_CLOSE,MED_ERR_FILE,MED_MNT); } va_end(params); *fret = _ret; return; }
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; }
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; }