-Index: klibc-1.5/usr/kinit/fstype/fstype.c
+Index: klibc-1.5.21/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
+--- a/usr/kinit/fstype/fstype.c
++++ b/usr/kinit/fstype/fstype.c
 @@ -20,7 +20,7 @@
  #include <netinet/in.h>
  #include <sys/utsname.h>

-
+#include <linux/types.h>
 #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 <linux/byteorder/big_endian.h>
+#else

 /*
  * Slightly cleaned up version of jfs_superblock to
  * avoid pulling in other kernel header files.
@@ -60,6 +66,30 @@
 /* Swap needs the definition of block size */
 #include "swap_fs.h"
 
+static int jffs2_image(const void *buf, unsigned long long *blocks)
+{
+	const unsigned char *p = buf;
+
+	if (p[0] == 0x85 && p[1] == 0x19) {
+		*blocks=0;
+		return 1;
+	}
+	return 0;
+}
+
+static int vfat_image(const void *buf, unsigned long long *blocks)
+{
+	const char *p = buf;
+
+	if (!strncmp(p + 54, "FAT12   ", 8)
+	 || !strncmp(p + 54, "FAT16   ", 8)
+	 || !strncmp(p + 82, "FAT32   ", 8)) {
+		*blocks=0;
+		return 1;
+	}
+	return 0;
+}
+
 static int gzip_image(const void *buf, unsigned long long *bytes)
 {
 	const unsigned char *p = buf;
@@ -495,6 +525,8 @@ static struct imagetype images[] = {
 	{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},
-- 
1.7.3.4

