static BlockBackend *img_open(const char *id, const char *filename,

                              const char *fmt, int flags,

                              bool require_io, bool quiet)

{

    BlockBackend *blk;

    BlockDriverState *bs;

    char password[256];

    Error *local_err = NULL;

    QDict *options = NULL;



    if (fmt) {

        options = qdict_new();

        qdict_put(options, "driver", qstring_from_str(fmt));

    }



    blk = blk_new_open(id, filename, NULL, options, flags, &local_err);

    if (!blk) {

        error_report("Could not open '%s': %s", filename,

                     error_get_pretty(local_err));

        error_free(local_err);

        goto fail;

    }



    bs = blk_bs(blk);

    if (bdrv_is_encrypted(bs) && require_io) {

        qprintf(quiet, "Disk image '%s' is encrypted.\n", filename);

        if (read_password(password, sizeof(password)) < 0) {

            error_report("No password given");

            goto fail;

        }

        if (bdrv_set_key(bs, password) < 0) {

            error_report("invalid password");

            goto fail;

        }

    }

    return blk;

fail:

    blk_unref(blk);

    return NULL;

}

static BlockBackend *img_open(const char *id, const char *filename,

                              const char *fmt, int flags,

                              bool require_io, bool quiet)

{

    BlockBackend *blk;

    BlockDriverState *bs;

    char password[256];

    Error *local_err = NULL;

    QDict *options = NULL;



    if (fmt) {

        options = qdict_new();

        qdict_put(options, "driver", qstring_from_str(fmt));

    }



    blk = blk_new_open(id, filename, NULL, options, flags, &local_err);

    if (!blk) {

        error_report("Could not open '%s': %s", filename,

                     error_get_pretty(local_err));

        error_free(local_err);

        goto fail;

    }



    bs = blk_bs(blk);

    if (bdrv_is_encrypted(bs) && require_io) {

        qprintf(quiet, "Disk image '%s' is encrypted.\n", filename);

        if (read_password(password, sizeof(password)) < 0) {

            error_report("No password given");

            goto fail;

        }

        if (bdrv_set_key(bs, password) < 0) {

            error_report("invalid password");

            goto fail;

        }

    }

    return blk;

fail:

    blk_unref(blk);

    return NULL;

}

static BlockBackend *FUNC_0(const char *id, const char *filename,

                              const char *fmt, int flags,

                              bool require_io, bool quiet)

{

    BlockBackend *blk;

    BlockDriverState *bs;

    char VAR_0[256];

    Error *local_err = NULL;

    QDict *options = NULL;



    if (fmt) {

        options = qdict_new();

        qdict_put(options, "driver", qstring_from_str(fmt));

    }



    blk = blk_new_open(id, filename, NULL, options, flags, &local_err);

    if (!blk) {

        error_report("Could not open '%s': %s", filename,

                     error_get_pretty(local_err));

        error_free(local_err);

        goto fail;

    }



    bs = blk_bs(blk);

    if (bdrv_is_encrypted(bs) && require_io) {

        qprintf(quiet, "Disk image '%s' is encrypted.\n", filename);

        if (read_password(VAR_0, sizeof(VAR_0)) < 0) {

            error_report("No VAR_0 given");

            goto fail;

        }

        if (bdrv_set_key(bs, VAR_0) < 0) {

            error_report("invalid VAR_0");

            goto fail;

        }

    }

    return blk;

fail:

    blk_unref(blk);

    return NULL;

}

static BlockBackend *FUNC_0(const char *id, const char *filename,
const char *fmt, int flags,
bool require_io, bool quiet)
{ BlockBackend *blk; BlockDriverState *bs; char VAR_0[256]; Error *local_err = NULL; QDict *options = NULL; if (fmt) { options = qdict_new(); qdict_put(options, "driver", qstring_from_str(fmt)); } blk = blk_new_open(id, filename, NULL, options, flags, &local_err); if (!blk) { error_report("Could not open '%s': %s", filename,
error_get_pretty(local_err)); error_free(local_err); goto fail; } bs = blk_bs(blk); if (bdrv_is_encrypted(bs) && require_io) { qprintf(quiet, "Disk image '%s' is encrypted.\n", filename); if (read_password(VAR_0, sizeof(VAR_0)) < 0) { error_report("No VAR_0 given"); goto fail; } if (bdrv_set_key(bs, VAR_0) < 0) { error_report("invalid VAR_0"); goto fail; } } return blk; fail:
blk_unref(blk); return NULL; }