提交 c146b54c 编写于 作者: P Peter Maydell

Merge remote-tracking branch 'remotes/armbru/tags/pull-misc-2018-08-15' into staging

Miscellaneous patches for 2018-08-15

# gpg: Signature made Wed 15 Aug 2018 07:15:31 BST
# gpg:                using RSA key 3870B400EB918653
# gpg: Good signature from "Markus Armbruster <armbru@redhat.com>"
# gpg:                 aka "Markus Armbruster <armbru@pond.sub.org>"
# Primary key fingerprint: 354B C8B3 D7EB 2A6B 6867  4E5F 3870 B400 EB91 8653

* remotes/armbru/tags/pull-misc-2018-08-15:
  monitor: fix oob command leak
  tests: fix crumple/recursive leak
  qapi: Fix some pycodestyle-3 complaints
  tests: change /0.15/* tests to /qmp/*
  qmp-shell: learn to send commands with quoted arguments
Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
...@@ -4277,6 +4277,8 @@ static void handle_qmp_command(JSONMessageParser *parser, GQueue *tokens) ...@@ -4277,6 +4277,8 @@ static void handle_qmp_command(JSONMessageParser *parser, GQueue *tokens)
trace_monitor_qmp_cmd_out_of_band(qobject_get_try_str(id) trace_monitor_qmp_cmd_out_of_band(qobject_get_try_str(id)
?: ""); ?: "");
monitor_qmp_dispatch(mon, req, id); monitor_qmp_dispatch(mon, req, id);
qobject_unref(req);
qobject_unref(id);
return; return;
} }
......
...@@ -884,12 +884,12 @@ def check_keys(expr_elem, meta, required, optional=[]): ...@@ -884,12 +884,12 @@ def check_keys(expr_elem, meta, required, optional=[]):
if key not in required and key not in optional: if key not in required and key not in optional:
raise QAPISemError(info, "Unknown key '%s' in %s '%s'" raise QAPISemError(info, "Unknown key '%s' in %s '%s'"
% (key, meta, name)) % (key, meta, name))
if (key == 'gen' or key == 'success-response') and value is not False: if key in ['gen', 'success-response'] and value is not False:
raise QAPISemError(info, raise QAPISemError(info,
"'%s' of %s '%s' should only use false value" "'%s' of %s '%s' should only use false value"
% (key, meta, name)) % (key, meta, name))
if (key == 'boxed' or key == 'allow-oob' or if (key in ['boxed', 'allow-oob', 'allow-preconfig']
key == 'allow-preconfig') and value is not True: and value is not True):
raise QAPISemError(info, raise QAPISemError(info,
"'%s' of %s '%s' should only use true value" "'%s' of %s '%s' should only use true value"
% (key, meta, name)) % (key, meta, name))
...@@ -1845,12 +1845,12 @@ def camel_to_upper(value): ...@@ -1845,12 +1845,12 @@ def camel_to_upper(value):
return c_fun_str return c_fun_str
new_name = '' new_name = ''
l = len(c_fun_str) length = len(c_fun_str)
for i in range(l): for i in range(length):
c = c_fun_str[i] c = c_fun_str[i]
# When c is upper and no '_' appears before, do more checks # When c is upper and no '_' appears before, do more checks
if c.isupper() and (i > 0) and c_fun_str[i - 1] != '_': if c.isupper() and (i > 0) and c_fun_str[i - 1] != '_':
if i < l - 1 and c_fun_str[i + 1].islower(): if i < length - 1 and c_fun_str[i + 1].islower():
new_name += '_' new_name += '_'
elif c_fun_str[i - 1].isdigit(): elif c_fun_str[i - 1].isdigit():
new_name += '_' new_name += '_'
...@@ -1863,6 +1863,7 @@ def c_enum_const(type_name, const_name, prefix=None): ...@@ -1863,6 +1863,7 @@ def c_enum_const(type_name, const_name, prefix=None):
type_name = prefix type_name = prefix
return camel_to_upper(type_name) + '_' + c_name(const_name, False).upper() return camel_to_upper(type_name) + '_' + c_name(const_name, False).upper()
if hasattr(str, 'maketrans'): if hasattr(str, 'maketrans'):
c_name_trans = str.maketrans('.-', '__') c_name_trans = str.maketrans('.-', '__')
else: else:
...@@ -1912,6 +1913,7 @@ def c_name(name, protect=True): ...@@ -1912,6 +1913,7 @@ def c_name(name, protect=True):
return 'q_' + name return 'q_' + name
return name return name
eatspace = '\033EATSPACE.' eatspace = '\033EATSPACE.'
pointer_suffix = ' *' + eatspace pointer_suffix = ' *' + eatspace
...@@ -1922,6 +1924,7 @@ def genindent(count): ...@@ -1922,6 +1924,7 @@ def genindent(count):
ret += ' ' ret += ' '
return ret return ret
indent_level = 0 indent_level = 0
......
...@@ -187,7 +187,7 @@ void visit_type_%(c_name)s(Visitor *v, const char *name, %(c_name)s **obj, Error ...@@ -187,7 +187,7 @@ void visit_type_%(c_name)s(Visitor *v, const char *name, %(c_name)s **obj, Error
} }
switch ((*obj)->type) { switch ((*obj)->type) {
''', ''',
c_name=c_name(name)) c_name=c_name(name))
for var in variants.variants: for var in variants.variants:
ret += mcgen(''' ret += mcgen('''
......
...@@ -74,6 +74,7 @@ import sys ...@@ -74,6 +74,7 @@ import sys
import os import os
import errno import errno
import atexit import atexit
import shlex
class QMPCompleter(list): class QMPCompleter(list):
def complete(self, text, state): def complete(self, text, state):
...@@ -219,7 +220,7 @@ class QMPShell(qmp.QEMUMonitorProtocol): ...@@ -219,7 +220,7 @@ class QMPShell(qmp.QEMUMonitorProtocol):
< command-name > [ arg-name1=arg1 ] ... [ arg-nameN=argN ] < command-name > [ arg-name1=arg1 ] ... [ arg-nameN=argN ]
""" """
cmdargs = cmdline.split() cmdargs = shlex.split(cmdline)
# Transactional CLI entry/exit: # Transactional CLI entry/exit:
if cmdargs[0] == 'transaction(': if cmdargs[0] == 'transaction(':
......
...@@ -491,6 +491,7 @@ static void qdict_crumple_test_recursive(void) ...@@ -491,6 +491,7 @@ static void qdict_crumple_test_recursive(void)
empty_list_0 = qobject_to(QDict, qlist_pop(empty_list)); empty_list_0 = qobject_to(QDict, qlist_pop(empty_list));
g_assert(empty_list_0); g_assert(empty_list_0);
g_assert_cmpint(qdict_size(empty_list_0), ==, 0); g_assert_cmpint(qdict_size(empty_list_0), ==, 0);
qobject_unref(empty_list_0);
qobject_unref(src); qobject_unref(src);
qobject_unref(dst); qobject_unref(dst);
......
...@@ -34,8 +34,8 @@ class QAPISchemaTestVisitor(QAPISchemaVisitor): ...@@ -34,8 +34,8 @@ class QAPISchemaTestVisitor(QAPISchemaVisitor):
if base: if base:
print(' base %s' % base.name) print(' base %s' % base.name)
for m in members: for m in members:
print(' member %s: %s optional=%s' % \ print(' member %s: %s optional=%s'
(m.name, m.type.name, m.optional)) % (m.name, m.type.name, m.optional))
self._print_variants(variants) self._print_variants(variants)
self._print_if(ifcond) self._print_if(ifcond)
...@@ -46,10 +46,11 @@ class QAPISchemaTestVisitor(QAPISchemaVisitor): ...@@ -46,10 +46,11 @@ class QAPISchemaTestVisitor(QAPISchemaVisitor):
def visit_command(self, name, info, ifcond, arg_type, ret_type, gen, def visit_command(self, name, info, ifcond, arg_type, ret_type, gen,
success_response, boxed, allow_oob, allow_preconfig): success_response, boxed, allow_oob, allow_preconfig):
print('command %s %s -> %s' % \ print('command %s %s -> %s'
(name, arg_type and arg_type.name, ret_type and ret_type.name)) % (name, arg_type and arg_type.name,
print(' gen=%s success_response=%s boxed=%s oob=%s preconfig=%s' % \ ret_type and ret_type.name))
(gen, success_response, boxed, allow_oob, allow_preconfig)) print(' gen=%s success_response=%s boxed=%s oob=%s preconfig=%s'
% (gen, success_response, boxed, allow_oob, allow_preconfig))
self._print_if(ifcond) self._print_if(ifcond)
def visit_event(self, name, info, ifcond, arg_type, boxed): def visit_event(self, name, info, ifcond, arg_type, boxed):
......
...@@ -286,11 +286,11 @@ int main(int argc, char **argv) ...@@ -286,11 +286,11 @@ int main(int argc, char **argv)
{ {
g_test_init(&argc, &argv, NULL); g_test_init(&argc, &argv, NULL);
g_test_add_func("/0.15/dispatch_cmd", test_dispatch_cmd); g_test_add_func("/qmp/dispatch_cmd", test_dispatch_cmd);
g_test_add_func("/0.15/dispatch_cmd_failure", test_dispatch_cmd_failure); g_test_add_func("/qmp/dispatch_cmd_failure", test_dispatch_cmd_failure);
g_test_add_func("/0.15/dispatch_cmd_io", test_dispatch_cmd_io); g_test_add_func("/qmp/dispatch_cmd_io", test_dispatch_cmd_io);
g_test_add_func("/0.15/dealloc_types", test_dealloc_types); g_test_add_func("/qmp/dealloc_types", test_dealloc_types);
g_test_add_func("/0.15/dealloc_partial", test_dealloc_partial); g_test_add_func("/qmp/dealloc_partial", test_dealloc_partial);
test_qmp_init_marshal(&qmp_commands); test_qmp_init_marshal(&qmp_commands);
g_test_run(); g_test_run();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册