diff options
author | Karel Zak | 2011-11-13 21:25:12 +0100 |
---|---|---|
committer | Karel Zak | 2011-11-13 21:25:12 +0100 |
commit | 44765fdd841fb1369cf68f360131ed076f3a2771 (patch) | |
tree | e9b51e8f0a87381c04b17b08ea15076e5304ef91 /libblkid/src/probe.c | |
parent | libblkid: add BLKID_PARTS_MAGIC (diff) | |
download | kernel-qcow2-util-linux-44765fdd841fb1369cf68f360131ed076f3a2771.tar.gz kernel-qcow2-util-linux-44765fdd841fb1369cf68f360131ed076f3a2771.tar.xz kernel-qcow2-util-linux-44765fdd841fb1369cf68f360131ed076f3a2771.zip |
libblkid: export info about PT magic strings
Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'libblkid/src/probe.c')
-rw-r--r-- | libblkid/src/probe.c | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/libblkid/src/probe.c b/libblkid/src/probe.c index 49b042095..ee01a65e5 100644 --- a/libblkid/src/probe.c +++ b/libblkid/src/probe.c @@ -947,11 +947,11 @@ int blkid_do_probe(blkid_probe pr) */ int blkid_do_wipe(blkid_probe pr, int dryrun) { - const char *off; + const char *off = NULL; size_t len = 0; loff_t offset, l; char buf[BUFSIZ]; - int fd; + int fd, rc; struct blkid_chain *chn; if (!pr) @@ -961,9 +961,22 @@ int blkid_do_wipe(blkid_probe pr, int dryrun) if (!chn) return -1; - if (blkid_probe_lookup_value(pr, "SBMAGIC_OFFSET", &off, NULL) || - blkid_probe_lookup_value(pr, "SBMAGIC", NULL, &len) || - len == 0 || off == NULL) + switch (chn->driver->id) { + case BLKID_CHAIN_SUBLKS: + rc = blkid_probe_lookup_value(pr, "SBMAGIC_OFFSET", &off, NULL); + if (!rc) + rc = blkid_probe_lookup_value(pr, "SBMAGIC", NULL, &len); + break; + case BLKID_CHAIN_PARTS: + rc = blkid_probe_lookup_value(pr, "PTMAGIC_OFFSET", &off, NULL); + if (!rc) + rc = blkid_probe_lookup_value(pr, "PTMAGIC", NULL, &len); + break; + default: + return 0; + } + + if (rc || len == 0 || off == NULL) return 0; offset = strtoll(off, NULL, 10); |