]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
libblkid: add blkid_probe_set_fsendianness()
authorThomas Weißschuh <thomas@t-8ch.de>
Wed, 26 Oct 2022 14:04:27 +0000 (16:04 +0200)
committerThomas Weißschuh <thomas@t-8ch.de>
Wed, 26 Oct 2022 14:36:59 +0000 (16:36 +0200)
libblkid/src/superblocks/superblocks.c
libblkid/src/superblocks/superblocks.h

index 9f192edbc3e81f1bf5a3587a1a77d3cae57b6a2b..1c304bc2f6c6756ab3610e1fb112ca5955ce031f 100644 (file)
@@ -626,6 +626,29 @@ int blkid_probe_set_fsblocksize(blkid_probe pr, uint32_t block_size)
                        block_size);
 }
 
+int blkid_probe_set_fsendianness(blkid_probe pr, enum BLKID_ENDIANNESS endianness)
+{
+       struct blkid_chain *chn = blkid_probe_get_chain(pr);
+
+       if (!(chn->flags & BLKID_SUBLKS_FSINFO))
+               return 0;
+
+       const char *value;
+
+       switch (endianness) {
+               case BLKID_ENDIANNESS_LITTLE:
+                       value = "LITTLE";
+                       break;
+               case BLKID_ENDIANNESS_BIG:
+                       value = "BIG";
+                       break;
+               default:
+                       return -EINVAL;
+       }
+
+       return blkid_probe_sprintf_value(pr, "ENDIANNESS", "%s", value);
+}
+
 int blkid_probe_set_id_label(blkid_probe pr, const char *name,
                             const unsigned char *data, size_t len)
 {
index 8a1b85ddac6acac8e181c3d65955219aafc6fcc6..0d1c461a77b32cb98ecbc8a22af535aa4dd495e0 100644 (file)
@@ -9,6 +9,18 @@
 
 #include "blkidP.h"
 
+enum BLKID_ENDIANNESS {
+       BLKID_ENDIANNESS_LITTLE,
+       BLKID_ENDIANNESS_BIG,
+};
+#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
+#define BLKID_ENDIANNESS_NATIVE BLKID_ENDIANNESS_LITTLE
+#define BLKID_ENDIANNESS_OTHER BLKID_ENDIANNESS_BIG
+#else
+#define BLKID_ENDIANNESS_NATIVE BLKID_ENDIANNESS_BIG
+#define BLKID_ENDIANNESS_OTHER BLKID_ENDIANNESS_LITTLE
+#endif
+
 extern const struct blkid_idinfo cramfs_idinfo;
 extern const struct blkid_idinfo swap_idinfo;
 extern const struct blkid_idinfo swsuspend_idinfo;
@@ -114,6 +126,7 @@ int blkid_probe_set_block_size(blkid_probe pr, unsigned block_size);
 int blkid_probe_set_fssize(blkid_probe pr, uint64_t size);
 int blkid_probe_set_fslastblock(blkid_probe pr, uint64_t lastblock);
 int blkid_probe_set_fsblocksize(blkid_probe pr, uint32_t block_size);
+int blkid_probe_set_fsendianness(blkid_probe pr, enum BLKID_ENDIANNESS endianness);
 
 extern int blkid_probe_is_bitlocker(blkid_probe pr);
 extern int blkid_probe_is_ntfs(blkid_probe pr);