MEDmonter.c
Aller à la documentation de ce fichier.00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 #include <med.h>
00020 #include <med_config.h>
00021 #include <med_outils.h> 
00022 #include <string.h>
00023  
00024 #ifdef PPRO_NT
00025 #define F_OK 0
00026 #else
00027 #include <unistd.h>
00028 #endif
00029 
00030 med_idt
00031 MEDmonter(med_idt fid, const char *acces,med_type_donnee type)
00032 {
00033   med_err ret;
00034   med_idt root,id, did;
00035   char chemin[MED_TAILLE_NOM+1];
00036   char acces_montage[2*MED_TAILLE_NOM+1];
00037   med_mode_acces MED_MODE_ACCES;
00038 
00039   
00040 
00041 
00042   _MEDmodeErreurVerrouiller();
00043 if (MEDcheckVersion(fid) < 0) return -1;
00044 
00045 
00046   
00047 
00048 
00049 
00050   if (access(acces,F_OK))
00051     return -1;
00052 
00053   if ( (MED_MODE_ACCES = _MEDmodeAcces(fid) ) == MED_UNDEF_MODE_ACCES ) {
00054     MESSAGE("Impossible de déterminer le mode d'acces au fichier ");
00055     return -1;
00056   }
00057 
00058   
00059 
00060 
00061   if ((id = _MEDfichierOuvrir((char *)acces,MED_MODE_ACCES)) < 0)
00062     return -1;
00063 
00064   
00065 
00066 
00067   root = _MEDdatagroupOuvrir(fid,MED_MNT);
00068   if (root < 0)
00069     if ((root = _MEDdatagroupCreer(fid,MED_MNT)) < 0)
00070       return -1;
00071   if ((ret = _MEDdatagroupFermer(root)) < 0)
00072     return -1;
00073 
00074   
00075 
00076 
00077   strncpy(acces_montage,MED_MNT,strlen(MED_MNT)-1);
00078   acces_montage[strlen(MED_MNT)-1] = '\0';
00079   if ((ret = _MEDfichierMonter(fid,acces_montage,id)) < 0)
00080     return -1;
00081 
00082   
00083 
00084 
00085 
00086 
00087 
00088   switch(type) {
00089 
00090   case MED_MAILLAGE :
00091     strcpy(chemin,MED_MAA);
00092     break;
00093 
00094   case MED_CHAMP :
00095     strcpy(chemin,MED_CHA);
00096     break;
00097 
00098   default :
00099     return -1;
00100   }
00101   
00102   
00103 
00104 
00105 
00106 
00107 
00108   strcat(acces_montage,chemin);
00109   acces_montage[strlen(acces_montage)-1] = '\0';
00110   chemin[strlen(chemin)-1] = '\0';
00111   if ((ret = _MEDdatagroupLienCreer(fid,acces_montage,chemin)) < 0)
00112     return -1;
00113 
00114   
00115 
00116 
00117   return id;
00118 }