Index: klibc-1.5/usr/kinit/fstype/fstype.c =================================================================== --- klibc-1.5.orig/usr/kinit/fstype/fstype.c 2008-02-28 00:48:35.319254938 +0100 +++ klibc-1.5/usr/kinit/fstype/fstype.c 2008-02-28 00:52:20.583257793 +0100 @@ -20,7 +20,7 @@ #include #include #include - +#include #define cpu_to_be32(x) __cpu_to_be32(x) /* Needed by romfs_fs.h */ #include "romfs_fs.h" @@ -37,6 +37,12 @@ #include "ocfs2_fs.h" #include "nilfs_fs.h" +#if __BYTE_ORDER == __BIG_ENDIAN +#include +#else +#include +#endif + /* * Slightly cleaned up version of jfs_superblock to * avoid pulling in other kernel header files. @@ -59,6 +65,27 @@ /* Swap needs the definition of block size */ #include "swap_fs.h" +static int jffs2_image(const unsigned char *buf, unsigned long *blocks) +{ + // Very sloppy! ;-E + if (*buf == 0x85 && buf[1] == 0x19) + return 1; + + return 0; +} + +static int vfat_image(const unsigned char *buf, unsigned long *blocks) +{ + const struct romfs_super_block *sb = + (const struct romfs_super_block *)buf; + if (!strncmp(buf + 54, "FAT12 ", 8) + || !strncmp(buf + 54, "FAT16 ", 8) + || !strncmp(buf + 82, "FAT32 ", 8)) + return 1; + + return 0; +} + static int gzip_image(const void *buf, unsigned long long *bytes) {277 304 const unsigned char *p = buf; @@ -490,6 +517,8 @@ {1, "ext3", ext3_image}, {1, "ext2", ext2_image}, {1, "minix", minix_image}, + {0, "jffs2", jffs2_image}, + {0, "vfat", vfat_image}, {1, "nilfs2", nilfs2_image}, {2, "ocfs2", ocfs2_image}, {8, "reiserfs", reiserfs_image},