MEDjointCr231.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 #include <stdlib.h>
00024
00025 void
00026 MEDjointCr231(int dummy,...) {
00027
00028
00029 med_idt fid ;
00030 char * maa_lcl ;
00031 char * jn ;
00032 char * desc ;
00033 med_int dom ;
00034 char * maa_dist ;
00035 med_err * fret ;
00036
00037 med_idt root=0,jntid=0;
00038 med_err ret=-1;
00039 char chemin[MED_TAILLE_MAA+MED_TAILLE_JNT+MED_TAILLE_NOM+1];
00040 char tmp[MED_TAILLE_JNT+1];
00041 med_int nbc=0;
00042 med_mode_acces MED_MODE_ACCES;
00043
00044 va_list params;
00045 va_start(params,dummy);
00046
00047 fid = va_arg(params,med_idt);
00048 maa_lcl = va_arg(params,char *);
00049 jn = va_arg(params,char *);
00050 desc = va_arg(params,char *);
00051 dom = va_arg(params,med_int);
00052 maa_dist = va_arg(params,char*);
00053 fret = va_arg(params,med_err *);
00054
00055
00056
00057
00058 _MEDmodeErreurVerrouiller();
00059 if (MEDcheckVersion(fid) < 0) {*fret=-1;return;}
00060
00061
00062 if ( (MED_MODE_ACCES = _MEDmodeAcces(fid) ) == MED_UNDEF_MODE_ACCES ) {
00063 MESSAGE("Impossible de déterminer le mode d'acces au fichier.");
00064 goto ERROR;
00065 }
00066
00067 if ( MED_MODE_ACCES == MED_LECTURE ) {
00068 MESSAGE("Impossible de créer un joint en mode MED_LECTURE.");
00069 goto ERROR;
00070 };
00071
00072
00073
00074
00075 strcpy(chemin,MED_MAA);
00076 NOFINALBLANK(maa_lcl,ERROR);
00077 strcat(chemin,maa_lcl);
00078 strncpy(tmp,MED_JNT,MED_TAILLE_JNT-1);
00079 tmp[MED_TAILLE_JNT-1] = '\0';
00080 strcat(chemin,tmp);
00081 if ((root = _MEDdatagroupOuvrir(fid,chemin)) < 0)
00082 if ((root = _MEDdatagroupCreer(fid,chemin)) < 0) {
00083 MESSAGE("Erreur à la création du datagroup : ");
00084 SSCRUTE(chemin);
00085 goto ERROR;
00086 }
00087
00088
00089
00090
00091
00092 NOFINALBLANK(jn,ERROR);
00093 if ((jntid = _MEDdatagroupCreer(root,jn)) < 0) {
00094 MESSAGE("Erreur à la création du joint : ");
00095 SSCRUTE(jn);
00096 goto ERROR;
00097 }
00098
00099
00100
00101
00102 if ((ret = _MEDattrStringEcrire(jntid,MED_NOM_DES,MED_TAILLE_DESC,desc)) < 0) {
00103 MESSAGE("Erreur à l'écriture de la description du joint : ");
00104 SSCRUTE(desc);
00105 goto ERROR;
00106 }
00107
00108
00109
00110
00111
00112
00113
00114 if ((ret = _MEDattrStringEcrire(jntid,MED_NOM_MAI,MED_TAILLE_MAA,maa_dist)) < 0) {
00115 MESSAGE("Erreur à l'écriture du nom du maillage distant : ");
00116 SSCRUTE(maa_dist);
00117 goto ERROR;
00118 }
00119
00120
00121
00122
00123 if ((ret = _MEDattrEntierEcrire(jntid,MED_NOM_DOM,&dom)) < 0) {
00124 MESSAGE("Erreur à l'écriture du domaine : ");
00125 ISCRUTE(dom);
00126 goto ERROR;
00127 }
00128
00129
00130
00131
00132 ret=0;
00133 ERROR:
00134
00135 if (jntid>0) if (_MEDdatagroupFermer(jntid) < 0) {
00136 MESSAGE("Impossible de fermer le datagroup : ");
00137 ISCRUTE_id(jntid);ret = -1;
00138 }
00139
00140 if (root>0) if (_MEDdatagroupFermer(root) < 0) {
00141 MESSAGE("Impossible de fermer le datagroup : ");
00142 ISCRUTE_id(root); ret = -1;
00143 }
00144
00145 va_end(params);
00146 *fret = ret;
00147 return;
00148 }
00149
00150
00151