From 5b738195a2ccd67d053e4e0e059c518872f34997 Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Tue, 7 Mar 2023 16:18:51 +0100 Subject: [PATCH] virStringParseVersion: Parse into 'unsigned long long' Phase out 'unsigned long' Signed-off-by: Peter Krempa Reviewed-by: Martin Kletzander --- src/bhyve/bhyve_driver.c | 5 ++++- src/ch/ch_conf.c | 2 +- src/esx/esx_vi.h | 4 ++-- src/lxc/lxc_driver.c | 5 ++++- src/network/bridge_driver_linux.c | 2 +- src/openvz/openvz_conf.c | 2 +- src/util/virdnsmasq.c | 4 ++-- src/util/virfirewalld.c | 4 ++-- src/util/virfirewalld.h | 2 +- src/util/virstring.c | 4 ++-- src/util/virstring.h | 2 +- src/vbox/vbox_common.c | 5 ++++- src/vmware/vmware_conf.c | 5 ++++- src/vz/vz_utils.c | 5 ++++- tests/testutilsqemu.c | 4 ++-- tests/utiltest.c | 8 ++++---- tools/virt-host-validate-common.c | 2 +- 17 files changed, 40 insertions(+), 25 deletions(-) diff --git a/src/bhyve/bhyve_driver.c b/src/bhyve/bhyve_driver.c index 9ece06447d..10ef2f2f41 100644 --- a/src/bhyve/bhyve_driver.c +++ b/src/bhyve/bhyve_driver.c @@ -248,6 +248,7 @@ bhyveConnectGetSysinfo(virConnectPtr conn, unsigned int flags) static int bhyveConnectGetVersion(virConnectPtr conn, unsigned long *version) { + unsigned long long tmpver; struct utsname ver; if (virConnectGetVersionEnsureACL(conn) < 0) @@ -255,12 +256,14 @@ bhyveConnectGetVersion(virConnectPtr conn, unsigned long *version) uname(&ver); - if (virStringParseVersion(version, ver.release, true) < 0) { + if (virStringParseVersion(&tmpver, ver.release, true) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, _("Unknown release: %1$s"), ver.release); return -1; } + *version = tmpver; + return 0; } diff --git a/src/ch/ch_conf.c b/src/ch/ch_conf.c index 2bb2eaf820..a8565d9537 100644 --- a/src/ch/ch_conf.c +++ b/src/ch/ch_conf.c @@ -175,7 +175,7 @@ virCHDriverConfigDispose(void *obj) int chExtractVersion(virCHDriver *driver) { - unsigned long version; + unsigned long long version; g_autofree char *help = NULL; char *tmp = NULL; g_autofree char *ch_cmd = g_find_program_in_path(CH_CMD); diff --git a/src/esx/esx_vi.h b/src/esx/esx_vi.h index 17d0bf9fea..b5eeaa750e 100644 --- a/src/esx/esx_vi.h +++ b/src/esx/esx_vi.h @@ -179,9 +179,9 @@ struct _esxVI_Context { char *username; char *password; esxVI_ServiceContent *service; - unsigned long apiVersion; /* = 1000000 * major + 1000 * minor + micro */ + unsigned long long apiVersion; /* = 1000000 * major + 1000 * minor + micro */ esxVI_ProductLine productLine; - unsigned long productVersion; /* = 1000000 * major + 1000 * minor + micro */ + unsigned long long productVersion; /* = 1000000 * major + 1000 * minor + micro */ esxVI_UserSession *session; /* ... except the session ... */ virMutex *sessionLock; /* ... that is protected by this mutex */ esxVI_Datacenter *datacenter; diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c index 35eb29032e..3bc01cbc23 100644 --- a/src/lxc/lxc_driver.c +++ b/src/lxc/lxc_driver.c @@ -1641,6 +1641,7 @@ lxcConnectSupportsFeature(virConnectPtr conn, int feature) static int lxcConnectGetVersion(virConnectPtr conn, unsigned long *version) { + unsigned long long tmpver; struct utsname ver; uname(&ver); @@ -1648,11 +1649,13 @@ static int lxcConnectGetVersion(virConnectPtr conn, unsigned long *version) if (virConnectGetVersionEnsureACL(conn) < 0) return -1; - if (virStringParseVersion(version, ver.release, true) < 0) { + if (virStringParseVersion(&tmpver, ver.release, true) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, _("Unknown release: %1$s"), ver.release); return -1; } + *version = tmpver; + return 0; } diff --git a/src/network/bridge_driver_linux.c b/src/network/bridge_driver_linux.c index 860793fba6..1ef5b9d917 100644 --- a/src/network/bridge_driver_linux.c +++ b/src/network/bridge_driver_linux.c @@ -869,7 +869,7 @@ int networkAddFirewallRules(virNetworkDef *def) if (virFirewallDInterfaceSetZone(def->bridge, "libvirt") < 0) return -1; } else { - unsigned long version; + unsigned long long version; int vresult = virFirewallDGetVersion(&version); if (vresult < 0) diff --git a/src/openvz/openvz_conf.c b/src/openvz/openvz_conf.c index 1331860a82..eab3f748d0 100644 --- a/src/openvz/openvz_conf.c +++ b/src/openvz/openvz_conf.c @@ -64,7 +64,7 @@ strtoI(const char *str) static int openvzExtractVersionInfo(const char *cmdstr, int *retversion) { - unsigned long version; + unsigned long long version; g_autofree char *help = NULL; char *tmp; g_autoptr(virCommand) cmd = virCommandNewArgList(cmdstr, "--help", NULL); diff --git a/src/util/virdnsmasq.c b/src/util/virdnsmasq.c index 91106b5a28..7d6de943cf 100644 --- a/src/util/virdnsmasq.c +++ b/src/util/virdnsmasq.c @@ -603,7 +603,7 @@ dnsmasqCapsSetFromBuffer(dnsmasqCaps *caps, const char *buf) { int len; const char *p; - unsigned long version; + unsigned long long version; p = STRSKIP(buf, DNSMASQ_VERSION_STR); if (!p) @@ -616,7 +616,7 @@ dnsmasqCapsSetFromBuffer(dnsmasqCaps *caps, const char *buf) if (version < DNSMASQ_MIN_MAJOR * 1000000 + DNSMASQ_MIN_MINOR * 1000) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("dnsmasq version >= %1$u.%2$u required but %3$lu.%4$lu found"), + _("dnsmasq version >= %1$u.%2$u required but %3$llu.%4$llu found"), DNSMASQ_MIN_MAJOR, DNSMASQ_MIN_MINOR, version / 1000000, version % 1000000 / 1000); diff --git a/src/util/virfirewalld.c b/src/util/virfirewalld.c index 7733ef2410..6fc54f357d 100644 --- a/src/util/virfirewalld.c +++ b/src/util/virfirewalld.c @@ -80,7 +80,7 @@ virFirewallDIsRegistered(void) * Returns 0 if version was successfully retrieved, or -1 on error */ int -virFirewallDGetVersion(unsigned long *version) +virFirewallDGetVersion(unsigned long long *version) { GDBusConnection *sysbus = virGDBusGetSystemBus(); g_autoptr(GVariant) message = NULL; @@ -114,7 +114,7 @@ virFirewallDGetVersion(unsigned long *version) return -1; } - VIR_DEBUG("FirewallD version: %s - %lu", versionStr, *version); + VIR_DEBUG("FirewallD version: %s - %llu", versionStr, *version); return 0; } diff --git a/src/util/virfirewalld.h b/src/util/virfirewalld.h index fa4c9e702c..004d10ec29 100644 --- a/src/util/virfirewalld.h +++ b/src/util/virfirewalld.h @@ -29,7 +29,7 @@ typedef enum { VIR_FIREWALLD_BACKEND_LAST, } virFirewallDBackendType; -int virFirewallDGetVersion(unsigned long *version); +int virFirewallDGetVersion(unsigned long long *version); int virFirewallDGetBackend(void); int virFirewallDIsRegistered(void); int virFirewallDGetZones(char ***zones, size_t *nzones); diff --git a/src/util/virstring.c b/src/util/virstring.c index b49c0f86b6..d9c9c8f738 100644 --- a/src/util/virstring.c +++ b/src/util/virstring.c @@ -1022,7 +1022,7 @@ int virStringParseYesNo(const char *str, bool *result) /** * virStringParseVersion: - * @version: unsigned long pointer to output the version number + * @version: unsigned long long pointer to output the version number * @str: const char pointer to the version string * @allowMissing: true to treat 3 like 3.0.0, false to error out on * missing minor or micro @@ -1037,7 +1037,7 @@ int virStringParseYesNo(const char *str, bool *result) * Returns the 0 for success, -1 for error. */ int -virStringParseVersion(unsigned long *version, +virStringParseVersion(unsigned long long *version, const char *str, bool allowMissing) { diff --git a/src/util/virstring.h b/src/util/virstring.h index ec8ceb0022..0f8b5d0664 100644 --- a/src/util/virstring.h +++ b/src/util/virstring.h @@ -136,6 +136,6 @@ int virStringParseYesNo(const char *str, bool *result) G_GNUC_WARN_UNUSED_RESULT; -int virStringParseVersion(unsigned long *version, +int virStringParseVersion(unsigned long long *version, const char *str, bool allowMissing); diff --git a/src/vbox/vbox_common.c b/src/vbox/vbox_common.c index a8694c3fb1..dba4af1a44 100644 --- a/src/vbox/vbox_common.c +++ b/src/vbox/vbox_common.c @@ -272,6 +272,7 @@ vboxExtractVersion(void) int ret = -1; PRUnichar *versionUtf16 = NULL; char *vboxVersion = NULL; + unsigned long long version; nsresult rc; if (vbox_driver->version > 0) @@ -283,9 +284,11 @@ vboxExtractVersion(void) gVBoxAPI.UPFN.Utf16ToUtf8(vbox_driver->pFuncs, versionUtf16, &vboxVersion); - if (virStringParseVersion(&vbox_driver->version, vboxVersion, false) >= 0) + if (virStringParseVersion(&version, vboxVersion, false) >= 0) ret = 0; + vbox_driver->version = version; + gVBoxAPI.UPFN.Utf8Free(vbox_driver->pFuncs, vboxVersion); gVBoxAPI.UPFN.ComUnallocMem(vbox_driver->pFuncs, versionUtf16); vboxVersion = NULL; diff --git a/src/vmware/vmware_conf.c b/src/vmware/vmware_conf.c index 8303591a9b..ba4e4d28dc 100644 --- a/src/vmware/vmware_conf.c +++ b/src/vmware/vmware_conf.c @@ -197,6 +197,7 @@ vmwareSetSentinal(const char **prog, const char *key) int vmwareParseVersionStr(int type, const char *verbuf, unsigned long *version) { + unsigned long long tmpver; const char *pattern; const char *tmp; @@ -228,12 +229,14 @@ vmwareParseVersionStr(int type, const char *verbuf, unsigned long *version) return -1; } - if (virStringParseVersion(version, tmp, false) < 0) { + if (virStringParseVersion(&tmpver, tmp, false) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("version parsing error")); return -1; } + *version = tmpver; + return 0; } diff --git a/src/vz/vz_utils.c b/src/vz/vz_utils.c index 239d0db277..2db1146149 100644 --- a/src/vz/vz_utils.c +++ b/src/vz/vz_utils.c @@ -154,6 +154,7 @@ vzInitVersion(struct _vzDriver *driver) g_autofree char *output = NULL; char *sVer, *tmp; const char *searchStr = "prlsrvctl version "; + unsigned long long version; int ret = -1; output = vzGetOutput(PRLSRVCTL, "--help", NULL); @@ -183,11 +184,13 @@ vzInitVersion(struct _vzDriver *driver) } tmp[0] = '\0'; - if (virStringParseVersion(&(driver->vzVersion), sVer, true) < 0) { + if (virStringParseVersion(&version, sVer, true) < 0) { vzParseError(); return -1; } + driver->vzVersion = version; + vzInitCaps(driver->vzVersion, &driver->vzCaps); return 0; diff --git a/tests/testutilsqemu.c b/tests/testutilsqemu.c index a5780dc746..41727cfd1a 100644 --- a/tests/testutilsqemu.c +++ b/tests/testutilsqemu.c @@ -718,8 +718,8 @@ testQemuGetLatestCapsForArch(const char *arch, g_autoptr(DIR) dir = NULL; int rc; g_autofree char *fullsuffix = NULL; - unsigned long maxver = 0; - unsigned long ver; + unsigned long long maxver = 0; + unsigned long long ver; g_autofree char *maxname = NULL; fullsuffix = g_strdup_printf("%s.%s", arch, suffix); diff --git a/tests/utiltest.c b/tests/utiltest.c index e90baca65f..5930557c08 100644 --- a/tests/utiltest.c +++ b/tests/utiltest.c @@ -124,7 +124,7 @@ struct testVersionString const char *string; bool allowMissing; int result; - unsigned long version; + unsigned long long version; }; static struct testVersionString versions[] = { @@ -146,7 +146,7 @@ testParseVersionString(const void *data G_GNUC_UNUSED) { int result; size_t i; - unsigned long version; + unsigned long long version; for (i = 0; i < G_N_ELEMENTS(versions); ++i) { result = virStringParseVersion(&version, versions[i].string, @@ -165,8 +165,8 @@ testParseVersionString(const void *data G_GNUC_UNUSED) if (version != versions[i].version) { VIR_TEST_DEBUG("\nVersion string [%s]", versions[i].string); - VIR_TEST_DEBUG("Expect version [%lu]", versions[i].version); - VIR_TEST_DEBUG("Actual version [%lu]", version); + VIR_TEST_DEBUG("Expect version [%llu]", versions[i].version); + VIR_TEST_DEBUG("Actual version [%llu]", version); return -1; } diff --git a/tools/virt-host-validate-common.c b/tools/virt-host-validate-common.c index 3fc9ddb152..e96986bb48 100644 --- a/tools/virt-host-validate-common.c +++ b/tools/virt-host-validate-common.c @@ -251,7 +251,7 @@ int virHostValidateLinuxKernel(const char *hvname, const char *hint) { struct utsname uts; - unsigned long thisversion; + unsigned long long thisversion; uname(&uts);