Skip to content

Commit

Permalink
char: Skip CLI aliases in query-chardev-backends
Browse files Browse the repository at this point in the history
The aliases "tty" and "parport" are only valid on the command line, QMP
commands like chardev-add don't know them. query-chardev-backends should
describe QMP and therefore not include them in the list of available
backends.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Acked-by: Paolo Bonzini <pbonzini@redhat.com>
Message-Id: <20210311164253.338723-2-kwolf@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
  • Loading branch information
kevmw committed Mar 19, 2021
1 parent ddf6dae commit 1254bd3
Showing 1 changed file with 14 additions and 7 deletions.
21 changes: 14 additions & 7 deletions chardev/char.c
Expand Up @@ -547,7 +547,7 @@ static const struct ChardevAlias {
};

typedef struct ChadevClassFE {
void (*fn)(const char *name, void *opaque);
void (*fn)(const char *name, bool is_cli_alias, void *opaque);
void *opaque;
} ChadevClassFE;

Expand All @@ -561,24 +561,26 @@ chardev_class_foreach(ObjectClass *klass, void *opaque)
return;
}

fe->fn(object_class_get_name(klass) + 8, fe->opaque);
fe->fn(object_class_get_name(klass) + 8, false, fe->opaque);
}

static void
chardev_name_foreach(void (*fn)(const char *name, void *opaque), void *opaque)
chardev_name_foreach(void (*fn)(const char *name, bool is_cli_alias,
void *opaque),
void *opaque)
{
ChadevClassFE fe = { .fn = fn, .opaque = opaque };
int i;

object_class_foreach(chardev_class_foreach, TYPE_CHARDEV, false, &fe);

for (i = 0; i < (int)ARRAY_SIZE(chardev_alias_table); i++) {
fn(chardev_alias_table[i].alias, opaque);
fn(chardev_alias_table[i].alias, true, opaque);
}
}

static void
help_string_append(const char *name, void *opaque)
help_string_append(const char *name, bool is_cli_alias, void *opaque)
{
GString *str = opaque;

Expand Down Expand Up @@ -798,11 +800,16 @@ ChardevInfoList *qmp_query_chardev(Error **errp)
}

static void
qmp_prepend_backend(const char *name, void *opaque)
qmp_prepend_backend(const char *name, bool is_cli_alias, void *opaque)
{
ChardevBackendInfoList **list = opaque;
ChardevBackendInfo *value = g_new0(ChardevBackendInfo, 1);
ChardevBackendInfo *value;

if (is_cli_alias) {
return;
}

value = g_new0(ChardevBackendInfo, 1);
value->name = g_strdup(name);
QAPI_LIST_PREPEND(*list, value);
}
Expand Down

0 comments on commit 1254bd3

Please sign in to comment.