mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-22 11:22:23 +00:00
conf: virDomainDeviceInfoCopy utility function
This does a shallow copy of all the bits, then strdups the two items that are actually allocated separately.
This commit is contained in:
parent
310945597c
commit
11c47d979c
@ -2011,6 +2011,30 @@ virDomainDeviceInfoIsSet(virDomainDeviceInfoPtr info, unsigned int flags)
|
||||
return false;
|
||||
}
|
||||
|
||||
int
|
||||
virDomainDeviceInfoCopy(virDomainDeviceInfoPtr dst,
|
||||
virDomainDeviceInfoPtr src)
|
||||
{
|
||||
/* Assume that dst is already cleared */
|
||||
|
||||
/* first a shallow copy of *everything* */
|
||||
*dst = *src;
|
||||
|
||||
/* then redo the two fields that are pointers */
|
||||
dst->alias = NULL;
|
||||
dst->romfile = NULL;
|
||||
|
||||
if (src->alias && !(dst->alias = strdup(src->alias))) {
|
||||
virReportOOMError();
|
||||
return -1;
|
||||
}
|
||||
if (src->romfile && !(dst->romfile = strdup(src->romfile))) {
|
||||
virReportOOMError();
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void virDomainDeviceInfoClear(virDomainDeviceInfoPtr info)
|
||||
{
|
||||
VIR_FREE(info->alias);
|
||||
|
@ -1891,6 +1891,8 @@ virDomainDeviceDefPtr virDomainDeviceDefCopy(virCapsPtr caps,
|
||||
virDomainDeviceDefPtr src);
|
||||
int virDomainDeviceAddressIsValid(virDomainDeviceInfoPtr info,
|
||||
int type);
|
||||
int virDomainDeviceInfoCopy(virDomainDeviceInfoPtr dst,
|
||||
virDomainDeviceInfoPtr src);
|
||||
void virDomainDeviceInfoClear(virDomainDeviceInfoPtr info);
|
||||
void virDomainDefClearPCIAddresses(virDomainDefPtr def);
|
||||
void virDomainDefClearDeviceAliases(virDomainDefPtr def);
|
||||
|
@ -328,6 +328,7 @@ virDomainDeviceAddressTypeToString;
|
||||
virDomainDeviceDefCopy;
|
||||
virDomainDeviceDefFree;
|
||||
virDomainDeviceDefParse;
|
||||
virDomainDeviceInfoCopy;
|
||||
virDomainDeviceInfoIterate;
|
||||
virDomainDeviceTypeToString;
|
||||
virDomainDiskBusTypeToString;
|
||||
|
Loading…
x
Reference in New Issue
Block a user