git / brickware / marrow.git - 2cd3640

(2 months ago)commit c268699: initial release of brickware marrow

tree / path.h

path.h

raw

#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