File tree 2 files changed +22
-0
lines changed
2 files changed +22
-0
lines changed Original file line number Diff line number Diff line change @@ -201,6 +201,26 @@ std::string fileutl_parse_name_in_pathname(std::string const &file_pathname)
201
201
return file_pathname.substr (fileutl_parse_last_dir_pos (file_pathname));
202
202
}
203
203
204
+ std::string fileutl_parse_extension_in_pathname (const std::string &pathname)
205
+ {
206
+ const std::size_t idx=pathname.find_last_of (' .' );
207
+ # if defined(WIN32)
208
+ const std::size_t fwd_slash_idx=pathname.find_last_of (' /' );
209
+ const std::size_t bwd_slash_idx=pathname.find_last_of (' \\ ' );
210
+ const std::size_t slash_idx=
211
+ fwd_slash_idx==std::string::npos ? bwd_slash_idx :
212
+ bwd_slash_idx==std::string::npos ? fwd_slash_idx :
213
+ std::max (fwd_slash_idx, bwd_slash_idx);
214
+ # elif defined(__linux__) || defined(__APPLE__)
215
+ const std::size_t slash_idx=pathname.find_last_of (' /' );
216
+ # else
217
+ # error "Unsuported platform."
218
+ # endif
219
+ return
220
+ idx==std::string::npos || (slash_idx!=std::string::npos && idx<slash_idx) ?
221
+ std::string () : pathname.substr (idx);
222
+ }
223
+
204
224
std::string fileutl_parse_path_in_pathname (std::string const &file_pathname)
205
225
{
206
226
return file_pathname.substr (0U , fileutl_parse_last_dir_pos (file_pathname));
Original file line number Diff line number Diff line change @@ -35,6 +35,8 @@ uint64_t fileutl_file_size(std::string const &file_pathname);
35
35
36
36
std::string fileutl_parse_name_in_pathname (std::string const &file_pathname);
37
37
38
+ std::string fileutl_parse_extension_in_pathname (const std::string &pathname);
39
+
38
40
std::string fileutl_parse_path_in_pathname (std::string const &file_pathname);
39
41
40
42
std::string fileutl_remove_extension (std::string const &filename);
You can’t perform that action at this time.
0 commit comments