MEDequivCr.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
00023 #include <string.h>
00024 #include <stdlib.h>
00025
00026 med_err
00027 MEDequivCr(med_idt fid,char *maa, char *eq, char *desc)
00028 {
00029 med_idt root=0,eqid=0;
00030 med_err ret=-1;
00031 char chemin[MED_TAILLE_MAA+MED_TAILLE_EQS+MED_TAILLE_NOM+1];
00032 char tmp[MED_TAILLE_EQS+1];
00033 med_mode_acces MED_MODE_ACCES;
00034
00035
00036
00037
00038 _MEDmodeErreurVerrouiller();
00039 if (MEDcheckVersion(fid) < 0) return -1;
00040
00041
00042 if ( (MED_MODE_ACCES = _MEDmodeAcces(fid) ) == MED_UNDEF_MODE_ACCES ) {
00043 MESSAGE("Impossible de déterminer le mode d'acces au fichier.");
00044 goto ERROR;
00045 }
00046
00047 if ( MED_MODE_ACCES == MED_LECTURE ) {
00048 MESSAGE("Impossible de créer une équivalence en mode MED_LECTURE.");
00049 goto ERROR;
00050 };
00051
00052
00053
00054
00055 strcpy(chemin,MED_MAA);
00056 NOFINALBLANK(maa,ERROR);
00057 strcat(chemin,maa);
00058 strncpy(tmp,MED_EQS,MED_TAILLE_EQS-1);
00059 tmp[MED_TAILLE_EQS-1] = '\0';
00060 strcat(chemin,tmp);
00061 if ((root = _MEDdatagroupOuvrir(fid,chemin)) < 0)
00062 if ((root = _MEDdatagroupCreer(fid,chemin)) < 0) {
00063 MESSAGE("Erreur à la création du datagroup : ");
00064 SSCRUTE(chemin);
00065 goto ERROR;
00066 }
00067
00068
00069
00070
00071
00072 NOFINALBLANK(eq,ERROR);
00073 if ((eqid = _MEDdatagroupCreer(root,eq)) < 0) {
00074 MESSAGE("Erreur à la création de l'équivalence : ");
00075 SSCRUTE(eq);
00076 goto ERROR;
00077 }
00078
00079
00080
00081
00082 if ((ret = _MEDattrStringEcrire(eqid,MED_NOM_DES,MED_TAILLE_DESC,desc)) < 0) {
00083 MESSAGE("Erreur à l'écriture de la description de l'équivalence : ");
00084 SSCRUTE(desc);
00085 goto ERROR;
00086 }
00087
00088
00089
00090
00091 ret=0;
00092 ERROR:
00093 if (eqid>0) if (_MEDdatagroupFermer(eqid) < 0) {
00094 MESSAGE("Impossible de fermer le datagroup : ");
00095 ISCRUTE_id(eqid);ret = -1;
00096 }
00097
00098 if (root>0) if (_MEDdatagroupFermer(root) < 0) {
00099 MESSAGE("Impossible de fermer le datagroup : ");
00100 ISCRUTE_id(root); ret = -1;
00101 }
00102
00103 return ret;
00104 }
00105
00106
00107