Added image loading
Added some string functions and macros Added path listing on windows Added assets
This commit is contained in:
@@ -83,4 +83,39 @@ void FS_FileWrite(OS_Handle file, void *ptr, U64 size, U64 offset) {
|
||||
}
|
||||
}
|
||||
|
||||
FS_List FS_PathList(M_Arena *arena, Str8 path) {
|
||||
FS_List result = { 0 };
|
||||
|
||||
M_TempScope(1, &arena) {
|
||||
Str8 wpath = Win32_WideStr(temp.arena, Sf(temp.arena, "%.*s\\*", Sv(path)));
|
||||
|
||||
WIN32_FIND_DATAW find = { 0 };
|
||||
HANDLE hFind = FindFirstFileW((LPCWSTR) wpath.data, &find);
|
||||
|
||||
while (hFind != INVALID_HANDLE_VALUE) {
|
||||
if (find.cFileName[0] != L'.') {
|
||||
FS_Entry *entry = M_ArenaPush(arena, FS_Entry);
|
||||
|
||||
entry->type = (find.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) ? FS_ENTRY_TYPE_DIR : FS_ENTRY_TYPE_FILE;
|
||||
|
||||
entry->basename = Win32_MultiByteStr(arena, find.cFileName);
|
||||
entry->path = Sf(arena, "%.*s/%.*s", Sv(path), Sv(entry->basename));
|
||||
|
||||
FILETIME *wt = &find.ftLastWriteTime;
|
||||
|
||||
entry->time = ((U64) wt->dwHighDateTime << 32) | ((U64) wt->dwLowDateTime);
|
||||
entry->size = ((U64) find.nFileSizeHigh << 32) | ((U64) find.nFileSizeLow);
|
||||
|
||||
SLL_Enqueue(result.first, result.last, entry);
|
||||
|
||||
result.count += 1;
|
||||
}
|
||||
|
||||
if (!FindNextFileW(hFind, &find)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user