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