qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH 02/12] monitor: add Error * argument to monitor_get_


From: Paolo Bonzini
Subject: [Qemu-devel] [PATCH 02/12] monitor: add Error * argument to monitor_get_fd
Date: Wed, 19 Sep 2012 16:31:05 +0200

Differentiate monitor_get_fd and monitor_handle_fd_param by doing
correct error propagation in the former and its callers.

Signed-off-by: Paolo Bonzini <address@hidden>
---
 dump.c    | 5 +++--
 monitor.c | 9 ++++++---
 monitor.h | 2 +-
 3 file modificati, 10 inserzioni(+), 6 rimozioni(-)

diff --git a/dump.c b/dump.c
index 2bf8d8d..cc7aecd 100644
--- a/dump.c
+++ b/dump.c
@@ -824,6 +824,7 @@ void qmp_dump_guest_memory(bool paging, const char *file, 
bool has_begin,
     int fd = -1;
     DumpState *s;
     int ret;
+    Error *local_err = NULL;
 
     if (has_begin && !has_length) {
         error_set(errp, QERR_MISSING_PARAMETER, "length");
@@ -836,9 +837,9 @@ void qmp_dump_guest_memory(bool paging, const char *file, 
bool has_begin,
 
 #if !defined(WIN32)
     if (strstart(file, "fd:", &p)) {
-        fd = monitor_get_fd(cur_mon, p);
+        fd = monitor_get_fd(cur_mon, p, &local_err);
         if (fd == -1) {
-            error_set(errp, QERR_FD_NOT_FOUND, p);
+            error_propagate(errp, local_err);
             return;
         }
     }
diff --git a/monitor.c b/monitor.c
index 4901600..b73ae57 100644
--- a/monitor.c
+++ b/monitor.c
@@ -2118,7 +2118,7 @@ static void do_loadvm(Monitor *mon, const QDict *qdict)
     }
 }
 
-int monitor_get_fd(Monitor *mon, const char *fdname)
+int monitor_get_fd(Monitor *mon, const char *fdname, Error **errp)
 {
     mon_fd_t *monfd;
 
@@ -2139,6 +2139,7 @@ int monitor_get_fd(Monitor *mon, const char *fdname)
         return fd;
     }
 
+    error_set(errp, QERR_FD_NOT_FOUND, fdname);
     return -1;
 }
 
@@ -2410,12 +2411,14 @@ int monitor_fdset_dup_fd_remove(int dup_fd)
 int monitor_handle_fd_param(Monitor *mon, const char *fdname)
 {
     int fd;
+    Error *local_err = NULL;
 
     if (!qemu_isdigit(fdname[0]) && mon) {
 
-        fd = monitor_get_fd(mon, fdname);
+        fd = monitor_get_fd(mon, fdname, &local_err);
         if (fd == -1) {
-            error_report("No file descriptor named %s found", fdname);
+            qerror_report_err(local_err);
+            error_free(local_err);
             return -1;
         }
     } else {
diff --git a/monitor.h b/monitor.h
index 64c1561..e240c3f 100644
--- a/monitor.h
+++ b/monitor.h
@@ -66,7 +66,7 @@ int monitor_read_block_device_key(Monitor *mon, const char 
*device,
                                   BlockDriverCompletionFunc *completion_cb,
                                   void *opaque);
 
-int monitor_get_fd(Monitor *mon, const char *fdname);
+int monitor_get_fd(Monitor *mon, const char *fdname, Error **errp);
 int monitor_handle_fd_param(Monitor *mon, const char *fdname);
 
 void monitor_vprintf(Monitor *mon, const char *fmt, va_list ap)
-- 
1.7.12





reply via email to

[Prev in Thread] Current Thread [Next in Thread]