On Tue, Jan 05, 2021 at 10:15:47AM +0100, Michal Privoznik wrote:
On 1/5/21 12:32 AM, Daniel Henrique Barboza wrote:On 12/21/20 1:19 PM, Martin Kletzander wrote:And return the actual extracted value in a parameter. This way we can later return success even without any extracted value. Signed-off-by: Martin Kletzander <mkletzan@xxxxxxxxxx> --- src/esx/esx_driver.c | 31 ++++++++++++++++++------------- src/vmware/vmware_conf.c | 10 +++++----- src/vmx/vmx.c | 21 ++++++++++----------- src/vmx/vmx.h | 2 +- tests/vmx2xmltest.c | 19 ++++++++++--------- 5 files changed, 44 insertions(+), 39 deletions(-)diff --git a/src/vmx/vmx.h b/src/vmx/vmx.h index df5d39157b99..e5420c970a4b 100644 --- a/src/vmx/vmx.h +++ b/src/vmx/vmx.h @@ -36,7 +36,7 @@ virDomainXMLOptionPtr virVMXDomainXMLConfInit(virCapsPtr caps); * Context */ -typedef char * (*virVMXParseFileName)(const char *fileName, void *opaque); +typedef int (*virVMXParseFileName)(const char *fileName, void *opaque, char **src);This change is making the build break in my env: ../src/vmware/vmware_conf.c: In function ‘vmwareLoadDomains’: ../src/vmware/vmware_conf.c:142:23: error: assignment to ‘virVMXParseFileName’ {aka ‘int (*)(const char *, void *, char **)’} from incompatible pointer type ‘char * (*)(const char *, void *)’ [-Werror=incompatible-pointer-types] 142 | ctx.parseFileName = vmwareCopyVMXFileName; | ^ ../src/vmware/vmware_conf.c: At top level: ../src/vmware/vmware_conf.c:511:1: error: conflicting types for ‘vmwareCopyVMXFileName’ 511 | vmwareCopyVMXFileName(const char *datastorePath, void *opaque G_GNUC_UNUSED, | ^~~~~~~~~~~~~~~~~~~~~ In file included from ../src/vmware/vmware_conf.c:32: ../src/vmware/vmware_conf.h:86:7: note: previous declaration of ‘vmwareCopyVMXFileName’ was here 86 | char *vmwareCopyVMXFileName(const char *datastorePath, void *opaque); | ^~~~~~~~~~~~~~~~~~~~~ cc1: all warnings being treated as errors (...) ../src/vmware/vmware_driver.c: In function ‘vmwareConnectDomainXMLFromNative’: ../src/vmware/vmware_driver.c:953:23: error: assignment to ‘virVMXParseFileName’ {aka ‘int (*)(const char *, void *, char **)’} from incompatible pointer type ‘char * (*)(const char *, void *)’ [-Werror=incompatible-pointer-types] 953 | ctx.parseFileName = vmwareCopyVMXFileName; | ^ cc1: all warnings being treated as errors I believe there are a handful of virVMXParseFileName impl instances that needs to be changed as well.Indeed. I think we will need to change virVMXFormatFileName() too at the same time, because of vmwareCopyVMXFileName() which is passed as formatFileName callback.
Not only that, but vmware_driver uses the smae function for parsing and formatting. They are, however, just g_strdup()s, so I can split them no problem. Thanks for noticing. Anyway, just looking at the commits they should be done a bit differently, I had some cock-ups there, I guess. I'll send a v3.
BTW: I've found out that we don't automatically enable vmware driver. I had to enable it explicitly: meson -Dsystem=true -Ddriver_vmware=enabled _build I'm looking into that.
We're not building it downstream even, I think, I managed to fix it for ESX where the issue was happening actually. The vmware driver just controls vmware player/workstation locally. Are there actually people using that?
Michal
Attachment:
signature.asc
Description: PGP signature