提交 cd1f25a9 编写于 作者: D Daniel P. Berrangé

tools: fix double error reporting in virt-login-shell

The public API entry points will call virDispatchError which
will print to stderr by default. We then jump to a cleanup
path which calls virDispatchError again.

We tried to stop the entry points printing to stderr, but
incorrectly called virSetErrorFunc. It needs a real function
that is a no-op, not a NULL function.

Once we fix virSetErrorFunc, then we need to use fprintf in
the cleanup path instead of virDispatchError.
Reviewed-by: NMichal Privoznik <mprivozn@redhat.com>
Signed-off-by: NDaniel P. Berrangé <berrange@redhat.com>
上级 275bcbeb
......@@ -143,6 +143,12 @@ show_version(void)
}
static void
hideErrorFunc(void *opaque ATTRIBUTE_UNUSED,
virErrorPtr err ATTRIBUTE_UNUSED)
{
}
int
main(int argc, char **argv)
{
......@@ -186,7 +192,7 @@ main(int argc, char **argv)
return EXIT_CANCELED;
}
virSetErrorFunc(NULL, NULL);
virSetErrorFunc(NULL, hideErrorFunc);
virSetErrorLogPriorityFunc(NULL);
progname = argv[0];
......@@ -403,7 +409,7 @@ main(int argc, char **argv)
if (saved_err) {
virSetError(saved_err);
virDispatchError(NULL);
fprintf(stderr, "%s: %s\n", argv[0], virGetLastErrorMessage());
}
return ret;
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册