qapi ui: Elide redundant has_FOO in generated C

The has_FOO for pointer-valued FOO are redundant, except for arrays.
They are also a nuisance to work with.  Recent commit "qapi: Start to
elide redundant has_FOO in generated C" provided the means to elide
them step by step.  This is the step for qapi/ui.json.

Said commit explains the transformation in more detail.  The invariant
violations mentioned there do not occur here.

Cc: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Message-Id: <20221104160712.3005652-28-armbru@redhat.com>
This commit is contained in:
Markus Armbruster 2022-11-04 17:07:09 +01:00
parent 238e9202a2
commit 3f41a3adb4
6 changed files with 8 additions and 28 deletions

View File

@ -548,11 +548,9 @@ static void hmp_info_vnc_clients(Monitor *mon, VncClientInfoList *client)
hmp_info_VncBasicInfo(mon, qapi_VncClientInfo_base(cinfo), "Client"); hmp_info_VncBasicInfo(mon, qapi_VncClientInfo_base(cinfo), "Client");
monitor_printf(mon, " x509_dname: %s\n", monitor_printf(mon, " x509_dname: %s\n",
cinfo->has_x509_dname ? cinfo->x509_dname ?: "none");
cinfo->x509_dname : "none");
monitor_printf(mon, " sasl_username: %s\n", monitor_printf(mon, " sasl_username: %s\n",
cinfo->has_sasl_username ? cinfo->sasl_username ?: "none");
cinfo->sasl_username : "none");
client = client->next; client = client->next;
} }
@ -597,7 +595,7 @@ void hmp_info_vnc(Monitor *mon, const QDict *qdict)
hmp_info_vnc_authcrypt(mon, " ", info->auth, hmp_info_vnc_authcrypt(mon, " ", info->auth,
info->has_vencrypt ? &info->vencrypt : NULL); info->has_vencrypt ? &info->vencrypt : NULL);
} }
if (info->has_display) { if (info->display) {
monitor_printf(mon, " Display: %s\n", info->display); monitor_printf(mon, " Display: %s\n", info->display);
} }
info2l = info2l->next; info2l = info2l->next;
@ -1401,7 +1399,6 @@ void hmp_set_password(Monitor *mon, const QDict *qdict)
} }
if (opts.protocol == DISPLAY_PROTOCOL_VNC) { if (opts.protocol == DISPLAY_PROTOCOL_VNC) {
opts.u.vnc.has_display = !!display;
opts.u.vnc.display = (char *)display; opts.u.vnc.display = (char *)display;
} }
@ -1429,7 +1426,6 @@ void hmp_expire_password(Monitor *mon, const QDict *qdict)
} }
if (opts.protocol == DISPLAY_PROTOCOL_VNC) { if (opts.protocol == DISPLAY_PROTOCOL_VNC) {
opts.u.vnc.has_display = !!display;
opts.u.vnc.display = (char *)display; opts.u.vnc.display = (char *)display;
} }
@ -1714,7 +1710,7 @@ hmp_screendump(Monitor *mon, const QDict *qdict)
goto end; goto end;
} }
qmp_screendump(filename, id != NULL, id, id != NULL, head, qmp_screendump(filename, id, id != NULL, head,
input_format != NULL, format, &err); input_format != NULL, format, &err);
end: end:
hmp_handle_error(mon, err); hmp_handle_error(mon, err);

View File

