1 /*  This file is part of MED.
2  *
3  *  COPYRIGHT (C) 1999 - 2019  EDF R&D, CEA/DEN
4  *  MED is free software: you can redistribute it and/or modify
5  *  it under the terms of the GNU Lesser General Public License as published by
6  *  the Free Software Foundation, either version 3 of the License, or
7  *  (at your option) any later version.
8  *
9  *  MED is distributed in the hope that it will be useful,
10  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  *  GNU Lesser General Public License for more details.
13  *
14  *  You should have received a copy of the GNU Lesser General Public License
15  *  along with MED.  If not, see <http://www.gnu.org/licenses/>.
16  */
17 
18 
19 #include <med.h>
20 #include <med_config.h>
21 #include <med_outils.h>
22 
23 #include <string.h>
24 #include <stdlib.h>
25 
26 
27 /**\ingroup MEDlink
28   \brief \MEDlinkInfoByNameBrief
29   \param fid \fid
30   \param meshname \meshname
31   \retval med_int  \linksize
32   \details \MEDlinkInfoByNameDetails
33  */
34 
35 med_int
MEDlinkInfoByName(const med_idt fid,const char * const meshname)36 MEDlinkInfoByName(const med_idt             fid,
37 		  const char        * const meshname )
38 {
39   med_idt _lid=0;
40   med_int _ret=-1;
41   char    _path[MED_TAILLE_LIENS+MED_NAME_SIZE+1]=MED_LIENS;
42   med_int _n = 0;
43 
44   /*
45    * On inhibe le gestionnaire d'erreur HDF 5
46    */
47   _MEDmodeErreurVerrouiller();
48 
49   /*
50    * ouverture du groupe /LIENS/"meshname"
51    */
52   strcat(_path,meshname);
53   if ((_lid = _MEDdatagroupOuvrir(fid,_path)) < 0) {
54     MED_ERR_(_ret,MED_ERR_OPEN,MED_ERR_DATAGROUP,MED_ERR_LINK_MSG);
55     SSCRUTE(_path);
56     goto ERROR;
57   }
58 
59   /*
60    * Lecture de l'attribut MED_NOM_NBR
61    */
62   if (_MEDattrEntierLire(_lid,MED_NOM_NBR,&_n) < 0) {
63     MED_ERR_(_ret,MED_ERR_READ,MED_ERR_ATTRIBUTE,MED_ERR_LINK_MSG);
64     SSCRUTE(_path);SSCRUTE(MED_NOM_NBR);ISCRUTE(_n);
65     goto ERROR;
66   }
67 
68 
69   _ret = _n;
70  ERROR:
71 
72   if ( _lid > 0 ) if ( _MEDdatagroupFermer(_lid) < 0) {
73     MED_ERR_(_ret,MED_ERR_CLOSE,MED_ERR_DATAGROUP,MED_PROFILE_GRP);
74     ISCRUTE_id(_lid);
75   }
76 
77   return _ret;
78 }
79