summaryrefslogtreecommitdiffstats
path: root/libblkid/src/probe.c
diff options
context:
space:
mode:
authorKarel Zak2011-11-13 21:25:12 +0100
committerKarel Zak2011-11-13 21:25:12 +0100
commit44765fdd841fb1369cf68f360131ed076f3a2771 (patch)
treee9b51e8f0a87381c04b17b08ea15076e5304ef91 /libblkid/src/probe.c
parentlibblkid: add BLKID_PARTS_MAGIC (diff)
downloadkernel-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.c23
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);