On 03/25/2016 05:05 AM, Hui Yiqun wrote:
getting err using virGetLastError() and then retrieving
message from err make developer have to test the value
of err and err->message and default to self-defined
unkown error message.
It's better to avoid it and using uniform
virGetLastErrorMessage
Thanks for the patch! There's several compiler warnings after this though,
which by default are errors for libvirt. They are of the form: error: unused
variable 'err' [-Werror=unused-variable] . I won't tell you where :) Check
the
patch for any places that the 'virErrorPtr err' definition wasn't deleted,
and
if there's no other uses in the function, delete the definition.
Make sure you aren't passing --disable-werror to ./configure (--enable-werror
is the default)
Also make sure to run 'make syntax-check', it will flag a couple style issues
you need to fix.
A few more comments below
diff --git a/daemon/libvirtd.c b/daemon/libvirtd.c
index 3d38a46..e526e55 100644
--- a/daemon/libvirtd.c
+++ b/daemon/libvirtd.c
@@ -1273,12 +1273,8 @@ int main(int argc, char **argv) {
/* Read the config file if it exists*/
if (remote_config_file &&
daemonConfigLoadFile(config, remote_config_file, implicit_conf) < 0) {
- virErrorPtr err = virGetLastError();
- if (err && err->message)
- VIR_ERROR(_("Can't load config file: %s: %s"),
- err->message, remote_config_file);
- else
- VIR_ERROR(_("Can't load config file: %s"),
remote_config_file);
+ VIR_ERROR(_("Can't load config file: %s: %s"),
+ virGetLastErrorMessage(), remote_config_file);
exit(EXIT_FAILURE);
}
This and (and the other places like it) changes the error message slightly,
but it's a good change. Just wanted to point it out
diff --git a/src/lxc/lxc_container.c b/src/lxc/lxc_container.c
index 348bbfb..4daba3a 100644
--- a/src/lxc/lxc_container.c
+++ b/src/lxc/lxc_container.c
@@ -2290,12 +2290,8 @@ static int lxcContainerChild(void *data)
if (ret != 0) {
VIR_DEBUG("Tearing down container");
- virErrorPtr err = virGetLastError();
- if (err && err->message)
- fprintf(stderr, "%s\n", err->message);
- else
- fprintf(stderr, "%s\n",
- _("Unknown failure in libvirt_lxc startup"));
+ fprintf(stderr, "Failure in libvirt_lxc startup%s\n",
+ virGetLastErrorMessage());
}
virCommandFree(cmd);
You dropped _() which ensures the string is translated. And you need a
separator between virGetLastErrorMessage() and the root string:
_("Unknown failure in libvirt_lxc startup: %s\n")
diff --git a/src/lxc/lxc_controller.c b/src/lxc/lxc_controller.c
index 8b5ec4c..b20a46f 100644
--- a/src/lxc/lxc_controller.c
+++ b/src/lxc/lxc_controller.c
@@ -2731,12 +2731,7 @@ int main(int argc, char *argv[])
cleanup:
if (rc < 0) {
- virErrorPtr err = virGetLastError();
- if (err && err->message)
- fprintf(stderr, "%s\n", err->message);
- else
- fprintf(stderr, "%s\n",
- _("Unknown failure in libvirt_lxc startup"));
+ fprintf(stderr, "Failure in libvirt_lxc startup: %s\n",
virGetLastErrorMessage());
}
Similarly this dropped the _() usage, please re-add it
diff --git a/src/util/iohelper.c b/src/util/iohelper.c
index 8a3c377..9fe0f81 100644
--- a/src/util/iohelper.c
+++ b/src/util/iohelper.c
@@ -310,12 +310,6 @@ main(int argc, char **argv)
return 0;
error:
- err = virGetLastError();
- if (err) {
- fprintf(stderr, "%s: %s\n", program_name, err->message);
- } else {
- fprintf(stderr, _("%s: unknown failure with %s\n"),
- program_name, path);
- }
+ fprintf(stderr, "%s: %s\n", program_name, virGetLastErrorMessage());
exit(EXIT_FAILURE);
}
This one is a bit unclear but I'd suggest
_("%s: failure with %s: %s"), program_name, path, virGetLastErrorMessage()
diff --git a/src/util/virpci.c b/src/util/virpci.c
index f7921f8..2349d7f 100644
--- a/src/util/virpci.c
+++ b/src/util/virpci.c
@@ -989,12 +989,10 @@ virPCIDeviceReset(virPCIDevicePtr dev,
ret = virPCIDeviceTrySecondaryBusReset(dev, fd, inactiveDevs);
if (ret < 0) {
- virErrorPtr err = virGetLastError();
virReportError(VIR_ERR_INTERNAL_ERROR,
_("Unable to reset PCI device %s: %s"),
dev->name,
- err ? err->message :
- _("no FLR, PM reset or bus reset available"));
+ virGetLastErrorMessage());
}
Hmm this case is kind of legitimate. The pattern is a bit weird though, maybe
it makes more sense to clean up the code above it. I suggest dropping this
change from the patch since it may deserve a bit more work.
Thanks,
Cole