diff options
author | Anthony Liguori <aliguori@amazon.com> | 2013-10-11 09:38:07 -0700 |
---|---|---|
committer | Anthony Liguori <aliguori@amazon.com> | 2013-10-11 09:38:07 -0700 |
commit | 1cdae4573d7613149348d834c605bfbe3c7d405b (patch) | |
tree | 5a214e9be9c6161c094244365bbb0ea539ede093 /qga/commands.c | |
parent | ab1eb72b1db1740093d52207887a2cfc8665bad6 (diff) | |
parent | 0106dc4f05231b44f54fae5d0ee42031298588bd (diff) | |
download | hqemu-1cdae4573d7613149348d834c605bfbe3c7d405b.zip hqemu-1cdae4573d7613149348d834c605bfbe3c7d405b.tar.gz |
Merge remote-tracking branch 'mdroth/qga-pull-2013-10-10' into staging
# By Mark Wu (2) and Tomoki Sekiyama (1)
# Via Michael Roth
* mdroth/qga-pull-2013-10-10:
qemu-ga: Extend 'guest-info' command to expose flag 'success-response'
qemu-ga: Add interface to traverse the qmp command list by QmpCommand
qemu-ga: execute fsfreeze-freeze in reverse order of mounts
Message-id: 1381435782-25524-1-git-send-email-mdroth@linux.vnet.ibm.com
Signed-off-by: Anthony Liguori <aliguori@amazon.com>
Diffstat (limited to 'qga/commands.c')
-rw-r--r-- | qga/commands.c | 39 |
1 files changed, 16 insertions, 23 deletions
diff --git a/qga/commands.c b/qga/commands.c index 528b082..a0c2de0 100644 --- a/qga/commands.c +++ b/qga/commands.c @@ -45,35 +45,28 @@ void qmp_guest_ping(Error **err) slog("guest-ping called"); } -struct GuestAgentInfo *qmp_guest_info(Error **err) +static void qmp_command_info(QmpCommand *cmd, void *opaque) { - GuestAgentInfo *info = g_malloc0(sizeof(GuestAgentInfo)); + GuestAgentInfo *info = opaque; GuestAgentCommandInfo *cmd_info; GuestAgentCommandInfoList *cmd_info_list; - char **cmd_list_head, **cmd_list; - - info->version = g_strdup(QEMU_VERSION); - - cmd_list_head = cmd_list = qmp_get_command_list(); - if (*cmd_list_head == NULL) { - goto out; - } - while (*cmd_list) { - cmd_info = g_malloc0(sizeof(GuestAgentCommandInfo)); - cmd_info->name = g_strdup(*cmd_list); - cmd_info->enabled = qmp_command_is_enabled(cmd_info->name); + cmd_info = g_malloc0(sizeof(GuestAgentCommandInfo)); + cmd_info->name = g_strdup(qmp_command_name(cmd)); + cmd_info->enabled = qmp_command_is_enabled(cmd); + cmd_info->success_response = qmp_has_success_response(cmd); - cmd_info_list = g_malloc0(sizeof(GuestAgentCommandInfoList)); - cmd_info_list->value = cmd_info; - cmd_info_list->next = info->supported_commands; - info->supported_commands = cmd_info_list; + cmd_info_list = g_malloc0(sizeof(GuestAgentCommandInfoList)); + cmd_info_list->value = cmd_info; + cmd_info_list->next = info->supported_commands; + info->supported_commands = cmd_info_list; +} - g_free(*cmd_list); - cmd_list++; - } +struct GuestAgentInfo *qmp_guest_info(Error **err) +{ + GuestAgentInfo *info = g_malloc0(sizeof(GuestAgentInfo)); -out: - g_free(cmd_list_head); + info->version = g_strdup(QEMU_VERSION); + qmp_for_each_command(qmp_command_info, info); return info; } |