gKit2 light
Toggle main menu visibility
Loading...
Searching...
No Matches
src
gKit
files.cpp
1
2
#ifndef _MSC_VER
3
#include <sys/stat.h>
4
#else
5
#include <sys/types.h>
6
#include <sys/stat.h>
7
#endif
8
9
#include <string>
10
#include <algorithm>
11
12
#include "files.h"
13
14
16
bool
exists(
const
std::string& filename )
17
{
18
#ifndef _MSC_VER
19
struct
stat info;
20
if
(stat(filename.c_str(), &info) < 0)
21
return
false
;
22
23
// verifie aussi que c'est bien un fichier standard
24
return
S_ISREG(info.st_mode);
25
26
#else
27
struct
_stat64 info;
28
if
(_stat64(filename.c_str(), &info) < 0)
29
return
false
;
30
31
// verifie aussi que c'est bien un fichier standard
32
return
(info.st_mode & _S_IFREG);
33
#endif
34
}
35
37
size_t
timestamp(
const
std::string& filename )
38
{
39
#ifndef _MSC_VER
40
struct
stat info;
41
if
(stat(filename.c_str(), &info) < 0)
42
return
0;
43
44
// verifie aussi que c'est bien un fichier standard
45
if
(S_ISREG(info.st_mode))
46
return
size_t(info.st_mtime);
47
48
#else
49
struct
_stat64 info;
50
if
(_stat64(filename.c_str(), &info) < 0)
51
return
0;
52
53
// verifie aussi que c'est bien un fichier standard
54
if
(info.st_mode & _S_IFREG)
55
return
size_t(info.st_mtime);
56
#endif
57
58
return
0;
59
}
60
61
68
std::string pathname(
const
std::string& filename )
69
{
70
std::string path= filename;
71
#ifndef WIN32
72
std::replace(path.begin(), path.end(),
'\\'
,
'/'
);
// linux, macos : remplace les \ par /.
73
size_t
slash = path.find_last_of(
'/'
);
74
if
(slash != std::string::npos)
75
return
path.substr(0, slash +1);
// inclus le slash
76
else
77
return
"./"
;
78
#else
79
std::replace(path.begin(), path.end(),
'/'
,
'\\'
);
// windows : remplace les / par \.
80
size_t
slash = path.find_last_of(
'\\'
);
81
if
(slash != std::string::npos)
82
return
path.substr(0, slash +1);
// inclus le slash
83
else
84
return
".\\"
;
85
#endif
86
}
87
89
std::string normalize_filename(
const
std::string& filename )
90
{
91
std::string path= filename;
92
#ifndef WIN32
93
std::replace(path.begin(), path.end(),
'\\'
,
'/'
);
// linux, macos : remplace les \ par /.
94
#else
95
std::replace(path.begin(), path.end(),
'/'
,
'\\'
);
// windows : remplace les / par \.
96
#endif
97
98
return
path;
99
}
100
101
107
//~ const char *relative_filename( const std::string& filename, const std::string& path )
108
std::string relative_filename(
const
std::string& filename,
const
std::string& path )
109
{
110
std::string relative= pathname(path);
111
112
unsigned
i= 0;
113
while
(filename[i] && relative[i] && filename[i] == relative[i])
114
i++;
115
116
return
filename.substr(i);
117
}
Generated on
for gKit2 light by
1.17.0