mirror of
https://github.com/Dasharo/systemd.git
synced 2026-03-06 15:02:31 -08:00
64 lines
1.3 KiB
C
64 lines
1.3 KiB
C
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
|
|
|
#include <fcntl.h>
|
|
#include <sys/stat.h>
|
|
|
|
#include "sysupdate-instance.h"
|
|
|
|
void instance_metadata_destroy(InstanceMetadata *m) {
|
|
assert(m);
|
|
free(m->version);
|
|
}
|
|
|
|
int instance_new(
|
|
Resource *rr,
|
|
const char *path,
|
|
const InstanceMetadata *f,
|
|
Instance **ret) {
|
|
|
|
_cleanup_(instance_freep) Instance *i = NULL;
|
|
_cleanup_free_ char *p = NULL, *v = NULL;
|
|
|
|
assert(rr);
|
|
assert(path);
|
|
assert(f);
|
|
assert(f->version);
|
|
assert(ret);
|
|
|
|
p = strdup(path);
|
|
if (!p)
|
|
return log_oom();
|
|
|
|
v = strdup(f->version);
|
|
if (!v)
|
|
return log_oom();
|
|
|
|
i = new(Instance, 1);
|
|
if (!i)
|
|
return log_oom();
|
|
|
|
*i = (Instance) {
|
|
.resource = rr,
|
|
.metadata = *f,
|
|
.path = TAKE_PTR(p),
|
|
.partition_info = PARTITION_INFO_NULL,
|
|
};
|
|
|
|
i->metadata.version = TAKE_PTR(v);
|
|
|
|
*ret = TAKE_PTR(i);
|
|
return 0;
|
|
}
|
|
|
|
Instance *instance_free(Instance *i) {
|
|
if (!i)
|
|
return NULL;
|
|
|
|
instance_metadata_destroy(&i->metadata);
|
|
|
|
free(i->path);
|
|
partition_info_destroy(&i->partition_info);
|
|
|
|
return mfree(i);
|
|
}
|