#include "filesystem.h" char* __path_concat(allocator_ptr al, u32 n, ...){ char** parts=(char**)allocator_alloc(al, n*sizeof(char*)); u32* lengths=allocator_alloc(al, n*sizeof(u32)); u32 totalLength=0; // reading args from va_list va_list vl; va_start(vl, n); for(u16 i=0; i uses <..>, that's not allowed"), LinearAllocator_destruct(&_al)); LinearAllocator_destruct(&_al); return MaybeNull; } char* path_parentDir(allocator_ptr al, char* dir){ char* copy=cptr_copy(al, dir); i32 length=cptr_length(copy); i32 i=cptr_lastIndexOfChar(copy,path_sep); if(i!=-1 && i==length-1){ copy[length-1]=0; i=cptr_lastIndexOfChar(copy,path_sep); } if(i==-1){ allocator_free(al, copy); copy=allocator_alloc(al, 2); copy[0]='.'; copy[1]=0; } return copy; } char* path_basename(allocator_ptr al, char* path, bool with_extension){ i32 nameIndex=cptr_lastIndexOfChar(path, path_sep)+1; string rezult=string_fromCptr(path+nameIndex); if(!with_extension){ i32 extIndex=cptr_lastIndexOfChar(rezult.ptr, '.'); if(extIndex!=0 && extIndex!=-1) rezult.length=extIndex; } return string_extract(al, rezult); }