qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 07/23] block: Eliminate bdrv_iterate(), use bdrv


From: Markus Armbruster
Subject: Re: [Qemu-devel] [PATCH 07/23] block: Eliminate bdrv_iterate(), use bdrv_next()
Date: Thu, 11 Sep 2014 20:44:03 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux)

Benoît Canet <address@hidden> writes:

> The Wednesday 10 Sep 2014 à 10:13:36 (+0200), Markus Armbruster wrote :
[...]
>> --- a/monitor.c
>> +++ b/monitor.c
>> @@ -4208,24 +4208,6 @@ static void file_completion(Monitor *mon, const char 
>> *input)
>>      closedir(ffs);
>>  }
>>  
>> -typedef struct MonitorBlockComplete {
>> -    Monitor *mon;
>> -    const char *input;
>> -} MonitorBlockComplete;
>> -
>> -static void block_completion_it(void *opaque, BlockDriverState *bs)
>> -{
>> -    const char *name = bdrv_get_device_name(bs);
>> -    MonitorBlockComplete *mbc = opaque;
>> -    Monitor *mon = mbc->mon;
>> -    const char *input = mbc->input;
>> -
>> -    if (input[0] == '\0' ||
>> -        !strncmp(name, (char *)input, strlen(input))) {
>> -        readline_add_completion(mon->rs, name);
>> -    }
>> -}
>> -
>>  static const char *next_arg_type(const char *typestr)
>>  {
>>      const char *p = strchr(typestr, ':');
>> @@ -4663,9 +4645,9 @@ static void monitor_find_completion_by_table(Monitor 
>> *mon,
>>  {
>>      const char *cmdname;
>>      int i;
>> -    const char *ptype, *str;
>> +    const char *ptype, *str, *name;
>>      const mon_cmd_t *cmd;
>> -    MonitorBlockComplete mbs;
>> +    BlockDriverState *bs;
>>  
>>      if (nb_args <= 1) {
>>          /* command completion */
>> @@ -4717,10 +4699,13 @@ static void monitor_find_completion_by_table(Monitor 
>> *mon,
>>              break;
>>          case 'B':
>>              /* block device name completion */
>> -            mbs.mon = mon;
>> -            mbs.input = str;
>
>> -            readline_set_completion_index(mon->rs, strlen(str));
>
> Why is this line removed ?

Accident!  Fixing...

> In monitor readline_set_completion_index seems to work in pair with
> readline_add_completion.
> Either this line should be removed and readline_add_completion too or
> the oposite.
>
>> -            bdrv_iterate(block_completion_it, &mbs);
>> +            for (bs = bdrv_next(NULL); bs; bs = bdrv_next(bs)) {
>> +                name = bdrv_get_device_name(bs);
>> +                if (str[0] == '\0' ||
>> +                    !strncmp(name, str, strlen(str))) {
>> +                    readline_add_completion(mon->rs, name);
>> +                }
>> +            }
>>              break;
>>          case 's':
>>          case 'S':
>> -- 
>> 1.9.3
>> 
>> 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]