Revision 599a926a
b/monitor.c | ||
---|---|---|
4091 | 4091 |
closedir(ffs); |
4092 | 4092 |
} |
4093 | 4093 |
|
4094 |
typedef struct MonitorBlockComplete { |
|
4095 |
Monitor *mon; |
|
4096 |
const char *input; |
|
4097 |
} MonitorBlockComplete; |
|
4098 |
|
|
4094 | 4099 |
static void block_completion_it(void *opaque, BlockDriverState *bs) |
4095 | 4100 |
{ |
4096 | 4101 |
const char *name = bdrv_get_device_name(bs); |
4097 |
const char *input = opaque; |
|
4102 |
MonitorBlockComplete *mbc = opaque; |
|
4103 |
Monitor *mon = mbc->mon; |
|
4104 |
const char *input = mbc->input; |
|
4098 | 4105 |
|
4099 | 4106 |
if (input[0] == '\0' || |
4100 | 4107 |
!strncmp(name, (char *)input, strlen(input))) { |
4101 |
readline_add_completion(cur_mon->rs, name);
|
|
4108 |
readline_add_completion(mon->rs, name); |
|
4102 | 4109 |
} |
4103 | 4110 |
} |
4104 | 4111 |
|
... | ... | |
4142 | 4149 |
const char *ptype, *str; |
4143 | 4150 |
const mon_cmd_t *cmd; |
4144 | 4151 |
Monitor *mon = cur_mon; |
4152 |
MonitorBlockComplete mbs; |
|
4145 | 4153 |
|
4146 | 4154 |
parse_cmdline(cmdline, &nb_args, args); |
4147 | 4155 |
#ifdef DEBUG_COMPLETION |
... | ... | |
4200 | 4208 |
break; |
4201 | 4209 |
case 'B': |
4202 | 4210 |
/* block device name completion */ |
4203 |
readline_set_completion_index(cur_mon->rs, strlen(str)); |
|
4204 |
bdrv_iterate(block_completion_it, (void *)str); |
|
4211 |
mbs.mon = mon; |
|
4212 |
mbs.input = str; |
|
4213 |
readline_set_completion_index(mon->rs, strlen(str)); |
|
4214 |
bdrv_iterate(block_completion_it, &mbs); |
|
4205 | 4215 |
break; |
4206 | 4216 |
case 's': |
4207 | 4217 |
/* XXX: more generic ? */ |
Also available in: Unified diff