[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 13/19] qemu-char: Chardev open error reporting, parp
From: |
Markus Armbruster |
Subject: |
[Qemu-devel] [PATCH 13/19] qemu-char: Chardev open error reporting, parport part |
Date: |
Tue, 7 Feb 2012 15:09:20 +0100 |
Unlike many other backends, these leave open error reporting to their
caller. Because the caller doesn't know what went wrong, this results
in a pretty useless error message.
Change them to report their errors themselves. Improves user-hostile
messages like this one for "-chardev tty,id=foo,path=/dev/parport0"
chardev: opening backend "parport" failed
to
qemu-system-x86_64: -chardev parport,id=foo,path=/dev/parport0: Can't open
'/dev/parport0': Permission denied
chardev: opening backend "parport" failed
The useless "opening backend failed" message will be cleaned up
shortly.
Signed-off-by: Markus Armbruster <address@hidden>
---
qemu-char.c | 21 ++++++++++++++++++---
1 files changed, 18 insertions(+), 3 deletions(-)
diff --git a/qemu-char.c b/qemu-char.c
index 1ff7f4b..ecbb595 100644
--- a/qemu-char.c
+++ b/qemu-char.c
@@ -1371,14 +1371,18 @@ static CharDriverState *qemu_chr_open_pp(QemuOpts *opts)
ParallelCharDriver *drv;
int fd;
+ if (!filename) {
+ error_report("parport character device requires parameter path");
+ return NULL;
+ }
+
TFR(fd = qemu_open(filename, O_RDWR));
if (fd < 0) {
- return NULL;
+ goto err;
}
if (ioctl(fd, PPCLAIM) < 0) {
- close(fd);
- return NULL;
+ goto err;
}
drv = g_malloc0(sizeof(ParallelCharDriver));
@@ -1394,6 +1398,11 @@ static CharDriverState *qemu_chr_open_pp(QemuOpts *opts)
qemu_chr_generic_open(chr);
return chr;
+
+err:
+ error_report("Can't open '%s': %s", filename, strerror(errno));
+ close(fd);
+ return NULL;
}
#endif /* __linux__ */
@@ -1441,8 +1450,14 @@ static CharDriverState *qemu_chr_open_pp(QemuOpts *opts)
CharDriverState *chr;
int fd;
+ if (!filename) {
+ error_report("parport character device requires parameter path");
+ return NULL;
+ }
+
fd = qemu_open(filename, O_RDWR);
if (fd < 0) {
+ error_report("Can't open '%s': %s", filename, strerror(errno));
return NULL;
}
--
1.7.6.5
- Re: [Qemu-devel] [PATCH 09/19] sockets: Chardev open error reporting, sockets part, (continued)
- Re: [Qemu-devel] [PATCH 09/19] sockets: Chardev open error reporting, sockets part, Markus Armbruster, 2012/02/09
- Re: [Qemu-devel] [PATCH 09/19] sockets: Chardev open error reporting, sockets part, Markus Armbruster, 2012/02/14
- Re: [Qemu-devel] [PATCH 09/19] sockets: Chardev open error reporting, sockets part, Anthony Liguori, 2012/02/14
- Re: [Qemu-devel] [PATCH 09/19] sockets: Chardev open error reporting, sockets part, Markus Armbruster, 2012/02/15
- Re: [Qemu-devel] [PATCH 09/19] sockets: Chardev open error reporting, sockets part, Anthony Liguori, 2012/02/22
- Re: [Qemu-devel] [PATCH 09/19] sockets: Chardev open error reporting, sockets part, Markus Armbruster, 2012/02/23
[Qemu-devel] [PATCH 16/19] spice-qemu-char: Chardev open error reporting, spicevmc part, Markus Armbruster, 2012/02/07
[Qemu-devel] [PATCH 12/19] qemu-char: Chardev open error reporting, tty part, Markus Armbruster, 2012/02/07
[Qemu-devel] [PATCH 02/19] qemu-char: Use qemu_open() to avoid leaking fds to children, Markus Armbruster, 2012/02/07
[Qemu-devel] [PATCH 13/19] qemu-char: Chardev open error reporting, parport part,
Markus Armbruster <=
[Qemu-devel] [PATCH 08/19] sockets: Clean up inet_listen_opts()'s convoluted bind() loop, Markus Armbruster, 2012/02/07
[Qemu-devel] [PATCH 04/19] qemu-char: qemu_chr_open_fd() can't fail, don't check, Markus Armbruster, 2012/02/07
[Qemu-devel] [PATCH 07/19] sockets: Drop sockets_debug debug code, Markus Armbruster, 2012/02/07
[Qemu-devel] [PATCH 06/19] gdbstub: Error locations for -gdb, Markus Armbruster, 2012/02/07
[Qemu-devel] [PATCH 14/19] console: Eliminate text_consoles[], Markus Armbruster, 2012/02/07
[Qemu-devel] [PATCH 10/19] qemu-char: Chardev open error reporting, !_WIN32 part, Markus Armbruster, 2012/02/07