Salome HOME
Merge from V6_main_20120808 08Aug12
[modules/med.git] / src / MEDWrapper / V2_1 / Core / MEDouvrir.cxx
1 /*************************************************************************
2 * COPYRIGHT (C) 1999 - 2002  EDF R&D
3 * THIS LIBRARY IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
4 * IT UNDER THE TERMS OF THE GNU LESSER GENERAL PUBLIC LICENSE 
5 * AS PUBLISHED BY THE FREE SOFTWARE FOUNDATION; 
6 * EITHER VERSION 2.1 OF THE LICENSE, OR (AT YOUR OPTION) ANY LATER VERSION.
7 *  
8 * THIS LIBRARY IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
9 * WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
10 * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
11 * LESSER GENERAL PUBLIC LICENSE FOR MORE DETAILS.
12 *
13 * YOU SHOULD HAVE RECEIVED A COPY OF THE GNU LESSER GENERAL PUBLIC LICENSE
14 * ALONG WITH THIS LIBRARY; IF NOT, WRITE TO THE FREE SOFTWARE FOUNDATION,
15 * INC., 59 TEMPLE PLACE, SUITE 330, BOSTON, MA 02111-1307 USA
16 *
17 *************************************************************************/
18
19 #include "med.hxx"
20 #include "med_outils.hxx" 
21
22 //#ifdef PPRO_NT
23 #ifdef WIN32
24 #include <io.h>
25 #define F_OK 0
26 #define access _access
27 #else
28 #include <unistd.h>
29 #endif
30
31 namespace med_2_1{
32
33 med_idt
34 MEDouvrir(char *nom, med_mode_acces mode_acces)
35 {
36   med_idt fid; 
37
38   /*
39    * On inhibe le gestionnaire d'erreur HDF
40    */
41   _MEDmodeErreurVerrouiller();
42
43   /*
44    * On ouvre le fichier MED sous HDF
45    */
46   switch(mode_acces)
47     {
48     case MED_LECT :
49       if (access(nom,F_OK))
50               return -1;
51       else 
52               if ((fid = _MEDfichierOuvrir(nom,mode_acces)) < 0)
53                 return -1;
54       break;
55
56     case MED_ECRI :
57       if (access(nom,F_OK))
58         {
59           if ((fid = _MEDfichierCreer(nom)) < 0)
60             return -1;
61         }
62       else
63         if ((fid = _MEDfichierOuvrir(nom,mode_acces)) < 0)
64           return -1;
65       break;
66
67     case MED_REMP :
68       if ((fid = _MEDfichierCreer(nom)) < 0)
69         return -1;
70       break;
71
72     default :
73       return -1;
74     }
75
76   return fid;
77 }
78
79 }