Diff for /qemu/cmd.c between versions 1.1.1.5 and 1.1.1.6

version 1.1.1.5, 2018/04/24 19:18:01 version 1.1.1.6, 2018/04/24 19:35:24
Line 25 Line 25
   
 #include "cmd.h"  #include "cmd.h"
 #include "qemu-aio.h"  #include "qemu-aio.h"
   #include "main-loop.h"
   
 #define _(x)    x       /* not gettext support yet */  #define _(x)    x       /* not gettext support yet */
   
Line 146  static void prep_fetchline(void *opaque) Line 147  static void prep_fetchline(void *opaque)
 {  {
     int *fetchable = opaque;      int *fetchable = opaque;
   
     qemu_aio_set_fd_handler(STDIN_FILENO, NULL, NULL, NULL, NULL, NULL);      qemu_set_fd_handler(STDIN_FILENO, NULL, NULL, NULL);
     *fetchable= 1;      *fetchable= 1;
 }  }
   
Line 193  void command_loop(void) Line 194  void command_loop(void)
         if (!prompted) {          if (!prompted) {
             printf("%s", get_prompt());              printf("%s", get_prompt());
             fflush(stdout);              fflush(stdout);
             qemu_aio_set_fd_handler(STDIN_FILENO, prep_fetchline, NULL, NULL,              qemu_set_fd_handler(STDIN_FILENO, prep_fetchline, NULL, &fetchable);
                                     NULL, &fetchable);  
             prompted = 1;              prompted = 1;
         }          }
   
         qemu_aio_wait();          main_loop_wait(false);
   
         if (!fetchable) {          if (!fetchable) {
             continue;              continue;
Line 221  void command_loop(void) Line 221  void command_loop(void)
         prompted = 0;          prompted = 0;
         fetchable = 0;          fetchable = 0;
     }      }
     qemu_aio_set_fd_handler(STDIN_FILENO, NULL, NULL, NULL, NULL, NULL);      qemu_set_fd_handler(STDIN_FILENO, NULL, NULL, NULL);
 }  }
   
 /* from libxcmd/input.c */  /* from libxcmd/input.c */
Line 418  cvtstr( Line 418  cvtstr(
         char            *str,          char            *str,
         size_t          size)          size_t          size)
 {  {
         const char      *fmt;          char            *trim;
         int             precise;          const char      *suffix;
   
         precise = ((double)value * 1000 == (double)(int)value * 1000);  
   
         if (value >= EXABYTES(1)) {          if (value >= EXABYTES(1)) {
                 fmt = precise ? "%.f EiB" : "%.3f EiB";                  suffix = " EiB";
                 snprintf(str, size, fmt, TO_EXABYTES(value));                  snprintf(str, size - 4, "%.3f", TO_EXABYTES(value));
         } else if (value >= PETABYTES(1)) {          } else if (value >= PETABYTES(1)) {
                 fmt = precise ? "%.f PiB" : "%.3f PiB";                  suffix = " PiB";
                 snprintf(str, size, fmt, TO_PETABYTES(value));                  snprintf(str, size - 4, "%.3f", TO_PETABYTES(value));
         } else if (value >= TERABYTES(1)) {          } else if (value >= TERABYTES(1)) {
                 fmt = precise ? "%.f TiB" : "%.3f TiB";                  suffix = " TiB";
                 snprintf(str, size, fmt, TO_TERABYTES(value));                  snprintf(str, size - 4, "%.3f", TO_TERABYTES(value));
         } else if (value >= GIGABYTES(1)) {          } else if (value >= GIGABYTES(1)) {
                 fmt = precise ? "%.f GiB" : "%.3f GiB";                  suffix = " GiB";
                 snprintf(str, size, fmt, TO_GIGABYTES(value));                  snprintf(str, size - 4, "%.3f", TO_GIGABYTES(value));
         } else if (value >= MEGABYTES(1)) {          } else if (value >= MEGABYTES(1)) {
                 fmt = precise ? "%.f MiB" : "%.3f MiB";                  suffix = " MiB";
                 snprintf(str, size, fmt, TO_MEGABYTES(value));                  snprintf(str, size - 4, "%.3f", TO_MEGABYTES(value));
         } else if (value >= KILOBYTES(1)) {          } else if (value >= KILOBYTES(1)) {
                 fmt = precise ? "%.f KiB" : "%.3f KiB";                  suffix = " KiB";
                 snprintf(str, size, fmt, TO_KILOBYTES(value));                  snprintf(str, size - 4, "%.3f", TO_KILOBYTES(value));
           } else {
                   suffix = " bytes";
                   snprintf(str, size - 6, "%f", value);
           }
   
           trim = strstr(str, ".000");
           if (trim) {
                   strcpy(trim, suffix);
         } else {          } else {
                 snprintf(str, size, "%f bytes", value);                  strcat(str, suffix);
         }          }
 }  }
   

Removed from v.1.1.1.5  
changed lines
  Added in v.1.1.1.6


unix.superglobalmegacorp.com