From: Lennart Poettering Date: Fri, 6 Apr 2018 16:58:28 +0000 (+0200) Subject: machine-image: add APIs for converting arbitrary image paths into Image objects X-Git-Tag: v239~208^2~10 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2ddf182baaec5fa4e071e1af01cc3c0e03ad7e02;p=thirdparty%2Fsystemd.git machine-image: add APIs for converting arbitrary image paths into Image objects --- diff --git a/src/shared/machine-image.c b/src/shared/machine-image.c index 9521687c5ad..274d5401339 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 dafea0c903d..f92e744f459 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);