#ifndef PATH_UTILS_H
#define PATH_UTILS_H

#include "aliases.h"

#define NUMPARTS(...)                                                          \
  (sizeof((const char *[]){"", __VA_ARGS__}) / sizeof(const char *) - 1)

#define JOIN_PATH(DST, ...) join_path(DST, NUMPARTS(__VA_ARGS__), __VA_ARGS__)

void join_path(char *dst, u64 count, ...);

#define DIRNAME(DST, PATH) dirup(DST, 1, PATH)
#define DIRUP(DST, COUNT, PATH) dirup(DST, COUNT, PATH)

void dirup(char *dst, u64 levels, const char *path);

#endif // !PATH_UTILS_H