basic: add path_equal_filename helper
This commit is contained in:
@@ -527,6 +527,27 @@ bool path_equal_or_files_same(const char *a, const char *b, int flags) {
|
||||
return path_equal(a, b) || files_same(a, b, flags) > 0;
|
||||
}
|
||||
|
||||
bool path_equal_filename(const char *a, const char *b) {
|
||||
_cleanup_free_ char *a_basename = NULL, *b_basename = NULL;
|
||||
int r;
|
||||
|
||||
assert(a);
|
||||
assert(b);
|
||||
|
||||
r = path_extract_filename(a, &a_basename);
|
||||
if (r < 0) {
|
||||
log_debug_errno(r, "Failed to parse basename of %s: %m", a);
|
||||
return false;
|
||||
}
|
||||
r = path_extract_filename(b, &b_basename);
|
||||
if (r < 0) {
|
||||
log_debug_errno(r, "Failed to parse basename of %s: %m", b);
|
||||
return false;
|
||||
}
|
||||
|
||||
return path_equal(a_basename, b_basename);
|
||||
}
|
||||
|
||||
char* path_join_internal(const char *first, ...) {
|
||||
char *joined, *q;
|
||||
const char *p;
|
||||
|
||||
@@ -61,6 +61,8 @@ char* path_startswith(const char *path, const char *prefix) _pure_;
|
||||
int path_compare(const char *a, const char *b) _pure_;
|
||||
bool path_equal(const char *a, const char *b) _pure_;
|
||||
bool path_equal_or_files_same(const char *a, const char *b, int flags);
|
||||
/* Compares only the last portion of the input paths, ie: the filenames */
|
||||
bool path_equal_filename(const char *a, const char *b);
|
||||
char* path_join_internal(const char *first, ...);
|
||||
#define path_join(x, ...) path_join_internal(x, __VA_ARGS__, POINTER_MAX)
|
||||
|
||||
|
||||
@@ -113,6 +113,11 @@ static void test_path(void) {
|
||||
assert_se(!path_equal_ptr("/a", "/b"));
|
||||
assert_se(!path_equal_ptr("/a", NULL));
|
||||
assert_se(!path_equal_ptr(NULL, "/a"));
|
||||
|
||||
assert_se(path_equal_filename("/a/c", "/b/c"));
|
||||
assert_se(path_equal_filename("/a", "/a"));
|
||||
assert_se(!path_equal_filename("/a/b", "/a/c"));
|
||||
assert_se(!path_equal_filename("/b", "/c"));
|
||||
}
|
||||
|
||||
static void test_path_equal_root(void) {
|
||||
|
||||
Reference in New Issue
Block a user