Back to index

salome-med  6.5.0
MEDlFichDes.cxx
Go to the documentation of this file.
00001 /*************************************************************************
00002 * COPYRIGHT (C) 1999 - 2002  EDF R&D
00003 * THIS LIBRARY IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
00004 * IT UNDER THE TERMS OF THE GNU LESSER GENERAL PUBLIC LICENSE 
00005 * AS PUBLISHED BY THE FREE SOFTWARE FOUNDATION; 
00006 * EITHER VERSION 2.1 OF THE LICENSE, OR (AT YOUR OPTION) ANY LATER VERSION.
00007 *  
00008 * THIS LIBRARY IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
00009 * WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
00010 * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
00011 * LESSER GENERAL PUBLIC LICENSE FOR MORE DETAILS.
00012 *
00013 * YOU SHOULD HAVE RECEIVED A COPY OF THE GNU LESSER GENERAL PUBLIC LICENSE
00014 * ALONG WITH THIS LIBRARY; IF NOT, WRITE TO THE FREE SOFTWARE FOUNDATION,
00015 * INC., 59 TEMPLE PLACE, SUITE 330, BOSTON, MA 02111-1307 USA
00016 *
00017 *************************************************************************/
00018 
00019 #include "med.hxx"
00020 #include "med_outils.hxx"
00021 #include <string.h>
00022 
00023 namespace med_2_1{
00024 
00025 med_int
00026 MEDlFichDes(med_idt fid)
00027 {
00028   med_idt attr, root;
00029   med_err ret=0;
00030   char des[MED_TAILLE_DESC+1];
00031   med_int longueur=0;
00032   char nom[MED_TAILLE_NOM+1];
00033   char chemin[MED_TAILLE_MAA+1];
00034 
00035   /*
00036    * On inhibe le gestionnaire d'erreur HDF
00037    */
00038   _MEDmodeErreurVerrouiller();
00039 
00040   /*
00041    * On ouvre le Data Group racine
00042    */
00043   strncpy(chemin,MED_MAA,MED_TAILLE_MAA-1);
00044   chemin[MED_TAILLE_MAA-1] = '\0';
00045   if ((root = _MEDdatagroupOuvrir(fid,chemin)) < 0)
00046     return -1;
00047 
00048   /*
00049    * On regarde si l'attribut existe
00050    * Si non => erreur
00051    * Si oui => on retourne sa longueur
00052    */
00053   strcpy(nom,MED_NOM_DESCRIPTEUR);
00054  
00055   if ((attr = _MEDattrOuvrir(root,nom)) < 0) {
00056     _MEDdatagroupFermer(root);
00057     longueur=0;
00058     return 0;
00059   }
00060  
00061   if ((ret = _MEDattrFermer(attr)) < 0) {
00062     _MEDdatagroupFermer(root);
00063     return -1;
00064   }
00065   
00066   if ((ret = _MEDattrStringLire(root,nom,MED_TAILLE_DESC,des)) < 0) {
00067     _MEDdatagroupFermer(root);
00068     return -1;
00069   }
00070   
00071   longueur = (med_int)strlen(des);
00072 
00073   /*
00074    * fermetures 
00075    */
00076   if ((ret = _MEDdatagroupFermer(root)) < 0)
00077     return -1;
00078 
00079   return longueur;
00080 }
00081 
00082 }