--- /dev/null
+/* 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