From 2ddf182baaec5fa4e071e1af01cc3c0e03ad7e02 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 6 Apr 2018 18:58:28 +0200 Subject: [PATCH] machine-image: add APIs for converting arbitrary image paths into Image objects --- src/shared/machine-image.c | 14 ++++++++++++++ src/shared/machine-image.h | 2 ++ 2 files changed, 16 insertions(+) diff --git a/src/shared/machine-image.c b/src/shared/machine-image.c index 9521687c5a..274d540133 100644 --- a/src/shared/machine-image.c +++ b/src/shared/machine-image.c @@ -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; diff --git a/src/shared/machine-image.h b/src/shared/machine-image.h index dafea0c903..f92e744f45 100644 --- a/src/shared/machine-image.h +++ b/src/shared/machine-image.h @@ -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);