]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
util: add virCCWDeviceAddressFromString to virccw
authorBoris Fiuczynski <fiuczy@linux.ibm.com>
Fri, 13 May 2022 10:31:10 +0000 (12:31 +0200)
committerMichal Privoznik <mprivozn@redhat.com>
Mon, 23 May 2022 14:31:59 +0000 (16:31 +0200)
Add a method to parse a ccw device address from a string.

Signed-off-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
po/POTFILES
src/libvirt_private.syms
src/util/virccw.c
src/util/virccw.h

index a0f4077977ab5f5d98ccf8e22fc34ea9545fe698..faaba53c8ff4349ff7fe511d8393646302f06f98 100644 (file)
@@ -248,6 +248,7 @@ src/util/virauth.c
 src/util/virauthconfig.c
 src/util/virbitmap.c
 src/util/vircgroup.c
+src/util/virccw.c
 src/util/vircgroupbackend.c
 src/util/vircgroupbackend.h
 src/util/vircgroupv1.c
index 6f50b4ca1d532935e65c565745b24b4dd8da9ad8..bfedd853268df79626b80e1518f5cf7f8c3d7a24 100644 (file)
@@ -1926,6 +1926,7 @@ virBufferVasprintf;
 # util/virccw.h
 virCCWDeviceAddressAsString;
 virCCWDeviceAddressEqual;
+virCCWDeviceAddressFromString;
 virCCWDeviceAddressIncrement;
 virCCWDeviceAddressIsValid;
 virCCWDeviceAddressParseFromString;
index 33df1c24284e966d09764fe6baa744ae3972867d..d7417430503f1497cd957cf440564187fae57fbe 100644 (file)
 
 #include <config.h>
 #include "virccw.h"
+#include "virerror.h"
 #include "virstring.h"
 
+#define VIR_FROM_THIS VIR_FROM_NONE
+
 
 bool
 virCCWDeviceAddressIsValid(virCCWDeviceAddress *addr)
@@ -49,6 +52,26 @@ virCCWDeviceAddressAsString(virCCWDeviceAddress *addr)
     return g_strdup_printf(VIR_CCW_DEVICE_ADDRESS_FMT, addr->cssid, addr->ssid, addr->devno);
 }
 
+virCCWDeviceAddress *
+virCCWDeviceAddressFromString(const char *address)
+{
+    g_autofree virCCWDeviceAddress *ccw = NULL;
+
+    ccw = g_new0(virCCWDeviceAddress, 1);
+
+    if (virCCWDeviceAddressParseFromString(address,
+                                           &ccw->cssid,
+                                           &ccw->ssid,
+                                           &ccw->devno) < 0) {
+        virReportError(VIR_ERR_INTERNAL_ERROR,
+                       _("Failed to parse CCW address '%s'"),
+                       address);
+        return NULL;
+    }
+
+    return g_steal_pointer(&ccw);
+}
+
 int
 virCCWDeviceAddressIncrement(virCCWDeviceAddress *addr)
 {
index df0273bcacd9ad37ce256352c71ccd1059fd8410..80cc716811c290ecbac7e6ae0690fcd54a87e39b 100644 (file)
@@ -41,6 +41,9 @@ bool virCCWDeviceAddressEqual(virCCWDeviceAddress *addr1,
 
 char* virCCWDeviceAddressAsString(virCCWDeviceAddress *addr)
     ATTRIBUTE_NONNULL(1);
+virCCWDeviceAddress *virCCWDeviceAddressFromString(const char *address)
+    ATTRIBUTE_NONNULL(1);
+
 int virCCWDeviceAddressIncrement(virCCWDeviceAddress *addr);
 
 int virCCWDeviceAddressParseFromString(const char *address,