// in "dir/file.ext" this returns "ext". Returns an empty string if there is no extension
string get_file_extension(string path) {
if (path.count <= 0) return ZERO(string);
for (s64 i = path.count-1; i >= 0; i--) {
if (path.data[i] == '/' || path.data[i] == '\\' || path.data[i] == ':') {
return ZERO(string);
}
if (path.data[i] == '.') {
string ext = ZERO(string);
ext.count = path.count-i;
if (ext.count > 0) ext.data = path.data+i;
return ext;
string get_file_name_including_extension(string file_path) {
if (file_path.count <= 0) return ZERO(string);
s64 last_separator = -1;
for (s64 i = file_path.count - 1; i >= 0; i--) {
if (file_path.data[i] == '/' || file_path.data[i] == '\\' || file_path.data[i] == ':') {
last_separator = i;
break;
string file_name = ZERO(string);
if (last_separator != -1 && last_separator < file_path.count - 1) {
file_name.data = file_path.data + last_separator + 1;
file_name.count = file_path.count - last_separator - 1;
} else {
file_name = file_path; // If no separator was found, assume entire path is a file name.
return file_name;
string get_file_name_excluding_extension(string file_path) {
string file_name = get_file_name_including_extension(file_path);
for (s64 i = file_name.count-1; i >= 1; i--) {
if (file_name.data[i] == '.') {
return string_view(file_name, 0, i);