From: Luca Boccassi Date: Wed, 27 Jan 2021 12:52:10 +0000 (+0000) Subject: os-util: add path_is_extension_tree helper X-Git-Tag: v248-rc1~66^2~8 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1d0796739c28ba8be67f42110eb36f231a6ca953;p=thirdparty%2Fsystemd.git os-util: add path_is_extension_tree helper --- diff --git a/src/shared/os-util.c b/src/shared/os-util.c index 45c10ca9c56..3ecc03b0225 100644 --- a/src/shared/os-util.c +++ b/src/shared/os-util.c @@ -11,7 +11,7 @@ #include "string-util.h" #include "strv.h" -int path_is_os_tree(const char *path) { +int path_is_extension_tree(const char *path, const char *extension) { int r; assert(path); @@ -22,8 +22,9 @@ int path_is_os_tree(const char *path) { if (laccess(path, F_OK) < 0) return -errno; - /* We use {/etc|/usr/lib}/os-release as flag file if something is an OS */ - r = open_os_release(path, NULL, NULL); + /* We use /usr/lib/extension-release.d/extension-release.NAME as flag file if something is a system extension, + * and {/etc|/usr/lib}/os-release as flag file if something is an OS (in case extension == NULL) */ + r = open_extension_release(path, extension, NULL, NULL); if (r == -ENOENT) /* We got nothing */ return 0; if (r < 0) diff --git a/src/shared/os-util.h b/src/shared/os-util.h index 5b724eb7ac1..a6cedc6087d 100644 --- a/src/shared/os-util.h +++ b/src/shared/os-util.h @@ -3,10 +3,14 @@ #include -int path_is_os_tree(const char *path); - /* The *_extension_release flavours will look for /usr/lib/extension-release/extension-release.NAME * in accordance with the OS extension specification, rather than for /usr/lib/ or /etc/os-release. */ + +int path_is_extension_tree(const char *path, const char *extension); +static inline int path_is_os_tree(const char *path) { + return path_is_extension_tree(path, NULL); +} + int open_extension_release(const char *root, const char *extension, char **ret_path, int *ret_fd); static inline int open_os_release(const char *root, char **ret_path, int *ret_fd) { return open_extension_release(root, NULL, ret_path, ret_fd);