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 }