]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
machine-image: add APIs for converting arbitrary image paths into Image objects
authorLennart Poettering <lennart@poettering.net>
Fri, 6 Apr 2018 16:58:28 +0000 (18:58 +0200)
committerLennart Poettering <lennart@poettering.net>
Thu, 24 May 2018 15:01:57 +0000 (17:01 +0200)
src/shared/machine-image.c
src/shared/machine-image.h

index 9521687c5ad2c2326a78c125f110a4354b37d785..274d54013391103a35e7a46f6f3dd68e9b0b8e44 100644 (file)
@@ -469,6 +469,20 @@ int image_find(ImageClass class, const char *name, Image **ret) {
         return -ENOENT;
 };
 
+int image_from_path(const char *path, Image **ret) {
+        if (path_equal(path, "/"))
+                return image_make(".host", AT_FDCWD, NULL, "/", NULL, ret);
+
+        return image_make(NULL, AT_FDCWD, NULL, path, NULL, ret);
+}
+
+int image_find_harder(ImageClass class, const char *name_or_path, Image **ret) {
+        if (image_name_is_valid(name_or_path))
+                return image_find(class, name_or_path, ret);
+
+        return image_from_path(name_or_path, ret);
+}
+
 int image_discover(ImageClass class, Hashmap *h) {
         const char *path;
         int r;
index dafea0c903d2c0c2012fc51dbfd502b2962f0354..f92e744f4597f4d1e58da0755ae0a71dedd0d545 100644 (file)
@@ -66,6 +66,8 @@ DEFINE_TRIVIAL_CLEANUP_FUNC(Image*, image_unref);
 DEFINE_TRIVIAL_CLEANUP_FUNC(Hashmap*, image_hashmap_free);
 
 int image_find(ImageClass class, const char *name, Image **ret);
+int image_from_path(const char *path, Image **ret);
+int image_find_harder(ImageClass class, const char *name_or_path, Image **ret);
 int image_discover(ImageClass class, Hashmap *map);
 
 int image_remove(Image *i);