io: path: add b_path_duplicate()
This commit is contained in:
@@ -8,7 +8,7 @@
|
||||
|
||||
#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;
|
||||
|
||||
@@ -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_cwd();
|
||||
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);
|
||||
|
||||
|
||||
@@ -120,6 +120,22 @@ struct b_path *b_path_create_from_cstr(const char *cstr)
|
||||
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)
|
||||
{
|
||||
if (b_path_is_absolute(src)) {
|
||||
|
||||
Reference in New Issue
Block a user