monitor: avoid use of global *cur_mon in readline_completion()
authorWenchao Xia <xiawenc@linux.vnet.ibm.com>
Tue, 27 Aug 2013 12:38:17 +0000 (20:38 +0800)
committerLuiz Capitulino <lcapitulino@redhat.com>
Fri, 30 Aug 2013 11:41:14 +0000 (07:41 -0400)
Now all completion functions do not use *cur_mon any more, instead
they use rs->mon. In short, structure ReadLineState decide where
the complete action would be taken now.

Tested with the case that qemu have two telnet monitors, auto
completion function works normal.

Signed-off-by: Wenchao Xia <xiawenc@linux.vnet.ibm.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
readline.c

index c91b324cb11757abe470d9993d24c26382c860b6..abf27ddec36c158a2ec610a9b745426a5d691aed 100644 (file)
@@ -276,7 +276,6 @@ void readline_set_completion_index(ReadLineState *rs, int index)
 
 static void readline_completion(ReadLineState *rs)
 {
-    Monitor *mon = cur_mon;
     int len, i, j, max_width, nb_cols, max_prefix;
     char *cmdline;
 
@@ -300,7 +299,7 @@ static void readline_completion(ReadLineState *rs)
         if (len > 0 && rs->completions[0][len - 1] != '/')
             readline_insert_char(rs, ' ');
     } else {
-        monitor_printf(mon, "\n");
+        monitor_printf(rs->mon, "\n");
         max_width = 0;
         max_prefix = 0;        
         for(i = 0; i < rs->nb_completions; i++) {