/* Adds all QDict entries to the QemuOpts that can be added and removes them from the QDict. When this function returns, the QDict contains only those entries that couldn't be added to the QemuOpts.  */
void qemu_opts_absorb_qdict(QemuOpts *opts, QDict *qdict, Error **errp)
/* Adds all QDict entries to the QemuOpts that can be added and removes them from the QDict. When this function returns, the QDict contains only those entries that couldn't be added to the QemuOpts.  */
void qemu_opts_absorb_qdict(QemuOpts *opts, QDict *qdict, Error **errp)
{
    const QDictEntry *entry, *next;
    entry = qdict_first(qdict);
    while (entry != NULL) {
        Error *local_err = NULL;
        OptsFromQDictState state = {
            .errp = &local_err,
            .opts = opts,
        };
        next = qdict_next(qdict, entry);
        if (find_desc_by_name(opts->list->desc, entry->key)) {
            qemu_opts_from_qdict_1(entry->key, entry->value, &state);
            if (local_err) {
                error_propagate(errp, local_err);
                return;
            } else {
                qdict_del(qdict, entry->key);
            }
        }
        entry = next;
    }
}