X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fshared%2Fpath-util.c;h=b9db7f1047ab8c6e31b970a63cb9188c7b6a3ef3;hb=61adca52f6f0b119e501c523008a454887cdf2b9;hp=ad9dc882b2ac1ef6c69ed2d4529589fcaaafab3d;hpb=e40872fc538f3216fd4d00aa969785b999a357bf;p=elogind.git diff --git a/src/shared/path-util.c b/src/shared/path-util.c index ad9dc882b..b9db7f104 100644 --- a/src/shared/path-util.c +++ b/src/shared/path-util.c @@ -454,10 +454,7 @@ char* path_join(const char *root, const char *path, const char *rest) { int path_is_mount_point(const char *t, bool allow_symlink) { - union file_handle_union h = { - .handle.handle_bytes = MAX_HANDLE_SZ - }; - + union file_handle_union h = FILE_HANDLE_INIT; int mount_id = -1, mount_id_parent = -1; _cleanup_free_ char *parent = NULL; struct stat a, b; @@ -524,6 +521,9 @@ fallback: return -errno; } + free(parent); + parent = NULL; + r = path_get_parent(t, &parent); if (r < 0) return r; @@ -560,14 +560,14 @@ int path_is_os_tree(const char *path) { int r; /* We use /usr/lib/os-release as flag file if something is an OS */ - p = strappenda(path, "/usr/lib/os-release"); + p = strjoina(path, "/usr/lib/os-release"); r = access(p, F_OK); if (r >= 0) return 1; /* Also check for the old location in /etc, just in case. */ - p = strappenda(path, "/etc/os-release"); + p = strjoina(path, "/etc/os-release"); r = access(p, F_OK); return r >= 0; @@ -665,7 +665,7 @@ int fsck_exists(const char *fstype) { const char *checker; int r; - checker = strappenda("fsck.", fstype); + checker = strjoina("fsck.", fstype); r = find_binary(checker, true, &p); if (r < 0)