]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
os-util: add path_is_extension_tree helper
authorLuca Boccassi <luca.boccassi@microsoft.com>
Wed, 27 Jan 2021 12:52:10 +0000 (12:52 +0000)
committerLuca Boccassi <luca.boccassi@microsoft.com>
Wed, 17 Feb 2021 21:24:23 +0000 (21:24 +0000)
src/shared/os-util.c
src/shared/os-util.h

index 45c10ca9c5600812b686a5be6a63553d2e1472d7..3ecc03b02257ba94d8805c9384343c35de94c820 100644 (file)
@@ -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)
index 5b724eb7ac1e0116de919076c70e7dd728daa389..a6cedc6087d413df28359f85fbe1859f037b21cc 100644 (file)
@@ -3,10 +3,14 @@
 
 #include <stdio.h>
 
-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);