-/* Including <linux/fs.h> became more and more painful.\r
- Below a very abbreviated version of some declarations,\r
- only designed to be able to check a magic number\r
- in case no filesystem type was given. */\r
-\r
-#ifndef BLKGETSIZE\r
-#ifndef _IO\r
-/* pre-1.3.45 */\r
-#define BLKGETSIZE 0x1260 /* return device size */\r
-#else\r
-/* same on i386, m68k, arm; different on alpha, mips, sparc, ppc */\r
-#define BLKGETSIZE _IO(0x12,96)\r
-#endif\r
-#endif\r
-\r
-#define MINIX_SUPER_MAGIC 0x137F /* original minix fs */\r
-#define MINIX_SUPER_MAGIC2 0x138F /* minix fs, 30 char names */\r
-struct minix_super_block {\r
- unsigned char s_dummy[16];\r
- unsigned char s_magic[2];\r
-};\r
-#define minixmagic(s) ((unsigned int) s.s_magic[0] + (((unsigned int) s.s_magic[1]) << 8))\r
-\r
-#define ISODCL(from, to) (to - from + 1)\r
-#define ISO_STANDARD_ID "CD001"\r
-struct iso_volume_descriptor {\r
- char type[ISODCL(1,1)]; /* 711 */\r
- char id[ISODCL(2,6)];\r
- char version[ISODCL(7,7)];\r
- char data[ISODCL(8,2048)];\r
-};\r
-\r
-#define HS_STANDARD_ID "CDROM"\r
-struct hs_volume_descriptor {\r
- char foo[ISODCL ( 1, 8)]; /* 733 */\r
- char type[ISODCL ( 9, 9)]; /* 711 */\r
- char id[ISODCL ( 10, 14)];\r
- char version[ISODCL ( 15, 15)]; /* 711 */\r
- char data[ISODCL(16,2048)];\r
-};\r
-\r
-#define EXT_SUPER_MAGIC 0x137D\r
-struct ext_super_block {\r
- unsigned char s_dummy[56];\r
- unsigned char s_magic[2];\r
-};\r
-#define extmagic(s) ((unsigned int) s.s_magic[0] + (((unsigned int) s.s_magic[1]) << 8))\r
-\r
-#define EXT2_PRE_02B_MAGIC 0xEF51\r
-#define EXT2_SUPER_MAGIC 0xEF53\r
-#define EXT3_FEATURE_COMPAT_HAS_JOURNAL 0x0004\r
-struct ext2_super_block {\r
- unsigned char s_dummy1[56];\r
- unsigned char s_magic[2];\r
- unsigned char s_dummy2[34];\r
- unsigned char s_feature_compat[4];\r
- unsigned char s_feature_incompat[4];\r
- unsigned char s_feature_ro_compat[4];\r
- unsigned char s_uuid[16];\r
- unsigned char s_volume_name[16];\r
- unsigned char s_dummy3[88];\r
- unsigned char s_journal_inum[4]; /* ext3 only */\r
-};\r
-#define ext2magic(s) ((unsigned int) s.s_magic[0] + (((unsigned int) s.s_magic[1]) << 8))\r
-\r
-struct reiserfs_super_block\r
-{\r
- unsigned char s_block_count[4];\r
- unsigned char s_free_blocks[4];\r
- unsigned char s_root_block[4];\r
- unsigned char s_journal_block[4];\r
- unsigned char s_journal_dev[4];\r
- unsigned char s_orig_journal_size[4];\r
- unsigned char s_journal_trans_max[4];\r
- unsigned char s_journal_block_count[4];\r
- unsigned char s_journal_max_batch[4];\r
- unsigned char s_journal_max_commit_age[4];\r
- unsigned char s_journal_max_trans_age[4];\r
- unsigned char s_blocksize[2];\r
- unsigned char s_oid_maxsize[2];\r
- unsigned char s_oid_cursize[2];\r
- unsigned char s_state[2];\r
- unsigned char s_magic[12];\r
-};\r
-#define REISERFS_SUPER_MAGIC_STRING "ReIsErFs"\r
-#define REISER2FS_SUPER_MAGIC_STRING "ReIsEr2Fs"\r
-#define REISERFS_DISK_OFFSET_IN_BYTES (64 * 1024)\r
-/* the spot for the super in versions 3.5 - 3.5.10 (inclusive) */\r
-#define REISERFS_OLD_DISK_OFFSET_IN_BYTES (8 * 1024)\r
-\r
-#define _XIAFS_SUPER_MAGIC 0x012FD16D\r
-struct xiafs_super_block {\r
- unsigned char s_boot_segment[512]; /* 1st sector reserved for boot */\r
- unsigned char s_dummy[60];\r
- unsigned char s_magic[4];\r
-};\r
-#define xiafsmagic(s) ((unsigned int) s.s_magic[0] + (((unsigned int) s.s_magic[1]) << 8) + \\r
- (((unsigned int) s.s_magic[2]) << 16) + \\r
- (((unsigned int) s.s_magic[3]) << 24))\r
-\r
-/* From jj@sunsite.ms.mff.cuni.cz Mon Mar 23 15:19:05 1998 */\r
-#define UFS_SUPER_MAGIC 0x00011954\r
-struct ufs_super_block {\r
- unsigned char s_dummy[0x55c];\r
- unsigned char s_magic[4];\r
-};\r
-#define ufsmagic(s) ((unsigned int) s.s_magic[0] + (((unsigned int) s.s_magic[1]) << 8) + \\r
- (((unsigned int) s.s_magic[2]) << 16) + \\r
- (((unsigned int) s.s_magic[3]) << 24))\r
-\r
-/* From Richard.Russon@ait.co.uk Wed Feb 24 08:05:27 1999 */\r
-#define NTFS_SUPER_MAGIC "NTFS"\r
-struct ntfs_super_block {\r
- unsigned char s_dummy[3];\r
- unsigned char s_magic[4];\r
-};\r
-\r
-/* From inspection of a few FAT filesystems - aeb */\r
-/* Unfortunately I find almost the same thing on an extended partition;\r
- it looks like a primary has some directory entries where the extended\r
- has a partition table: IO.SYS, MSDOS.SYS, WINBOOT.SYS */\r
-struct fat_super_block {\r
- unsigned char s_dummy[3];\r
- unsigned char s_os[8]; /* "MSDOS5.0" or "MSWIN4.0" or "MSWIN4.1" */\r
- /* mtools-3.9.4 writes "MTOOL394" */\r
- unsigned char s_dummy2[32];\r
- unsigned char s_label[11]; /* for DOS? */\r
- unsigned char s_fs[8]; /* "FAT12 " or "FAT16 " or all zero */\r
- /* OS/2 BM has "FAT " here. */\r
- unsigned char s_dummy3[9];\r
- unsigned char s_label2[11]; /* for Windows? */\r
- unsigned char s_fs2[8]; /* garbage or "FAT32 " */\r
-};\r
-\r
-#define XFS_SUPER_MAGIC "XFSB"\r
-struct xfs_super_block {\r
- unsigned char s_magic[4];\r
- unsigned char s_dummy[28];\r
- unsigned char s_uuid[16];\r
- unsigned char s_dummy2[60];\r
- unsigned char s_fname[12];\r
-};\r
-\r
-#define CRAMFS_SUPER_MAGIC 0x28cd3d45\r
-struct cramfs_super_block {\r
- unsigned char s_magic[4];\r
- unsigned char s_dummy[12];\r
- unsigned char s_id[16];\r
-};\r
-#define cramfsmagic(s) ((unsigned int) s.s_magic[0] + (((unsigned int) s.s_magic[1]) << 8) + \\r
- (((unsigned int) s.s_magic[2]) << 16) + \\r
- (((unsigned int) s.s_magic[3]) << 24))\r
-\r
-#define HFS_SUPER_MAGIC 0x4244\r
-struct hfs_super_block {\r
- unsigned char s_magic[2];\r
- unsigned char s_dummy[18];\r
- unsigned char s_blksize[4];\r
-};\r
-#define hfsmagic(s) ((unsigned int) s.s_magic[0] + (((unsigned int) s.s_magic[1]) << 8))\r
-#define hfsblksize(s) ((unsigned int) s.s_blksize[0] + \\r
- (((unsigned int) s.s_blksize[1]) << 8) + \\r
- (((unsigned int) s.s_blksize[2]) << 16) + \\r
- (((unsigned int) s.s_blksize[3]) << 24))\r
-\r
-#define HPFS_SUPER_MAGIC 0xf995e849\r
-struct hpfs_super_block {\r
- unsigned char s_magic[4];\r
- unsigned char s_magic2[4];\r
-};\r
-#define hpfsmagic(s) ((unsigned int) s.s_magic[0] + (((unsigned int) s.s_magic[1]) << 8) + \\r
- (((unsigned int) s.s_magic[2]) << 16) + \\r
- (((unsigned int) s.s_magic[3]) << 24))\r
-\r
-struct adfs_super_block {\r
- unsigned char s_dummy[448];\r
- unsigned char s_blksize[1];\r
- unsigned char s_dummy2[62];\r
- unsigned char s_checksum[1];\r
-};\r
-#define adfsblksize(s) ((unsigned int) s.s_blksize[0])\r
+/* Including <linux/fs.h> became more and more painful.
+ Below a very abbreviated version of some declarations,
+ only designed to be able to check a magic number
+ in case no filesystem type was given. */
+
+#ifndef BLKGETSIZE
+#ifndef _IO
+/* pre-1.3.45 */
+#define BLKGETSIZE 0x1260 /* return device size */
+#else
+/* same on i386, m68k, arm; different on alpha, mips, sparc, ppc */
+#define BLKGETSIZE _IO(0x12,96)
+#endif
+#endif
+
+#define MINIX_SUPER_MAGIC 0x137F /* original minix fs */
+#define MINIX_SUPER_MAGIC2 0x138F /* minix fs, 30 char names */
+struct minix_super_block {
+ unsigned char s_dummy[16];
+ unsigned char s_magic[2];
+};
+#define minixmagic(s) ((unsigned int) s.s_magic[0] + (((unsigned int) s.s_magic[1]) << 8))
+
+#define ISODCL(from, to) (to - from + 1)
+#define ISO_STANDARD_ID "CD001"
+struct iso_volume_descriptor {
+ char type[ISODCL(1,1)]; /* 711 */
+ char id[ISODCL(2,6)];
+ char version[ISODCL(7,7)];
+ char data[ISODCL(8,2048)];
+};
+
+#define HS_STANDARD_ID "CDROM"
+struct hs_volume_descriptor {
+ char foo[ISODCL ( 1, 8)]; /* 733 */
+ char type[ISODCL ( 9, 9)]; /* 711 */
+ char id[ISODCL ( 10, 14)];
+ char version[ISODCL ( 15, 15)]; /* 711 */
+ char data[ISODCL(16,2048)];
+};
+
+#define EXT_SUPER_MAGIC 0x137D
+struct ext_super_block {
+ unsigned char s_dummy[56];
+ unsigned char s_magic[2];
+};
+#define extmagic(s) ((unsigned int) s.s_magic[0] + (((unsigned int) s.s_magic[1]) << 8))
+
+#define EXT2_PRE_02B_MAGIC 0xEF51
+#define EXT2_SUPER_MAGIC 0xEF53
+#define EXT3_FEATURE_COMPAT_HAS_JOURNAL 0x0004
+struct ext2_super_block {
+ unsigned char s_dummy1[56];
+ unsigned char s_magic[2];
+ unsigned char s_dummy2[34];
+ unsigned char s_feature_compat[4];
+ unsigned char s_feature_incompat[4];
+ unsigned char s_feature_ro_compat[4];
+ unsigned char s_uuid[16];
+ unsigned char s_volume_name[16];
+ unsigned char s_dummy3[88];
+ unsigned char s_journal_inum[4]; /* ext3 only */
+};
+#define ext2magic(s) ((unsigned int) s.s_magic[0] + (((unsigned int) s.s_magic[1]) << 8))
+
+struct reiserfs_super_block
+{
+ unsigned char s_block_count[4];
+ unsigned char s_free_blocks[4];
+ unsigned char s_root_block[4];
+ unsigned char s_journal_block[4];
+ unsigned char s_journal_dev[4];
+ unsigned char s_orig_journal_size[4];
+ unsigned char s_journal_trans_max[4];
+ unsigned char s_journal_block_count[4];
+ unsigned char s_journal_max_batch[4];
+ unsigned char s_journal_max_commit_age[4];
+ unsigned char s_journal_max_trans_age[4];
+ unsigned char s_blocksize[2];
+ unsigned char s_oid_maxsize[2];
+ unsigned char s_oid_cursize[2];
+ unsigned char s_state[2];
+ unsigned char s_magic[12];
+};
+#define REISERFS_SUPER_MAGIC_STRING "ReIsErFs"
+#define REISER2FS_SUPER_MAGIC_STRING "ReIsEr2Fs"
+#define REISERFS_DISK_OFFSET_IN_BYTES (64 * 1024)
+/* the spot for the super in versions 3.5 - 3.5.10 (inclusive) */
+#define REISERFS_OLD_DISK_OFFSET_IN_BYTES (8 * 1024)
+
+#define _XIAFS_SUPER_MAGIC 0x012FD16D
+struct xiafs_super_block {
+ unsigned char s_boot_segment[512]; /* 1st sector reserved for boot */
+ unsigned char s_dummy[60];
+ unsigned char s_magic[4];
+};
+#define xiafsmagic(s) ((unsigned int) s.s_magic[0] + (((unsigned int) s.s_magic[1]) << 8) + \
+ (((unsigned int) s.s_magic[2]) << 16) + \
+ (((unsigned int) s.s_magic[3]) << 24))
+
+/* From jj@sunsite.ms.mff.cuni.cz Mon Mar 23 15:19:05 1998 */
+#define UFS_SUPER_MAGIC 0x00011954
+struct ufs_super_block {
+ unsigned char s_dummy[0x55c];
+ unsigned char s_magic[4];
+};
+#define ufsmagic(s) ((unsigned int) s.s_magic[0] + (((unsigned int) s.s_magic[1]) << 8) + \
+ (((unsigned int) s.s_magic[2]) << 16) + \
+ (((unsigned int) s.s_magic[3]) << 24))
+
+/* From Richard.Russon@ait.co.uk Wed Feb 24 08:05:27 1999 */
+#define NTFS_SUPER_MAGIC "NTFS"
+struct ntfs_super_block {
+ unsigned char s_dummy[3];
+ unsigned char s_magic[4];
+};
+
+/* From inspection of a few FAT filesystems - aeb */
+/* Unfortunately I find almost the same thing on an extended partition;
+ it looks like a primary has some directory entries where the extended
+ has a partition table: IO.SYS, MSDOS.SYS, WINBOOT.SYS */
+struct fat_super_block {
+ unsigned char s_dummy[3];
+ unsigned char s_os[8]; /* "MSDOS5.0" or "MSWIN4.0" or "MSWIN4.1" */
+ /* mtools-3.9.4 writes "MTOOL394" */
+ unsigned char s_dummy2[32];
+ unsigned char s_label[11]; /* for DOS? */
+ unsigned char s_fs[8]; /* "FAT12 " or "FAT16 " or all zero */
+ /* OS/2 BM has "FAT " here. */
+ unsigned char s_dummy3[9];
+ unsigned char s_label2[11]; /* for Windows? */
+ unsigned char s_fs2[8]; /* garbage or "FAT32 " */
+};
+
+#define XFS_SUPER_MAGIC "XFSB"
+struct xfs_super_block {
+ unsigned char s_magic[4];
+ unsigned char s_dummy[28];
+ unsigned char s_uuid[16];
+ unsigned char s_dummy2[60];
+ unsigned char s_fname[12];
+};
+
+#define CRAMFS_SUPER_MAGIC 0x28cd3d45
+struct cramfs_super_block {
+ unsigned char s_magic[4];
+ unsigned char s_dummy[12];
+ unsigned char s_id[16];
+};
+#define cramfsmagic(s) ((unsigned int) s.s_magic[0] + (((unsigned int) s.s_magic[1]) << 8) + \
+ (((unsigned int) s.s_magic[2]) << 16) + \
+ (((unsigned int) s.s_magic[3]) << 24))
+
+#define HFS_SUPER_MAGIC 0x4244
+struct hfs_super_block {
+ unsigned char s_magic[2];
+ unsigned char s_dummy[18];
+ unsigned char s_blksize[4];
+};
+#define hfsmagic(s) ((unsigned int) s.s_magic[0] + (((unsigned int) s.s_magic[1]) << 8))
+#define hfsblksize(s) ((unsigned int) s.s_blksize[0] + \
+ (((unsigned int) s.s_blksize[1]) << 8) + \
+ (((unsigned int) s.s_blksize[2]) << 16) + \
+ (((unsigned int) s.s_blksize[3]) << 24))
+
+#define HPFS_SUPER_MAGIC 0xf995e849
+struct hpfs_super_block {
+ unsigned char s_magic[4];
+ unsigned char s_magic2[4];
+};
+#define hpfsmagic(s) ((unsigned int) s.s_magic[0] + (((unsigned int) s.s_magic[1]) << 8) + \
+ (((unsigned int) s.s_magic[2]) << 16) + \
+ (((unsigned int) s.s_magic[3]) << 24))
+
+struct adfs_super_block {
+ unsigned char s_dummy[448];
+ unsigned char s_blksize[1];
+ unsigned char s_dummy2[62];
+ unsigned char s_checksum[1];
+};
+#define adfsblksize(s) ((unsigned int) s.s_blksize[0])