1 diff -Naur med-4.0.0_orig/CMakeLists.txt med-4.0.0_modif/CMakeLists.txt
2 --- med-4.0.0_orig/CMakeLists.txt 2018-12-10 20:41:59.000000000 +0300
3 +++ med-4.0.0_modif/CMakeLists.txt 2019-02-26 19:14:45.310698300 +0300
5 OPTION (MEDFILE_BUILD_STATIC_LIBS "Build MED-file static libraries" OFF)
6 OPTION (MEDFILE_INSTALL_DOC "Install pre-built documentation" ON)
7 OPTION (MEDFILE_BUILD_PYTHON "Build Python bindings (needs SWIG)" OFF)
8 +OPTION (MEDFILE_USE_UNICODE "Use unicode filenames" ON)
10 #-- Add an Option to toggle the generation of the API documentation
11 #-- Embedded documentation contains patched doxygen generated fortran documention
16 +IF(MEDFILE_USE_UNICODE)
17 + ADD_DEFINITIONS(-DUNICODE)
21 IF(MEDFILE_BUILD_SHARED_LIBS AND MEDFILE_BUILD_STATIC_LIBS)
22 MESSAGE(FATAL_ERROR "You can not build shared and static libraries at the same time! ")
23 diff -Naur med-4.0.0_orig/include/med_misc.h med-4.0.0_modif/include/med_misc.h
24 --- med-4.0.0_orig/include/med_misc.h 2018-12-10 13:17:52.000000000 +0300
25 +++ med-4.0.0_modif/include/med_misc.h 2019-02-26 18:05:01.054155600 +0300
27 med_geometry_type * const smeshgeotype,
28 char * const smeshgeotypename,
29 med_int * const smeshnentity);
31 +int med_access(const char * const fichier, int mode);
34 /* Gestion des messages d'erreur */
35 /* extern MEDC_EXPORT */
36 diff -Naur med-4.0.0_orig/src/2.3.6/ci/MEDmonter.c med-4.0.0_modif/src/2.3.6/ci/MEDmonter.c
37 --- med-4.0.0_orig/src/2.3.6/ci/MEDmonter.c 2018-12-10 13:17:55.000000000 +0300
38 +++ med-4.0.0_modif/src/2.3.6/ci/MEDmonter.c 2019-02-26 18:15:57.706349300 +0300
40 * On regarde si le fichier de nom "acces" existe
41 * Si ce n'est pas le cas => erreur
43 - if (access(acces,F_OK))
44 + if (med_access(acces,F_OK))
47 if ( (MED_MODE_ACCES = _MEDmodeAcces(fid) ) == MED_UNDEF_MODE_ACCES ) {
48 diff -Naur med-4.0.0_orig/src/2.3.6/ci/MEDouvrir.c med-4.0.0_modif/src/2.3.6/ci/MEDouvrir.c
49 --- med-4.0.0_orig/src/2.3.6/ci/MEDouvrir.c 2018-12-10 13:17:55.000000000 +0300
50 +++ med-4.0.0_modif/src/2.3.6/ci/MEDouvrir.c 2019-02-26 18:16:21.655051700 +0300
55 - if (access(nom,F_OK)) {
56 + if (med_access(nom,F_OK)) {
58 MESSAGE("Impossible d'accéder aux fichier :");
63 case MED_LECTURE_ECRITURE :
64 - if (access(nom,F_OK)) {
65 + if (med_access(nom,F_OK)) {
66 if ((fid = _MEDfichierCreer(nom,mode_acces)) < 0)
72 case MED_LECTURE_AJOUT :
73 - if (access(nom,F_OK))
74 + if (med_access(nom,F_OK))
76 if ((fid = _MEDfichierCreer(nom,mode_acces)) < 0)
78 diff -Naur med-4.0.0_orig/src/ci/MEDfileExist.c med-4.0.0_modif/src/ci/MEDfileExist.c
79 --- med-4.0.0_orig/src/ci/MEDfileExist.c 2017-07-10 17:25:29.000000000 +0300
80 +++ med-4.0.0_modif/src/ci/MEDfileExist.c 2019-02-26 18:16:44.260571900 +0300
83 * On ouvre le fichier MED sous HDF
85 - if ( access(filename,F_OK) ) {
86 + if ( med_access(filename,F_OK) ) {
88 *fileexist = MED_FALSE;
89 *accessok = MED_FALSE;
91 // Join drive letter and directory name:
92 _makepath(_dirname, _drive, _direc, NULL, NULL);
94 - if ( access(_dirname,_mode) ) *accessok = MED_FALSE; else *accessok = MED_TRUE;
95 + if ( med_access(_dirname,_mode) ) *accessok = MED_FALSE; else *accessok = MED_TRUE;
99 *fileexist = MED_TRUE;
100 (accessmode!=MED_ACC_RDONLY) && (_mode=_mode|W_OK);
101 - if ( access(filename,_mode) ) *accessok = MED_FALSE; else *accessok = MED_TRUE;
102 + if ( med_access(filename,_mode) ) *accessok = MED_FALSE; else *accessok = MED_TRUE;
106 diff -Naur med-4.0.0_orig/src/ci/MEDfileVersionOpen.c med-4.0.0_modif/src/ci/MEDfileVersionOpen.c
107 --- med-4.0.0_orig/src/ci/MEDfileVersionOpen.c 2018-12-10 13:17:55.000000000 +0300
108 +++ med-4.0.0_modif/src/ci/MEDfileVersionOpen.c 2019-02-26 18:17:50.884971000 +0300
112 case MED_ACC_RDONLY :
113 - if (access(filename,F_OK)) {
114 + if (med_access(filename,F_OK)) {
115 MED_ERR_(_ret,MED_ERR_EXIST,MED_ERR_FILE,filename);
122 - if (access(filename,F_OK)) {
123 + if (med_access(filename,F_OK)) {
124 if ((_fid = _MEDfileCreate((char*) filename,accessmode,major,minor,release)) < 0) {
125 MED_ERR_(_ret,MED_ERR_CREATE,MED_ERR_FILE,filename);
131 - if (access(filename,F_OK))
132 + if (med_access(filename,F_OK))
134 if ((_fid = _MEDfileCreate((char*) filename,accessmode,major,minor,release)) < 0) {
135 MED_ERR_(_ret,MED_ERR_CREATE,MED_ERR_FILE,filename);
136 diff -Naur med-4.0.0_orig/src/ci/MEDparFileOpen.c med-4.0.0_modif/src/ci/MEDparFileOpen.c
137 --- med-4.0.0_orig/src/ci/MEDparFileOpen.c 2018-12-10 13:17:53.000000000 +0300
138 +++ med-4.0.0_modif/src/ci/MEDparFileOpen.c 2019-02-26 18:18:10.362058500 +0300
142 case MED_ACC_RDONLY :
143 - if (access(filename,F_OK)) {
144 + if (med_access(filename,F_OK)) {
145 MED_ERR_(_fid,MED_ERR_DOESNTEXIST,MED_ERR_FILE,filename);
152 - if (access(filename,F_OK)) {
153 + if (med_access(filename,F_OK)) {
154 if ((_fid = _MEDparFileCreate((char*) filename,accessmode, comm, info)) < 0) {
155 MED_ERR_(_fid,MED_ERR_CREATE,MED_ERR_FILE,filename);
161 - if (access(filename,F_OK))
162 + if (med_access(filename,F_OK))
164 if ((_fid = _MEDparFileCreate((char*) filename,accessmode, comm, info)) < 0) {
165 MED_ERR_(_fid,MED_ERR_CREATE,MED_ERR_FILE,filename);
166 diff -Naur med-4.0.0_orig/src/ci/_MEDfileObjectsMount236.c med-4.0.0_modif/src/ci/_MEDfileObjectsMount236.c
167 --- med-4.0.0_orig/src/ci/_MEDfileObjectsMount236.c 2018-12-10 13:17:54.000000000 +0300
168 +++ med-4.0.0_modif/src/ci/_MEDfileObjectsMount236.c 2019-02-26 18:18:20.374401600 +0300
171 * does the file exist ?
173 - if (access(mountfilename,F_OK)) {
174 + if (med_access(mountfilename,F_OK)) {
175 MED_ERR_(_ret,MED_ERR_EXIST,MED_ERR_FILE,mountfilename);
178 diff -Naur med-4.0.0_orig/src/ci/_MEDfileObjectsMount30.c med-4.0.0_modif/src/ci/_MEDfileObjectsMount30.c
179 --- med-4.0.0_orig/src/ci/_MEDfileObjectsMount30.c 2018-12-10 13:17:55.000000000 +0300
180 +++ med-4.0.0_modif/src/ci/_MEDfileObjectsMount30.c 2019-02-26 18:18:29.115797700 +0300
184 /* does the file exist ? */
185 - if (access(mountfilename,F_OK)) {
186 + if (med_access(mountfilename,F_OK)) {
187 MED_ERR_(_ret,MED_ERR_EXIST,MED_ERR_FILE,mountfilename);
190 diff -Naur med-4.0.0_orig/src/hdfi/_MEDmemFileOpen.c med-4.0.0_modif/src/hdfi/_MEDmemFileOpen.c
191 --- med-4.0.0_orig/src/hdfi/_MEDmemFileOpen.c 2017-07-26 16:45:49.000000000 +0300
192 +++ med-4.0.0_modif/src/hdfi/_MEDmemFileOpen.c 2019-02-26 18:18:40.606423800 +0300
195 memfile->flags = accessmode;
197 - file_exist=!access(filename,F_OK);
198 + file_exist=!med_access(filename,F_OK);
201 * On inhibe le gestionnaire d'erreur HDF 5
202 diff -Naur med-4.0.0_orig/src/misc/CMakeLists.txt med-4.0.0_modif/src/misc/CMakeLists.txt
203 --- med-4.0.0_orig/src/misc/CMakeLists.txt 2017-11-06 19:19:17.000000000 +0300
204 +++ med-4.0.0_modif/src/misc/CMakeLists.txt 2019-02-26 19:19:26.331544200 +0300
211 diff -Naur med-4.0.0_orig/src/misc/MEDaccess.c med-4.0.0_modif/src/misc/MEDaccess.c
212 --- med-4.0.0_orig/src/misc/MEDaccess.c 1970-01-01 03:00:00.000000000 +0300
213 +++ med-4.0.0_modif/src/misc/MEDaccess.c 2019-03-07 15:15:56.880252400 +0300
215 +/* This file is part of MED.
217 + * COPYRIGHT (C) 1999 - 2019 EDF R&D, CEA/DEN
218 + * MED is free software: you can redistribute it and/or modify
219 + * it under the terms of the GNU Lesser General Public License as published by
220 + * the Free Software Foundation, either version 3 of the License, or
221 + * (at your option) any later version.
223 + * MED is distributed in the hope that it will be useful,
224 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
225 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
226 + * GNU Lesser General Public License for more details.
228 + * You should have received a copy of the GNU Lesser General Public License
229 + * along with MED. If not, see <http://www.gnu.org/licenses/>.
233 +#include <windows.h>
236 +/******************************************************************************
238 + * - Nom de la fonction : med_access
241 + * - fichier (IN) : nom du fichier.
244 + ******************************************************************************/
245 +int med_access(const char * const fichier, int mode) {
247 +#if defined(WIN32) && defined(UNICODE)
249 + wchar_t* afilename = NULL;
250 + size_needed = MultiByteToWideChar(CP_UTF8, 0, fichier, strlen(fichier), NULL, 0);
251 + afilename = malloc((size_needed+1)*sizeof(wchar_t));
252 + MultiByteToWideChar(CP_UTF8, 0, fichier, strlen(fichier), afilename, size_needed);
253 + afilename[size_needed] = '\0';
254 + ret = _waccess(afilename, mode);
257 + ret = access(fichier, mode);