Fix OS layer returning with "/" at the end for directories

This commit is contained in:
Krzosa Karol
2026-01-05 15:10:29 +01:00
parent c90857eb46
commit 1a6159e0ec
2 changed files with 3 additions and 20 deletions

View File

@@ -231,11 +231,9 @@ API void Advance(FileIter *it) {
it->is_directory = file->d_type == DT_DIR;
it->filename = Copy(it->allocator, file->d_name);
const char *dir_char_ending = it->is_directory ? "/" : "";
const char *separator = it->path.data[it->path.len - 1] == '/' ? "" : "/";
it->relative_path = Format(it->allocator, "%S%s%s%s", it->path, separator, file->d_name, dir_char_ending);
it->relative_path = Format(it->allocator, "%S%s%s", it->path, separator, file->d_name);
it->absolute_path = GetAbsolutePath(it->allocator, it->relative_path);
if (it->is_directory) it->absolute_path = Format(it->allocator, "%S/", it->absolute_path);
it->is_valid = true;
return;
}
@@ -540,16 +538,10 @@ API void Advance(FileIter *it) {
it->is_directory = data->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY;
it->filename = ToString(it->allocator, (char16_t *)data->cFileName, WideLength((char16_t *)data->cFileName));
const char *is_dir = it->is_directory ? "/" : "";
const char *separator = it->path.data[it->path.len - 1] == '/' ? "" : "/";
it->relative_path = Format(it->allocator, "%S%s%S%s", it->path, separator, it->filename, is_dir);
it->relative_path = Format(it->allocator, "%S%s%S", it->path, separator, it->filename);
it->absolute_path = GetAbsolutePath(it->allocator, it->relative_path);
it->is_valid = true;
if (it->is_directory) {
Assert(it->relative_path.data[it->relative_path.len - 1] == '/');
Assert(it->absolute_path.data[it->absolute_path.len - 1] == '/');
}
return;
}
@@ -1103,11 +1095,9 @@ API void Advance(FileIter *it) {
it->is_directory = file->d_type == DT_DIR;
it->filename = Copy(it->allocator, file->d_name);
const char *dir_char_ending = it->is_directory ? "/" : "";
const char *separator = it->path.data[it->path.len - 1] == '/' ? "" : "/";
it->relative_path = Format(it->allocator, "%S%s%s%s", it->path, separator, file->d_name, dir_char_ending);
it->relative_path = Format(it->allocator, "%S%s%s", it->path, separator, file->d_name);
it->absolute_path = GetAbsolutePath(it->allocator, it->relative_path);
if (it->is_directory) it->absolute_path = Format(it->allocator, "%S/", it->absolute_path);
it->is_valid = true;
return;
}