From 1dc3507474aeb82d023d4fc2949d25fc774e2ce0 Mon Sep 17 00:00:00 2001 From: wm4 Date: Thu, 6 Feb 2020 14:14:35 +0100 Subject: path: add mp_path_is_absolute() Just move it from mp_path_join_bstr() to this new function. --- options/path.c | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) (limited to 'options/path.c') diff --git a/options/path.c b/options/path.c index a17d8b4325..9c996ce664 100644 --- a/options/path.c +++ b/options/path.c @@ -254,23 +254,31 @@ char *mp_splitext(const char *path, bstr *root) return (char *)split + 1; } -char *mp_path_join_bstr(void *talloc_ctx, struct bstr p1, struct bstr p2) +bool mp_path_is_absolute(struct bstr path) { - if (p1.len == 0) - return bstrdup0(talloc_ctx, p2); - if (p2.len == 0) - return bstrdup0(talloc_ctx, p1); + if (path.len && strchr(mp_path_separators, path.start[0])) + return true; - bool is_absolute = strchr(mp_path_separators, p2.start[0]); #if HAVE_DOS_PATHS // Note: "X:filename" is a path relative to the current working directory // of drive X, and thus is not an absolute path. It needs to be // followed by \ or /. - if (p2.len >= 3 && p2.start[1] == ':' && - strchr(mp_path_separators, p2.start[2])) - is_absolute = true; + if (path.len >= 3 && path.start[1] == ':' && + strchr(mp_path_separators, path.start[2])) + return true; #endif - if (is_absolute) + + return false; +} + +char *mp_path_join_bstr(void *talloc_ctx, struct bstr p1, struct bstr p2) +{ + if (p1.len == 0) + return bstrdup0(talloc_ctx, p2); + if (p2.len == 0) + return bstrdup0(talloc_ctx, p1); + + if (mp_path_is_absolute(p2)) return bstrdup0(talloc_ctx, p2); bool have_separator = strchr(mp_path_separators, p1.start[p1.len - 1]); -- cgit v1.2.3