Lines Matching refs:opts
125 static const char *find_default_by_name(QemuOpts *opts, const char *name) in find_default_by_name() argument
127 const QemuOptDesc *desc = find_desc_by_name(opts->list->desc, name); in find_default_by_name()
224 QemuOpt *qemu_opt_find(QemuOpts *opts, const char *name) in qemu_opt_find() argument
228 QTAILQ_FOREACH_REVERSE(opt, &opts->head, next) { in qemu_opt_find()
238 QTAILQ_REMOVE(&opt->opts->head, opt, next); in qemu_opt_del()
247 static void qemu_opt_del_all(QemuOpts *opts, const char *name) in qemu_opt_del_all() argument
251 QTAILQ_FOREACH_SAFE(opt, &opts->head, next, next_opt) { in qemu_opt_del_all()
258 const char *qemu_opt_get(QemuOpts *opts, const char *name) in qemu_opt_get() argument
262 if (opts == NULL) { in qemu_opt_get()
266 opt = qemu_opt_find(opts, name); in qemu_opt_get()
268 return find_default_by_name(opts, name); in qemu_opt_get()
274 void qemu_opt_iter_init(QemuOptsIter *iter, QemuOpts *opts, const char *name) in qemu_opt_iter_init() argument
276 iter->opts = opts; in qemu_opt_iter_init()
277 iter->opt = QTAILQ_FIRST(&opts->head); in qemu_opt_iter_init()
297 char *qemu_opt_get_del(QemuOpts *opts, const char *name) in qemu_opt_get_del() argument
302 if (opts == NULL) { in qemu_opt_get_del()
306 opt = qemu_opt_find(opts, name); in qemu_opt_get_del()
308 return g_strdup(find_default_by_name(opts, name)); in qemu_opt_get_del()
312 qemu_opt_del_all(opts, name); in qemu_opt_get_del()
316 bool qemu_opt_has_help_opt(QemuOpts *opts) in qemu_opt_has_help_opt() argument
320 QTAILQ_FOREACH_REVERSE(opt, &opts->head, next) { in qemu_opt_has_help_opt()
328 static bool qemu_opt_get_bool_helper(QemuOpts *opts, const char *name, in qemu_opt_get_bool_helper() argument
335 if (opts == NULL) { in qemu_opt_get_bool_helper()
339 opt = qemu_opt_find(opts, name); in qemu_opt_get_bool_helper()
341 def_val = find_default_by_name(opts, name); in qemu_opt_get_bool_helper()
350 qemu_opt_del_all(opts, name); in qemu_opt_get_bool_helper()
355 bool qemu_opt_get_bool(QemuOpts *opts, const char *name, bool defval) in qemu_opt_get_bool() argument
357 return qemu_opt_get_bool_helper(opts, name, defval, false); in qemu_opt_get_bool()
360 bool qemu_opt_get_bool_del(QemuOpts *opts, const char *name, bool defval) in qemu_opt_get_bool_del() argument
362 return qemu_opt_get_bool_helper(opts, name, defval, true); in qemu_opt_get_bool_del()
365 static uint64_t qemu_opt_get_number_helper(QemuOpts *opts, const char *name, in qemu_opt_get_number_helper() argument
372 if (opts == NULL) { in qemu_opt_get_number_helper()
376 opt = qemu_opt_find(opts, name); in qemu_opt_get_number_helper()
378 def_val = find_default_by_name(opts, name); in qemu_opt_get_number_helper()
387 qemu_opt_del_all(opts, name); in qemu_opt_get_number_helper()
392 uint64_t qemu_opt_get_number(QemuOpts *opts, const char *name, uint64_t defval) in qemu_opt_get_number() argument
394 return qemu_opt_get_number_helper(opts, name, defval, false); in qemu_opt_get_number()
397 uint64_t qemu_opt_get_number_del(QemuOpts *opts, const char *name, in qemu_opt_get_number_del() argument
400 return qemu_opt_get_number_helper(opts, name, defval, true); in qemu_opt_get_number_del()
403 static uint64_t qemu_opt_get_size_helper(QemuOpts *opts, const char *name, in qemu_opt_get_size_helper() argument
410 if (opts == NULL) { in qemu_opt_get_size_helper()
414 opt = qemu_opt_find(opts, name); in qemu_opt_get_size_helper()
416 def_val = find_default_by_name(opts, name); in qemu_opt_get_size_helper()
425 qemu_opt_del_all(opts, name); in qemu_opt_get_size_helper()
430 uint64_t qemu_opt_get_size(QemuOpts *opts, const char *name, uint64_t defval) in qemu_opt_get_size() argument
432 return qemu_opt_get_size_helper(opts, name, defval, false); in qemu_opt_get_size()
435 uint64_t qemu_opt_get_size_del(QemuOpts *opts, const char *name, in qemu_opt_get_size_del() argument
438 return qemu_opt_get_size_helper(opts, name, defval, true); in qemu_opt_get_size_del()
468 int qemu_opt_unset(QemuOpts *opts, const char *name) in qemu_opt_unset() argument
470 QemuOpt *opt = qemu_opt_find(opts, name); in qemu_opt_unset()
472 assert(opts_accepts_any(opts->list)); in qemu_opt_unset()
482 static QemuOpt *opt_create(QemuOpts *opts, const char *name, char *value) in opt_create() argument
488 opt->opts = opts; in opt_create()
489 QTAILQ_INSERT_TAIL(&opts->head, opt, next); in opt_create()
497 const QemuOptsList *list = opt->opts->list; in opt_validate()
513 bool qemu_opt_set(QemuOpts *opts, const char *name, const char *value, in qemu_opt_set() argument
516 QemuOpt *opt = opt_create(opts, name, g_strdup(value)); in qemu_opt_set()
525 bool qemu_opt_set_bool(QemuOpts *opts, const char *name, bool val, in qemu_opt_set_bool() argument
530 const QemuOptsList *list = opts->list; in qemu_opt_set_bool()
540 opt->opts = opts; in qemu_opt_set_bool()
544 QTAILQ_INSERT_TAIL(&opts->head, opt, next); in qemu_opt_set_bool()
548 bool qemu_opt_set_number(QemuOpts *opts, const char *name, int64_t val, in qemu_opt_set_number() argument
553 const QemuOptsList *list = opts->list; in qemu_opt_set_number()
563 opt->opts = opts; in qemu_opt_set_number()
567 QTAILQ_INSERT_TAIL(&opts->head, opt, next); in qemu_opt_set_number()
577 int qemu_opt_foreach(QemuOpts *opts, qemu_opt_loopfunc func, void *opaque, in qemu_opt_foreach() argument
583 QTAILQ_FOREACH(opt, &opts->head, next) { in qemu_opt_foreach()
595 QemuOpts *opts; in qemu_opts_find() local
597 QTAILQ_FOREACH(opts, &list->head, next) { in qemu_opts_find()
598 if (!opts->id && !id) { in qemu_opts_find()
599 return opts; in qemu_opts_find()
601 if (opts->id && id && !strcmp(opts->id, id)) { in qemu_opts_find()
602 return opts; in qemu_opts_find()
611 QemuOpts *opts = NULL; in qemu_opts_create() local
618 opts = qemu_opts_find(list, NULL); in qemu_opts_create()
619 if (opts) { in qemu_opts_create()
620 return opts; in qemu_opts_create()
631 opts = qemu_opts_find(list, id); in qemu_opts_create()
632 if (opts != NULL) { in qemu_opts_create()
637 opts = g_malloc0(sizeof(*opts)); in qemu_opts_create()
638 opts->id = g_strdup(id); in qemu_opts_create()
639 opts->list = list; in qemu_opts_create()
640 loc_save(&opts->loc); in qemu_opts_create()
641 QTAILQ_INIT(&opts->head); in qemu_opts_create()
642 QTAILQ_INSERT_TAIL(&list->head, opts, next); in qemu_opts_create()
643 return opts; in qemu_opts_create()
648 QemuOpts *opts, *next_opts; in qemu_opts_reset() local
650 QTAILQ_FOREACH_SAFE(opts, &list->head, next, next_opts) { in qemu_opts_reset()
651 qemu_opts_del(opts); in qemu_opts_reset()
655 void qemu_opts_loc_restore(QemuOpts *opts) in qemu_opts_loc_restore() argument
657 loc_restore(&opts->loc); in qemu_opts_loc_restore()
660 const char *qemu_opts_id(QemuOpts *opts) in qemu_opts_id() argument
662 return opts->id; in qemu_opts_id()
666 void qemu_opts_set_id(QemuOpts *opts, char *id) in qemu_opts_set_id() argument
668 opts->id = id; in qemu_opts_set_id()
671 void qemu_opts_del(QemuOpts *opts) in qemu_opts_del() argument
675 if (opts == NULL) { in qemu_opts_del()
680 opt = QTAILQ_FIRST(&opts->head); in qemu_opts_del()
685 QTAILQ_REMOVE(&opts->list->head, opts, next); in qemu_opts_del()
686 g_free(opts->id); in qemu_opts_del()
687 g_free(opts); in qemu_opts_del()
703 void qemu_opts_print(QemuOpts *opts, const char *separator) in qemu_opts_print() argument
706 QemuOptDesc *desc = opts->list->desc; in qemu_opts_print()
709 if (opts->id) { in qemu_opts_print()
710 printf("id=%s", opts->id); /* passed id_wellformed -> no commas */ in qemu_opts_print()
715 QTAILQ_FOREACH(opt, &opts->head, next) { in qemu_opts_print()
724 opt = qemu_opt_find(opts, desc->name); in qemu_opts_print()
799 static bool opts_do_parse(QemuOpts *opts, const char *params, in opts_do_parse() argument
822 opt = opt_create(opts, option, value); in opts_do_parse()
875 bool qemu_opts_do_parse(QemuOpts *opts, const char *params, in qemu_opts_do_parse() argument
878 return opts_do_parse(opts, params, firstname, false, NULL, errp); in qemu_opts_do_parse()
887 QemuOpts *opts; in opts_parse() local
892 opts = qemu_opts_create(list, id, !list->merge_lists, errp); in opts_parse()
894 if (opts == NULL) { in opts_parse()
898 if (!opts_do_parse(opts, params, firstname, in opts_parse()
900 qemu_opts_del(opts); in opts_parse()
904 return opts; in opts_parse()
932 QemuOpts *opts; in qemu_opts_parse_noisily() local
935 opts = opts_parse(list, params, permit_abbrev, true, in qemu_opts_parse_noisily()
938 if (!opts) { in qemu_opts_parse_noisily()
946 return opts; in qemu_opts_parse_noisily()
949 static bool qemu_opts_from_qdict_entry(QemuOpts *opts, in qemu_opts_from_qdict_entry() argument
980 return qemu_opt_set(opts, key, value, errp); in qemu_opts_from_qdict_entry()
992 QemuOpts *opts; in qemu_opts_from_qdict() local
995 opts = qemu_opts_create(list, qdict_get_try_str(qdict, "id"), 1, errp); in qemu_opts_from_qdict()
996 if (!opts) { in qemu_opts_from_qdict()
1003 if (!qemu_opts_from_qdict_entry(opts, entry, errp)) { in qemu_opts_from_qdict()
1004 qemu_opts_del(opts); in qemu_opts_from_qdict()
1009 return opts; in qemu_opts_from_qdict()
1017 bool qemu_opts_absorb_qdict(QemuOpts *opts, QDict *qdict, Error **errp) in qemu_opts_absorb_qdict() argument
1026 if (opts_accepts_any(opts->list) || in qemu_opts_absorb_qdict()
1027 find_desc_by_name(opts->list->desc, entry->key)) { in qemu_opts_absorb_qdict()
1028 if (!qemu_opts_from_qdict_entry(opts, entry, errp)) { in qemu_opts_absorb_qdict()
1054 QDict *qemu_opts_to_qdict_filtered(QemuOpts *opts, QDict *qdict, in qemu_opts_to_qdict_filtered() argument
1062 if (opts->id) { in qemu_opts_to_qdict_filtered()
1063 qdict_put_str(qdict, "id", opts->id); in qemu_opts_to_qdict_filtered()
1065 QTAILQ_FOREACH_SAFE(opt, &opts->head, next, next) { in qemu_opts_to_qdict_filtered()
1089 QDict *qemu_opts_to_qdict(QemuOpts *opts, QDict *qdict) in qemu_opts_to_qdict() argument
1091 return qemu_opts_to_qdict_filtered(opts, qdict, NULL, false); in qemu_opts_to_qdict()
1097 bool qemu_opts_validate(QemuOpts *opts, const QemuOptDesc *desc, Error **errp) in qemu_opts_validate() argument
1101 assert(opts_accepts_any(opts->list)); in qemu_opts_validate()
1103 QTAILQ_FOREACH(opt, &opts->head, next) { in qemu_opts_validate()
1129 QemuOpts *opts, *next; in qemu_opts_foreach() local
1133 QTAILQ_FOREACH_SAFE(opts, &list->head, next, next) { in qemu_opts_foreach()
1134 loc_restore(&opts->loc); in qemu_opts_foreach()
1135 rc = func(opaque, opts, errp); in qemu_opts_foreach()