diff mbox

[v2,1/5] console: add & use qemu_console_lookup_by_device_name

Message ID 1453817255-10287-1-git-send-email-kraxel@redhat.com
State New
Headers show

Commit Message

Gerd Hoffmann Jan. 26, 2016, 2:07 p.m. UTC
We have two places needing this, and a third one will come shortly.
So factor things out into a helper function to reduce code duplication.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Daniel P. Berrange <berrange@redhat.com>
---
 include/ui/console.h |  2 ++
 ui/console.c         | 23 +++++++++++++++++++++++
 ui/input.c           | 15 ++++-----------
 ui/vnc.c             | 15 ++++-----------
 4 files changed, 33 insertions(+), 22 deletions(-)

Comments

Eric Blake Jan. 26, 2016, 4:04 p.m. UTC | #1
On 01/26/2016 07:07 AM, Gerd Hoffmann wrote:
> We have two places needing this, and a third one will come shortly.
> So factor things out into a helper function to reduce code duplication.
> 
> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
> Reviewed-by: Daniel P. Berrange <berrange@redhat.com>
> ---

No 0/5 cover letter?

>  include/ui/console.h |  2 ++
>  ui/console.c         | 23 +++++++++++++++++++++++
>  ui/input.c           | 15 ++++-----------
>  ui/vnc.c             | 15 ++++-----------
>  4 files changed, 33 insertions(+), 22 deletions(-)
> 

> +QemuConsole *qemu_console_lookup_by_device_name(const char *device_id,
> +                                                uint32_t head, Error **errp)
> +{
> +    DeviceState *dev;
> +    QemuConsole *con;
> +
> +    dev = qdev_find_recursive(sysbus_get_default(), device_id);
> +    if (dev == NULL) {

I probably would have shortened to 'if (dev) {', but that's cosmetic and
not mandated by HACKING.

Reviewed-by: Eric Blake <eblake@redhat.com>
Markus Armbruster Feb. 2, 2016, 12:56 p.m. UTC | #2
With the trivial doc fix in PATCH 2, series
Reviewed-by: Markus Armbruster <armbru@redhat.com>
diff mbox

Patch

diff --git a/include/ui/console.h b/include/ui/console.h
index adac36d..bbc3b7c 100644
--- a/include/ui/console.h
+++ b/include/ui/console.h
@@ -377,6 +377,8 @@  void graphic_hw_text_update(QemuConsole *con, console_ch_t *chardata);
 
 QemuConsole *qemu_console_lookup_by_index(unsigned int index);
 QemuConsole *qemu_console_lookup_by_device(DeviceState *dev, uint32_t head);
+QemuConsole *qemu_console_lookup_by_device_name(const char *device_id,
+                                                uint32_t head, Error **errp);
 bool qemu_console_is_visible(QemuConsole *con);
 bool qemu_console_is_graphic(QemuConsole *con);
 bool qemu_console_is_fixedsize(QemuConsole *con);
diff --git a/ui/console.c b/ui/console.c
index fe950c6..e883d53 100644
--- a/ui/console.c
+++ b/ui/console.c
@@ -1779,6 +1779,29 @@  QemuConsole *qemu_console_lookup_by_device(DeviceState *dev, uint32_t head)
     return NULL;
 }
 
+QemuConsole *qemu_console_lookup_by_device_name(const char *device_id,
+                                                uint32_t head, Error **errp)
+{
+    DeviceState *dev;
+    QemuConsole *con;
+
+    dev = qdev_find_recursive(sysbus_get_default(), device_id);
+    if (dev == NULL) {
+        error_set(errp, ERROR_CLASS_DEVICE_NOT_FOUND,
+                  "Device '%s' not found", device_id);
+        return NULL;
+    }
+
+    con = qemu_console_lookup_by_device(dev, head);
+    if (con == NULL) {
+        error_setg(errp, "Device %s (head %d) is not bound to a QemuConsole",
+                   device_id, head);
+        return NULL;
+    }
+
+    return con;
+}
+
 bool qemu_console_is_visible(QemuConsole *con)
 {
     return (con == active_console) || (con->dcls > 0);
diff --git a/ui/input.c b/ui/input.c
index 006667b..1409e01 100644
--- a/ui/input.c
+++ b/ui/input.c
@@ -81,19 +81,12 @@  void qemu_input_handler_bind(QemuInputHandlerState *s,
                              const char *device_id, int head,
                              Error **errp)
 {
-    DeviceState *dev;
     QemuConsole *con;
+    Error *err = NULL;
 
-    dev = qdev_find_recursive(sysbus_get_default(), device_id);
-    if (dev == NULL) {
-        error_set(errp, ERROR_CLASS_DEVICE_NOT_FOUND,
-                  "Device '%s' not found", device_id);
-        return;
-    }
-
-    con = qemu_console_lookup_by_device(dev, head);
-    if (con == NULL) {
-        error_setg(errp, "Device %s is not bound to a QemuConsole", device_id);
+    con = qemu_console_lookup_by_device_name(device_id, head, &err);
+    if (err) {
+        error_propagate(errp, err);
         return;
     }
 
diff --git a/ui/vnc.c b/ui/vnc.c
index 339f8c3..19dcfce 100644
--- a/ui/vnc.c
+++ b/ui/vnc.c
@@ -3732,19 +3732,12 @@  void vnc_display_open(const char *id, Error **errp)
 
     device_id = qemu_opt_get(opts, "display");
     if (device_id) {
-        DeviceState *dev;
         int head = qemu_opt_get_number(opts, "head", 0);
+        Error *err = NULL;
 
-        dev = qdev_find_recursive(sysbus_get_default(), device_id);
-        if (dev == NULL) {
-            error_setg(errp, "Device '%s' not found", device_id);
-            goto fail;
-        }
-
-        con = qemu_console_lookup_by_device(dev, head);
-        if (con == NULL) {
-            error_setg(errp, "Device %s is not bound to a QemuConsole",
-                       device_id);
+        con = qemu_console_lookup_by_device_name(device_id, head, &err);
+        if (err) {
+            error_propagate(errp, err);
             goto fail;
         }
     } else {