]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
libblkid: add BLKID_PARTS_MAGIC
authorKarel Zak <kzak@redhat.com>
Fri, 11 Nov 2011 14:13:33 +0000 (15:13 +0100)
committerKarel Zak <kzak@redhat.com>
Fri, 11 Nov 2011 14:13:33 +0000 (15:13 +0100)
Signed-off-by: Karel Zak <kzak@redhat.com>
libblkid/src/blkid.h.in
libblkid/src/blkidP.h
libblkid/src/probe.c
libblkid/src/superblocks/superblocks.c
libblkid/src/superblocks/superblocks.h

index 2d7d68959d42adf1f783893173bb86df4dbdf98a..da861a313e6f9fb87b4cbb7b14b09b8d812e1b04 100644 (file)
@@ -278,6 +278,7 @@ extern int blkid_probe_filter_partitions_type(blkid_probe pr, int flag, char *na
 /* partitions probing flags */
 #define BLKID_PARTS_FORCE_GPT          (1 << 1)
 #define BLKID_PARTS_ENTRY_DETAILS      (1 << 2)
+#define BLKID_PARTS_MAGIC              (1 << 3)
 extern int blkid_probe_set_partitions_flags(blkid_probe pr, int flags);
 
 /* binary interface */
index 61a1aad89560b384a1022d2b93a090967f793280..00689e827a947364421c9d20e20a3f8ede167d2a 100644 (file)
@@ -426,6 +426,8 @@ extern int blkid_probe_vsprintf_value(blkid_probe pr, const char *name,
                 const char *fmt, va_list ap);
 extern int blkid_probe_sprintf_value(blkid_probe pr, const char *name,
                 const char *fmt, ...);
+extern int blkid_probe_set_magic(blkid_probe pr, blkid_loff_t offset,
+               size_t len, unsigned char *magic);
 
 extern void blkid_unparse_uuid(const unsigned char *uuid, char *str, size_t len);
 extern size_t blkid_rtrim_whitespace(unsigned char *str);
index af111194357132be46e0ad64e6d5ac68062bd9e3..49b042095a801cda3f97c5a012c5931176fa8387 100644 (file)
@@ -1213,6 +1213,39 @@ int blkid_probe_sprintf_value(blkid_probe pr, const char *name,
        return rc;
 }
 
+int blkid_probe_set_magic(blkid_probe pr, blkid_loff_t offset,
+                       size_t len, unsigned char *magic)
+{
+       int rc = 0;
+       struct blkid_chain *chn = blkid_probe_get_chain(pr);
+
+       if (!chn || !magic || !len || chn->binary)
+               return 0;
+
+       switch (chn->driver->id) {
+       case BLKID_CHAIN_SUBLKS:
+               if (!(chn->flags & BLKID_SUBLKS_MAGIC))
+                       return 0;
+               rc = blkid_probe_set_value(pr, "SBMAGIC", magic, len);
+               if (!rc)
+                       rc = blkid_probe_sprintf_value(pr,
+                                       "SBMAGIC_OFFSET", "%llu", offset);
+               break;
+       case BLKID_CHAIN_PARTS:
+               if (!(chn->flags & BLKID_PARTS_MAGIC))
+                       return 0;
+               rc = blkid_probe_set_value(pr, "PTMAGIC", magic, len);
+               if (!rc)
+                       rc = blkid_probe_sprintf_value(pr,
+                                       "PTMAGIC_OFFSET", "%llu", offset);
+               break;
+       default:
+               break;
+       }
+
+       return rc;
+}
+
 /**
  * blkid_probe_get_devno:
  * @pr: probe
index 059700c167257528d4ad328e1197db72064a2836..dbdce8b518128db01b1111b5576acecd709ecbc6 100644 (file)
@@ -479,21 +479,6 @@ static int superblocks_safeprobe(blkid_probe pr, struct blkid_chain *chn)
        return 0;
 }
 
-int blkid_probe_set_magic(blkid_probe pr, blkid_loff_t offset,
-                       size_t len, unsigned char *magic)
-{
-       int rc = 0;
-       struct blkid_chain *chn = blkid_probe_get_chain(pr);
-
-       if (magic && len && (chn->flags & BLKID_SUBLKS_MAGIC)) {
-               rc = blkid_probe_set_value(pr, "SBMAGIC", magic, len);
-               if (!rc)
-                       rc = blkid_probe_sprintf_value(pr, "SBMAGIC_OFFSET",
-                                       "%llu", offset);
-       }
-       return rc;
-}
-
 int blkid_probe_set_version(blkid_probe pr, const char *version)
 {
        struct blkid_chain *chn = blkid_probe_get_chain(pr);
index fbc89ef6a55cbd5e9a9ad8910dc75f1b57638a49..c97e4472457ce4f8079141403d21ab0aa34fb025 100644 (file)
@@ -72,8 +72,6 @@ extern const struct blkid_idinfo exfat_idinfo;
 /*
  * superblock functions
  */
-extern int blkid_probe_set_magic(blkid_probe pr, blkid_loff_t offset,
-               size_t len, unsigned char *magic);
 extern int blkid_probe_set_version(blkid_probe pr, const char *version);
 extern int blkid_probe_sprintf_version(blkid_probe pr, const char *fmt, ...)
                __attribute__ ((format (printf, 2, 3)));