machine: parse and store extension-release

Follow the same pattern as os-release parsing, and store the key-value
pairs in a strv if found
This commit is contained in:
Luca Boccassi
2021-02-17 21:45:31 +00:00
parent 7718ac9721
commit bcf94222a5
2 changed files with 9 additions and 1 deletions
+8 -1
View File
@@ -71,6 +71,7 @@ static Image *image_free(Image *i) {
free(i->hostname);
strv_free(i->machine_info);
strv_free(i->os_release);
strv_free(i->extension_release);
return mfree(i);
}
@@ -1129,7 +1130,7 @@ int image_read_metadata(Image *i) {
case IMAGE_SUBVOLUME:
case IMAGE_DIRECTORY: {
_cleanup_strv_free_ char **machine_info = NULL, **os_release = NULL;
_cleanup_strv_free_ char **machine_info = NULL, **os_release = NULL, **extension_release = NULL;
sd_id128_t machine_id = SD_ID128_NULL;
_cleanup_free_ char *hostname = NULL;
_cleanup_free_ char *path = NULL;
@@ -1176,10 +1177,15 @@ int image_read_metadata(Image *i) {
if (r < 0)
log_debug_errno(r, "Failed to read os-release in image, ignoring: %m");
r = load_extension_release_pairs(i->path, i->name, &extension_release);
if (r < 0)
log_debug_errno(r, "Failed to read extension-release in image, ignoring: %m");
free_and_replace(i->hostname, hostname);
i->machine_id = machine_id;
strv_free_and_replace(i->machine_info, machine_info);
strv_free_and_replace(i->os_release, os_release);
strv_free_and_replace(i->extension_release, extension_release);
break;
}
@@ -1205,6 +1211,7 @@ int image_read_metadata(Image *i) {
i->machine_id = m->machine_id;
strv_free_and_replace(i->machine_info, m->machine_info);
strv_free_and_replace(i->os_release, m->os_release);
strv_free_and_replace(i->extension_release, m->extension_release);
break;
}
+1
View File
@@ -50,6 +50,7 @@ typedef struct Image {
sd_id128_t machine_id;
char **machine_info;
char **os_release;
char **extension_release;
bool metadata_valid:1;
bool discoverable:1; /* true if we know for sure that image_find() would find the image given just the short name */