From: Dongli Zhang Date: Thu, 2 Mar 2023 12:57:50 +0000 (+0100) Subject: readline: fix hmp completion issue X-Git-Tag: v8.0.0-rc0~31^2~10 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9b29a468bd0ca6994dc3d347a01af743c8fe76a7;p=thirdparty%2Fqemu.git readline: fix hmp completion issue The auto completion does not work in some cases. Case 1. 1. (qemu) info reg 2. Press 'Tab'. 3. It does not auto complete. Case 2. 1. (qemu) block_resize flo 2. Press 'Tab'. 3. It does not auto complete 'floppy0'. Since the readline_add_completion_of() may add any completion when strlen(pfx) is zero, we remove the check with (name[0] == '\0') because strlen() always returns zero in that case. Fixes: 52f50b1e9f8f ("readline: Extract readline_add_completion_of() from monitor") Cc: Joe Jin Signed-off-by: Dongli Zhang Tested-by: Thomas Huth Reviewed-by: Markus Armbruster Tested-by: Philippe Mathieu-Daudé Signed-off-by: Cédric Le Goater --- diff --git a/monitor/hmp.c b/monitor/hmp.c index 2aa85d3982f..fee410362f9 100644 --- a/monitor/hmp.c +++ b/monitor/hmp.c @@ -1189,9 +1189,7 @@ static void cmd_completion(MonitorHMP *mon, const char *name, const char *list) } memcpy(cmd, pstart, len); cmd[len] = '\0'; - if (name[0] == '\0') { - readline_add_completion_of(mon->rs, name, cmd); - } + readline_add_completion_of(mon->rs, name, cmd); if (*p == '\0') { break; } @@ -1335,9 +1333,7 @@ static void monitor_find_completion_by_table(MonitorHMP *mon, /* block device name completion */ readline_set_completion_index(mon->rs, strlen(str)); while ((blk = blk_next(blk)) != NULL) { - if (str[0] == '\0') { - readline_add_completion_of(mon->rs, str, blk_name(blk)); - } + readline_add_completion_of(mon->rs, str, blk_name(blk)); } break; case 's':