io: path: add b_path_duplicate()
This commit is contained in:
@@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
#define B_PATH(p) ((b_path *)p)
|
#define B_PATH(p) ((b_path *)p)
|
||||||
|
|
||||||
#define B_RV_PATH(cstr) B_RV(b_path_create_from_str(cstr))
|
#define B_RV_PATH(cstr) B_PATH(B_RV(b_path_create_from_cstr(cstr)))
|
||||||
|
|
||||||
struct b_file_info;
|
struct b_file_info;
|
||||||
|
|
||||||
@@ -18,6 +18,7 @@ BLUE_API b_path *b_path_create();
|
|||||||
BLUE_API b_path *b_path_create_root();
|
BLUE_API b_path *b_path_create_root();
|
||||||
BLUE_API b_path *b_path_create_cwd();
|
BLUE_API b_path *b_path_create_cwd();
|
||||||
BLUE_API b_path *b_path_create_from_cstr(const char *path);
|
BLUE_API b_path *b_path_create_from_cstr(const char *path);
|
||||||
|
BLUE_API b_path *b_path_duplicate(const b_path *path);
|
||||||
|
|
||||||
BLUE_API b_path *b_path_join(const b_path *paths[], size_t nr_paths);
|
BLUE_API b_path *b_path_join(const b_path *paths[], size_t nr_paths);
|
||||||
|
|
||||||
|
|||||||
@@ -120,6 +120,22 @@ struct b_path *b_path_create_from_cstr(const char *cstr)
|
|||||||
return path;
|
return path;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct b_path *b_path_duplicate(const struct b_path *path)
|
||||||
|
{
|
||||||
|
struct b_path *new_path = b_path_create();
|
||||||
|
if (!path) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
new_path->pathstr = b_string_duplicate(path->pathstr);
|
||||||
|
if (!new_path->pathstr) {
|
||||||
|
b_path_release(new_path);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return new_path;
|
||||||
|
}
|
||||||
|
|
||||||
static void append_path(struct b_path *dest, const struct b_path *src)
|
static void append_path(struct b_path *dest, const struct b_path *src)
|
||||||
{
|
{
|
||||||
if (b_path_is_absolute(src)) {
|
if (b_path_is_absolute(src)) {
|
||||||
|
|||||||
Reference in New Issue
Block a user