@ -759,7 +759,6 @@ class QAPISchemaObjectTypeMember(QAPISchemaMember):
assert self.type assert self.type
# Temporary hack to support dropping the has_FOO in reviewable chunks # Temporary hack to support dropping the has_FOO in reviewable chunks
opt_out = [ opt_out = [
'qapi/ui.json',
'qapi/virtio.json', 'qapi/virtio.json',
'qga/qapi-schema.json'] 'qga/qapi-schema.json']
if self.info and any(self.info.fname.endswith(mod) if self.info and any(self.info.fname.endswith(mod)

View File

@ -407,7 +407,7 @@ static void graphic_hw_update_bh(void *con)
/* Safety: coroutine-only, concurrent-coroutine safe, main thread only */ /* Safety: coroutine-only, concurrent-coroutine safe, main thread only */
void coroutine_fn void coroutine_fn
qmp_screendump(const char *filename, bool has_device, const char *device, qmp_screendump(const char *filename, const char *device,
bool has_head, int64_t head, bool has_head, int64_t head,
bool has_format, ImageFormat format, Error **errp) bool has_format, ImageFormat format, Error **errp)
{ {
@ -416,7 +416,7 @@ qmp_screendump(const char *filename, bool has_device, const char *device,
DisplaySurface *surface; DisplaySurface *surface;
int fd; int fd;
if (has_device) { if (device) {
con = qemu_console_lookup_by_device_name(device, has_head ? head : 0, con = qemu_console_lookup_by_device_name(device, has_head ? head : 0,
errp); errp);
if (!con) { if (!con) {

View File

@ -124,7 +124,7 @@ qemu_input_find_handler(uint32_t mask, QemuConsole *con)
return NULL; return NULL;
} }
void qmp_input_send_event(bool has_device, const char *device, void qmp_input_send_event(const char *device,
bool has_head, int64_t head, bool has_head, int64_t head,
InputEventList *events, Error **errp) InputEventList *events, Error **errp)
{ {
@ -133,7 +133,7 @@ void qmp_input_send_event(bool has_device, const char *device,
Error *err = NULL; Error *err = NULL;
con = NULL; con = NULL;
if (has_device) { if (device) {
if (!has_head) { if (!has_head) {
head = 0; head = 0;
} }

View File

@ -222,7 +222,6 @@ static void channel_event(int event, SpiceChannelEventInfo *info)
break; break;
case SPICE_CHANNEL_EVENT_INITIALIZED: case SPICE_CHANNEL_EVENT_INITIALIZED:
if (auth) { if (auth) {
server->has_auth = true;
server->auth = g_strdup(auth); server->auth = g_strdup(auth);
} }
add_channel_info(client, info); add_channel_info(client, info);
@ -522,13 +521,9 @@ static SpiceInfo *qmp_query_spice_real(Error **errp)
port = qemu_opt_get_number(opts, "port", 0); port = qemu_opt_get_number(opts, "port", 0);
tls_port = qemu_opt_get_number(opts, "tls-port", 0); tls_port = qemu_opt_get_number(opts, "tls-port", 0);
info->has_auth = true;
info->auth = g_strdup(auth); info->auth = g_strdup(auth);
info->has_host = true;
info->host = g_strdup(addr ? addr : "*"); info->host = g_strdup(addr ? addr : "*");
info->has_compiled_version = true;
major = (SPICE_SERVER_VERSION & 0xff0000) >> 16; major = (SPICE_SERVER_VERSION & 0xff0000) >> 16;
minor = (SPICE_SERVER_VERSION & 0xff00) >> 8; minor = (SPICE_SERVER_VERSION & 0xff00) >> 8;
micro = SPICE_SERVER_VERSION & 0xff; micro = SPICE_SERVER_VERSION & 0xff;

View File

@ -244,7 +244,6 @@ static VncServerInfo *vnc_server_info_get(VncDisplay *vd)
info = g_malloc0(sizeof(*info)); info = g_malloc0(sizeof(*info));
vnc_init_basic_info_from_server_addr(vd->listener->sioc[0], vnc_init_basic_info_from_server_addr(vd->listener->sioc[0],
qapi_VncServerInfo_base(info), &err); qapi_VncServerInfo_base(info), &err);
info->has_auth = true;
info->auth = g_strdup(vnc_auth_name(vd)); info->auth = g_strdup(vnc_auth_name(vd));
if (err) { if (err) {
qapi_free_VncServerInfo(info); qapi_free_VncServerInfo(info);
@ -263,13 +262,10 @@ static void vnc_client_cache_auth(VncState *client)
if (client->tls) { if (client->tls) {
client->info->x509_dname = client->info->x509_dname =
qcrypto_tls_session_get_peer_name(client->tls); qcrypto_tls_session_get_peer_name(client->tls);
client->info->has_x509_dname =
client->info->x509_dname != NULL;
} }
#ifdef CONFIG_VNC_SASL #ifdef CONFIG_VNC_SASL
if (client->sasl.conn && if (client->sasl.conn &&
client->sasl.username) { client->sasl.username) {
client->info->has_sasl_username = true;
client->info->sasl_username = g_strdup(client->sasl.username); client->info->sasl_username = g_strdup(client->sasl.username);
} }
#endif #endif
@ -341,11 +337,9 @@ static VncClientInfo *qmp_query_vnc_client(const VncState *client)
if (client->tls) { if (client->tls) {
info->x509_dname = qcrypto_tls_session_get_peer_name(client->tls); info->x509_dname = qcrypto_tls_session_get_peer_name(client->tls);
info->has_x509_dname = info->x509_dname != NULL;
} }
#ifdef CONFIG_VNC_SASL #ifdef CONFIG_VNC_SASL
if (client->sasl.conn && client->sasl.username) { if (client->sasl.conn && client->sasl.username) {
info->has_sasl_username = true;
info->sasl_username = g_strdup(client->sasl.username); info->sasl_username = g_strdup(client->sasl.username);
} }
#endif #endif
@ -426,11 +420,8 @@ VncInfo *qmp_query_vnc(Error **errp)
abort(); abort();
} }
info->has_host = true;
info->has_service = true;
info->has_family = true; info->has_family = true;
info->has_auth = true;
info->auth = g_strdup(vnc_auth_name(vd)); info->auth = g_strdup(vnc_auth_name(vd));
} }
@ -568,7 +559,6 @@ VncInfo2List *qmp_query_vnc_servers(Error **errp)
if (vd->dcl.con) { if (vd->dcl.con) {
dev = DEVICE(object_property_get_link(OBJECT(vd->dcl.con), dev = DEVICE(object_property_get_link(OBJECT(vd->dcl.con),
"device", &error_abort)); "device", &error_abort));
info->has_display = true;
info->display = g_strdup(dev->id); info->display = g_strdup(dev->id);
} }
for (i = 0; vd->listener != NULL && i < vd->listener->nsioc; i++) { for (i = 0; vd->listener != NULL && i < vd->listener->nsioc; i++) {