Merge remote-tracking branch 'origin/master' into windows
[scilab.git] / scilab / modules / fileio / src / cpp / newest.cpp
1 /*
2 * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 * Copyright (C) 2011 - DIGITEO - Cedric DELAMARRE
4 * Copyright (C) 2006 - INRIA - Allan CORNET
5 *
6  * Copyright (C) 2012 - 2016 - Scilab Enterprises
7  *
8  * This file is hereby licensed under the terms of the GNU GPL v2.0,
9  * pursuant to article 5.3.4 of the CeCILL v.2.1.
10  * This file was originally licensed under the terms of the CeCILL v2.1,
11  * and continues to be available under such terms.
12  * For more information, see the COPYING file which you should have received
13  * along with this program.
14 *
15 */
16 #include <sys/stat.h>
17 #include <string.h>
18 #include <stdio.h>
19
20 #include "filemanager.hxx"
21
22 extern "C"
23 {
24 #include "sci_malloc.h"
25 #include "expandPathVariable.h"
26 #include "charEncoding.h"
27 #include "newest.h"
28 }
29
30 int newest(char** _filesString, int _iNbrOfFileString)
31 {
32 #ifdef _MSC_VER
33     struct _stat buf;
34 #else
35     struct stat buf;
36 #endif
37
38     int i = 0;
39     int RetVal = 0;
40
41     int RetIndex = 1;
42     long int MaxTime = 0;
43
44     for (i = 0; i < _iNbrOfFileString ; i++)
45     {
46
47         int resultstat = 0;
48         char* FileName = NULL;
49
50         FileName = expandPathVariable(_filesString[i]);
51
52 #ifdef _MSC_VER
53         if (FileName)
54         {
55             if ( (FileName[strlen(FileName) - 1] == '/') || (FileName[strlen(FileName) - 1] == '\\') )
56             {
57                 FileName[strlen(FileName) - 1] = '\0';
58             }
59
60         }
61         resultstat = _stat(FileName, &buf);
62 #else
63         resultstat = stat(FileName, &buf);
64 #endif
65         if (resultstat == 0)
66         {
67             if ((long int)buf.st_mtime > MaxTime)
68             {
69                 MaxTime = (long int)buf.st_mtime;
70                 RetIndex = i + 1;
71             }
72         }
73
74         FREE(FileName);
75         FileName = NULL;
76     }
77
78     RetVal = RetIndex;
79     return RetVal;
80 }