Diff for /qemu/cmd.c between versions 1.1.1.2 and 1.1.1.3

version 1.1.1.2, 2018/04/24 17:35:11 version 1.1.1.3, 2018/04/24 18:24:53
Line 24 Line 24
 #include <getopt.h>  #include <getopt.h>
   
 #include "cmd.h"  #include "cmd.h"
   #include "qemu-aio.h"
   
 #define _(x)    x       /* not gettext support yet */  #define _(x)    x       /* not gettext support yet */
   
Line 149  add_args_command( Line 150  add_args_command(
         args_func = af;          args_func = af;
 }  }
   
   static void prep_fetchline(void *opaque)
   {
       int *fetchable = opaque;
   
       qemu_aio_set_fd_handler(STDIN_FILENO, NULL, NULL, NULL, NULL, NULL);
       *fetchable= 1;
   }
   
   static char *get_prompt(void);
   
 void  void
 command_loop(void)  command_loop(void)
 {  {
         int             c, i, j = 0, done = 0;          int             c, i, j = 0, done = 0, fetchable = 0, prompted = 0;
         char            *input;          char            *input;
         char            **v;          char            **v;
         const cmdinfo_t *ct;          const cmdinfo_t *ct;
Line 186  command_loop(void) Line 197  command_loop(void)
                 free(cmdline);                  free(cmdline);
                 return;                  return;
         }          }
   
         while (!done) {          while (!done) {
           if (!prompted) {
               printf("%s", get_prompt());
               fflush(stdout);
               qemu_aio_set_fd_handler(STDIN_FILENO, prep_fetchline, NULL, NULL,
                                       NULL, &fetchable);
               prompted = 1;
           }
   
           qemu_aio_wait();
   
           if (!fetchable) {
               continue;
           }
                 if ((input = fetchline()) == NULL)                  if ((input = fetchline()) == NULL)
                         break;                          break;
                 v = breakline(input, &c);                  v = breakline(input, &c);
Line 199  command_loop(void) Line 224  command_loop(void)
                                         v[0]);                                          v[0]);
                 }                  }
                 doneline(input, v);                  doneline(input, v);
   
           prompted = 0;
           fetchable = 0;
         }          }
       qemu_aio_set_fd_handler(STDIN_FILENO, NULL, NULL, NULL, NULL, NULL);
 }  }
   
 /* from libxcmd/input.c */  /* from libxcmd/input.c */
Line 270  fetchline(void) Line 299  fetchline(void)
   
         if (!line)          if (!line)
                 return NULL;                  return NULL;
         printf("%s", get_prompt());  
         fflush(stdout);  
         if (!fgets(line, MAXREADLINESZ, stdin)) {          if (!fgets(line, MAXREADLINESZ, stdin)) {
                 free(line);                  free(line);
                 return NULL;                  return NULL;
Line 287  static char *qemu_strsep(char **input, c Line 314  static char *qemu_strsep(char **input, c
 {  {
     char *result = *input;      char *result = *input;
     if (result != NULL) {      if (result != NULL) {
         char *p = result;          char *p;
   
         for (p = result; *p != '\0'; p++) {          for (p = result; *p != '\0'; p++) {
             if (strchr(delim, *p)) {              if (strchr(delim, *p)) {
                 break;                  break;

Removed from v.1.1.1.2  
changed lines
  Added in v.1.1.1.3


unix.superglobalmegacorp.com