Fix some valgrind issues
[scilab.git] / scilab / modules / hdf5 / sci_gateway / cpp / sci_is_hdf5_file.cpp
1 /*
2 * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 * Copyright (C) 2012 - DIGITEO - Antoine ELIAS
4 *
5 * This file must be used under the terms of the CeCILL.
6 * This source file is licensed as described in the file COPYING, which
7 * you should have received as part of this distribution.  The terms
8 * are also available at
9 * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
10 *
11 */
12
13 #include <hdf5.h>
14
15 extern "C"
16 {
17 #include "gw_hdf5.h"
18 #include "Scierror.h"
19 #include "localization.h"
20 #include "api_scilab.h"
21 #include "../../../call_scilab/includes/call_scilab.h"
22 #include "h5_fileManagement.h"
23 #include "sciprint.h"
24 #include "expandPathVariable.h"
25 #include "MALLOC.h"
26 }
27
28
29 int sci_is_hdf5_file(char *fname, unsigned long fname_len)
30 {
31     SciErr sciErr;
32     int *piAddr     = NULL;
33     char* pstFile   = NULL;
34     const int nbIn = nbInputArgument(pvApiCtx);
35
36     CheckInputArgument(pvApiCtx, 1, 1);
37     CheckOutputArgument(pvApiCtx, 1, 4);
38
39     sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr);
40     if (sciErr.iErr)
41     {
42         printError(&sciErr, 0);
43         return 1;
44     }
45
46     if (getAllocatedSingleString(pvApiCtx, piAddr, &pstFile))
47     {
48         Scierror(999, _("%s: Wrong size for input argument #%d: A string expected.\n"), fname, 1);
49         return 1;
50     }
51
52     char* pstFileName = expandPathVariable(pstFile);
53     if (isHDF5File(pstFileName))
54     {
55         createScalarBoolean(pvApiCtx, nbIn + 1, 1);
56     }
57     else
58     {
59         createScalarBoolean(pvApiCtx, nbIn + 1, 0);
60     }
61
62     FREE(pstFileName);
63     FREE(pstFile);
64     AssignOutputVariable(pvApiCtx, 1) = nbIn + 1;
65     ReturnArguments(pvApiCtx);
66     return 0;
67 }