#include "filesystem.h" char* __path_concat(u32 n, ...){ char** parts=(char**)malloc(n*sizeof(char*)); u32* lengths=malloc(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"),); return MaybeNull; } char* path_parentDir(char* dir){ char* copy=cptr_copy(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){ free(copy); copy=malloc(2); copy[0]='.'; copy[1]=0; } return copy; } char* path_basename(char* path, bool with_extension){ i32 nameIndex=cptr_lastIndexOfChar(path, path_sep)+1; string result=string_fromCptr(path+nameIndex); if(!with_extension){ i32 extIndex=cptr_lastIndexOfChar(result.ptr, '.'); if(extIndex!=0 && extIndex!=-1) result.length=extIndex; } return string_extract(result); }