(2 months ago)commit c268699: initial release of brickware marrow
tree / path.h
#ifndef __PATH_H
struct path {
char **components; // Array of path components
int32_t count; // Number of components
int32_t capacity; // Allocated capacity
int32_t is_absolute; // Whether path starts with /
};
// Creation/Destruction
struct path
path_from_string(const char *s);
struct path
path_new(void);
void
path_free(struct path *p);
// Manipulation
int32_t
path_join(struct path *p, const char *component);
int32_t
path_resolve(struct path *p); // Handle .. and .
struct path
path_parent(const struct path *p);
const char *
path_basename(const struct path *p);
// Output
int32_t
path_to_string(const struct path *p, char *buffer, size_t size);
// Utilities
int32_t
path_is_absolute(const struct path *p);
int32_t
path_starts_with(const struct path *p, const struct path *prefix);
struct path
path_copy(const struct path *src);
#endif