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

version 1.1.1.4, 2018/04/24 18:33:07 version 1.1.1.5, 2018/04/24 19:16:28
Line 168  QEMUOptionParameter *get_option_paramete Line 168  QEMUOptionParameter *get_option_paramete
     return NULL;      return NULL;
 }  }
   
 static int parse_option_bool(const char *name, const char *value, int *ret)  static int parse_option_bool(const char *name, const char *value, bool *ret)
 {  {
     if (value != NULL) {      if (value != NULL) {
         if (!strcmp(value, "on")) {          if (!strcmp(value, "on")) {
Line 258  static int parse_option_size(const char  Line 258  static int parse_option_size(const char 
 int set_option_parameter(QEMUOptionParameter *list, const char *name,  int set_option_parameter(QEMUOptionParameter *list, const char *name,
     const char *value)      const char *value)
 {  {
     int flag;      bool flag;
   
     // Find a matching parameter      // Find a matching parameter
     list = get_option_parameter(list, name);      list = get_option_parameter(list, name);
Line 277  int set_option_parameter(QEMUOptionParam Line 277  int set_option_parameter(QEMUOptionParam
   
     case OPT_STRING:      case OPT_STRING:
         if (value != NULL) {          if (value != NULL) {
             list->value.s = qemu_strdup(value);              list->value.s = g_strdup(value);
         } else {          } else {
             fprintf(stderr, "Option '%s' needs a parameter\n", name);              fprintf(stderr, "Option '%s' needs a parameter\n", name);
             return -1;              return -1;
Line 337  void free_option_parameters(QEMUOptionPa Line 337  void free_option_parameters(QEMUOptionPa
   
     while (cur && cur->name) {      while (cur && cur->name) {
         if (cur->type == OPT_STRING) {          if (cur->type == OPT_STRING) {
             qemu_free(cur->value.s);              g_free(cur->value.s);
         }          }
         cur++;          cur++;
     }      }
   
     qemu_free(list);      g_free(list);
 }  }
   
 /*  /*
Line 377  QEMUOptionParameter *append_option_param Line 377  QEMUOptionParameter *append_option_param
   
     num_options += count_option_parameters(list);      num_options += count_option_parameters(list);
   
     dest = qemu_realloc(dest, (num_options + 1) * sizeof(QEMUOptionParameter));      dest = g_realloc(dest, (num_options + 1) * sizeof(QEMUOptionParameter));
     dest[num_dest_options].name = NULL;      dest[num_dest_options].name = NULL;
   
     while (list && list->name) {      while (list && list->name) {
Line 508  struct QemuOpt { Line 508  struct QemuOpt {
   
     const QemuOptDesc *desc;      const QemuOptDesc *desc;
     union {      union {
         int      boolean;          bool boolean;
         uint64_t uint;          uint64_t uint;
     } value;      } value;
   
Line 542  const char *qemu_opt_get(QemuOpts *opts, Line 542  const char *qemu_opt_get(QemuOpts *opts,
     return opt ? opt->str : NULL;      return opt ? opt->str : NULL;
 }  }
   
 int qemu_opt_get_bool(QemuOpts *opts, const char *name, int defval)  bool qemu_opt_get_bool(QemuOpts *opts, const char *name, bool defval)
 {  {
     QemuOpt *opt = qemu_opt_find(opts, name);      QemuOpt *opt = qemu_opt_find(opts, name);
   
Line 594  static int qemu_opt_parse(QemuOpt *opt) Line 594  static int qemu_opt_parse(QemuOpt *opt)
 static void qemu_opt_del(QemuOpt *opt)  static void qemu_opt_del(QemuOpt *opt)
 {  {
     QTAILQ_REMOVE(&opt->opts->head, opt, next);      QTAILQ_REMOVE(&opt->opts->head, opt, next);
     qemu_free((/* !const */ char*)opt->name);      g_free((/* !const */ char*)opt->name);
     qemu_free((/* !const */ char*)opt->str);      g_free((/* !const */ char*)opt->str);
     qemu_free(opt);      g_free(opt);
 }  }
   
 int qemu_opt_set(QemuOpts *opts, const char *name, const char *value)  int qemu_opt_set(QemuOpts *opts, const char *name, const char *value)
Line 619  int qemu_opt_set(QemuOpts *opts, const c Line 619  int qemu_opt_set(QemuOpts *opts, const c
         }          }
     }      }
   
     opt = qemu_mallocz(sizeof(*opt));      opt = g_malloc0(sizeof(*opt));
     opt->name = qemu_strdup(name);      opt->name = g_strdup(name);
     opt->opts = opts;      opt->opts = opts;
     QTAILQ_INSERT_TAIL(&opts->head, opt, next);      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;
     }      }
     if (value) {      if (value) {
         opt->str = qemu_strdup(value);          opt->str = g_strdup(value);
     }      }
     if (qemu_opt_parse(opt) < 0) {      if (qemu_opt_parse(opt) < 0) {
         qemu_opt_del(opt);          qemu_opt_del(opt);
Line 636  int qemu_opt_set(QemuOpts *opts, const c Line 636  int qemu_opt_set(QemuOpts *opts, const c
     return 0;      return 0;
 }  }
   
   int qemu_opt_set_bool(QemuOpts *opts, const char *name, bool val)
   {
       QemuOpt *opt;
       const QemuOptDesc *desc = opts->list->desc;
       int i;
   
       for (i = 0; desc[i].name != NULL; i++) {
           if (strcmp(desc[i].name, name) == 0) {
               break;
           }
       }
       if (desc[i].name == NULL) {
           if (i == 0) {
               /* empty list -> allow any */;
           } else {
               qerror_report(QERR_INVALID_PARAMETER, name);
               return -1;
           }
       }
   
       opt = g_malloc0(sizeof(*opt));
       opt->name = g_strdup(name);
       opt->opts = opts;
       QTAILQ_INSERT_TAIL(&opts->head, opt, next);
       if (desc[i].name != NULL) {
           opt->desc = desc+i;
       }
       opt->value.boolean = !!val;
       return 0;
   }
   
 int qemu_opt_foreach(QemuOpts *opts, qemu_opt_loopfunc func, void *opaque,  int qemu_opt_foreach(QemuOpts *opts, qemu_opt_loopfunc func, void *opaque,
                      int abort_on_failure)                       int abort_on_failure)
 {  {
Line 701  QemuOpts *qemu_opts_create(QemuOptsList  Line 732  QemuOpts *qemu_opts_create(QemuOptsList 
             }              }
         }          }
     }      }
     opts = qemu_mallocz(sizeof(*opts));      opts = g_malloc0(sizeof(*opts));
     if (id) {      if (id) {
         opts->id = qemu_strdup(id);          opts->id = g_strdup(id);
     }      }
     opts->list = list;      opts->list = list;
     loc_save(&opts->loc);      loc_save(&opts->loc);
Line 754  void qemu_opts_del(QemuOpts *opts) Line 785  void qemu_opts_del(QemuOpts *opts)
         qemu_opt_del(opt);          qemu_opt_del(opt);
     }      }
     QTAILQ_REMOVE(&opts->list->head, opts, next);      QTAILQ_REMOVE(&opts->list->head, opts, next);
     qemu_free(opts->id);      g_free(opts->id);
     qemu_free(opts);      g_free(opts);
 }  }
   
 int qemu_opts_print(QemuOpts *opts, void *dummy)  int qemu_opts_print(QemuOpts *opts, void *dummy)

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


unix.superglobalmegacorp.com