@@ -64,6 +64,7 @@ static BdrvProbeFunc *format_probes[] = {
bdrv_bochs_probe,
bdrv_cloop_probe,
bdrv_crypto_probe_luks,
+ bdrv_dmg_probe,
};
static QTAILQ_HEAD(, BlockDriverState) graph_bdrv_states =
@@ -1,17 +1,22 @@
#include "qemu/osdep.h"
#include "block/probe.h"
-int dmg_probe(const uint8_t *buf, int buf_size, const char *filename)
+const char *bdrv_dmg_probe(const uint8_t *buf, int buf_size,
+ const char *filename, int *score)
{
+ const char *format = "dmg";
int len;
+ assert(score);
+ *score = 0;
if (!filename) {
- return 0;
+ return format;
}
len = strlen(filename);
if (len > 4 && !strcmp(filename + len - 4, ".dmg")) {
- return 2;
+ *score = 2;
+ return format;
}
- return 0;
+ return format;
}
@@ -709,7 +709,6 @@ static void dmg_close(BlockDriverState *bs)
static BlockDriver bdrv_dmg = {
.format_name = "dmg",
.instance_size = sizeof(BDRVDMGState),
- .bdrv_probe = dmg_probe,
.bdrv_open = dmg_open,
.bdrv_refresh_limits = dmg_refresh_limits,
.bdrv_co_preadv = dmg_co_preadv,
@@ -1,7 +1,6 @@
#ifndef PROBE_H
#define PROBE_H
-int dmg_probe(const uint8_t *buf, int buf_size, const char *filename);
int parallels_probe(const uint8_t *buf, int buf_size, const char *filename);
int qcow_probe(const uint8_t *buf, int buf_size, const char *filename);
int qcow2_probe(const uint8_t *buf, int buf_size, const char *filename);
@@ -17,5 +16,7 @@ const char *bdrv_cloop_probe(const uint8_t *buf, int buf_size,
const char *filename, int *score);
const char *bdrv_crypto_probe_luks(const uint8_t *buf, int buf_size,
const char *filename, int *score);
+const char *bdrv_dmg_probe(const uint8_t *buf, int buf_size,
+ const char *filename, int *score);
#endif