Diff for /qemu/qemu-option.c between versions 1.1.1.5 and 1.1.1.6

version 1.1.1.5, 2018/04/24 19:16:28 version 1.1.1.6, 2018/04/24 19:33:20
Line 214  static int parse_option_size(const char  Line 214  static int parse_option_size(const char 
         switch (*postfix) {          switch (*postfix) {
         case 'T':          case 'T':
             sizef *= 1024;              sizef *= 1024;
               /* fall through */
         case 'G':          case 'G':
             sizef *= 1024;              sizef *= 1024;
               /* fall through */
         case 'M':          case 'M':
             sizef *= 1024;              sizef *= 1024;
               /* fall through */
         case 'K':          case 'K':
         case 'k':          case 'k':
             sizef *= 1024;              sizef *= 1024;
               /* fall through */
         case 'b':          case 'b':
         case '\0':          case '\0':
             *ret = (uint64_t) sizef;              *ret = (uint64_t) sizef;
Line 480  void print_option_parameters(QEMUOptionP Line 484  void print_option_parameters(QEMUOptionP
                 printf("%s=%" PRId64 " ", list->name, list->value.n);                  printf("%s=%" PRId64 " ", list->name, list->value.n);
                 break;                  break;
             default:              default:
                 printf("%s=(unkown type) ", list->name);                  printf("%s=(unknown type) ", list->name);
                 break;                  break;
         }          }
         list++;          list++;
Line 599  static void qemu_opt_del(QemuOpt *opt) Line 603  static void qemu_opt_del(QemuOpt *opt)
     g_free(opt);      g_free(opt);
 }  }
   
 int qemu_opt_set(QemuOpts *opts, const char *name, const char *value)  static int opt_set(QemuOpts *opts, const char *name, const char *value,
                      bool prepend)
 {  {
     QemuOpt *opt;      QemuOpt *opt;
     const QemuOptDesc *desc = opts->list->desc;      const QemuOptDesc *desc = opts->list->desc;
Line 622  int qemu_opt_set(QemuOpts *opts, const c Line 627  int qemu_opt_set(QemuOpts *opts, const c
     opt = g_malloc0(sizeof(*opt));      opt = g_malloc0(sizeof(*opt));
     opt->name = g_strdup(name);      opt->name = g_strdup(name);
     opt->opts = opts;      opt->opts = opts;
     QTAILQ_INSERT_TAIL(&opts->head, opt, next);      if (prepend) {
           QTAILQ_INSERT_HEAD(&opts->head, opt, next);
       } else {
           QTAILQ_INSERT_TAIL(&opts->head, opt, next);
       }
     if (desc[i].name != NULL) {      if (desc[i].name != NULL) {
         opt->desc = desc+i;          opt->desc = desc+i;
     }      }
Line 636  int qemu_opt_set(QemuOpts *opts, const c Line 645  int qemu_opt_set(QemuOpts *opts, const c
     return 0;      return 0;
 }  }
   
   int qemu_opt_set(QemuOpts *opts, const char *name, const char *value)
   {
       return opt_set(opts, name, value, false);
   }
   
 int qemu_opt_set_bool(QemuOpts *opts, const char *name, bool val)  int qemu_opt_set_bool(QemuOpts *opts, const char *name, bool val)
 {  {
     QemuOpt *opt;      QemuOpt *opt;
Line 687  QemuOpts *qemu_opts_find(QemuOptsList *l Line 701  QemuOpts *qemu_opts_find(QemuOptsList *l
   
     QTAILQ_FOREACH(opts, &list->head, next) {      QTAILQ_FOREACH(opts, &list->head, next) {
         if (!opts->id) {          if (!opts->id) {
               if (!id) {
                   return opts;
               }
             continue;              continue;
         }          }
         if (strcmp(opts->id, id) != 0) {          if (strcmp(opts->id, id) != 0) {
Line 724  QemuOpts *qemu_opts_create(QemuOptsList  Line 741  QemuOpts *qemu_opts_create(QemuOptsList 
         }          }
         opts = qemu_opts_find(list, id);          opts = qemu_opts_find(list, id);
         if (opts != NULL) {          if (opts != NULL) {
             if (fail_if_exists) {              if (fail_if_exists && !list->merge_lists) {
                 qerror_report(QERR_DUPLICATE_ID, id, list->name);                  qerror_report(QERR_DUPLICATE_ID, id, list->name);
                 return NULL;                  return NULL;
             } else {              } else {
                 return opts;                  return opts;
             }              }
         }          }
       } else if (list->merge_lists) {
           opts = qemu_opts_find(list, NULL);
           if (opts) {
               return opts;
           }
     }      }
     opts = g_malloc0(sizeof(*opts));      opts = g_malloc0(sizeof(*opts));
     if (id) {      if (id) {
Line 802  int qemu_opts_print(QemuOpts *opts, void Line 824  int qemu_opts_print(QemuOpts *opts, void
     return 0;      return 0;
 }  }
   
 int qemu_opts_do_parse(QemuOpts *opts, const char *params, const char *firstname)  static int opts_do_parse(QemuOpts *opts, const char *params,
                            const char *firstname, bool prepend)
 {  {
     char option[128], value[1024];      char option[128], value[1024];
     const char *p,*pe,*pc;      const char *p,*pe,*pc;
Line 837  int qemu_opts_do_parse(QemuOpts *opts, c Line 860  int qemu_opts_do_parse(QemuOpts *opts, c
         }          }
         if (strcmp(option, "id") != 0) {          if (strcmp(option, "id") != 0) {
             /* store and parse */              /* store and parse */
             if (qemu_opt_set(opts, option, value) == -1) {              if (opt_set(opts, option, value, prepend) == -1) {
                 return -1;                  return -1;
             }              }
         }          }
Line 848  int qemu_opts_do_parse(QemuOpts *opts, c Line 871  int qemu_opts_do_parse(QemuOpts *opts, c
     return 0;      return 0;
 }  }
   
 QemuOpts *qemu_opts_parse(QemuOptsList *list, const char *params,  int qemu_opts_do_parse(QemuOpts *opts, const char *params, const char *firstname)
                           int permit_abbrev)  {
       return opts_do_parse(opts, params, firstname, false);
   }
   
   static QemuOpts *opts_parse(QemuOptsList *list, const char *params,
                               int permit_abbrev, bool defaults)
 {  {
     const char *firstname;      const char *firstname;
     char value[1024], *id = NULL;      char value[1024], *id = NULL;
Line 866  QemuOpts *qemu_opts_parse(QemuOptsList * Line 894  QemuOpts *qemu_opts_parse(QemuOptsList *
         get_opt_value(value, sizeof(value), p+4);          get_opt_value(value, sizeof(value), p+4);
         id = value;          id = value;
     }      }
     opts = qemu_opts_create(list, id, 1);      if (defaults) {
           if (!id && !QTAILQ_EMPTY(&list->head)) {
               opts = qemu_opts_find(list, NULL);
           } else {
               opts = qemu_opts_create(list, id, 0);
           }
       } else {
           opts = qemu_opts_create(list, id, 1);
       }
     if (opts == NULL)      if (opts == NULL)
         return NULL;          return NULL;
   
     if (qemu_opts_do_parse(opts, params, firstname) != 0) {      if (opts_do_parse(opts, params, firstname, defaults) != 0) {
         qemu_opts_del(opts);          qemu_opts_del(opts);
         return NULL;          return NULL;
     }      }
Line 878  QemuOpts *qemu_opts_parse(QemuOptsList * Line 914  QemuOpts *qemu_opts_parse(QemuOptsList *
     return opts;      return opts;
 }  }
   
   QemuOpts *qemu_opts_parse(QemuOptsList *list, const char *params,
                             int permit_abbrev)
   {
       return opts_parse(list, params, permit_abbrev, false);
   }
   
   void qemu_opts_set_defaults(QemuOptsList *list, const char *params,
                               int permit_abbrev)
   {
       QemuOpts *opts;
   
       opts = opts_parse(list, params, permit_abbrev, true);
       assert(opts);
   }
   
 static void qemu_opts_from_qdict_1(const char *key, QObject *obj, void *opaque)  static void qemu_opts_from_qdict_1(const char *key, QObject *obj, void *opaque)
 {  {
     char buf[32];      char buf[32];

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


unix.superglobalmegacorp.com