summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDerek Young <dyoung@nslu2-linux.org>2008-03-02 21:50:50 +0000
committerDerek Young <dyoung@nslu2-linux.org>2008-03-02 21:50:50 +0000
commitbcbe730f843f8fb2dda8e9064605c104b0b92144 (patch)
tree5d69fa69f3326ac23b8cc8acc7bdf562ba316a42
parent585df8b1a450576cfd3e8c6740a9aa6a00d5bfc9 (diff)
parent0e96be7f834f3264594c8e21b3fe5ee69c296486 (diff)
merge of '0c093b26a4dcd73c59fdfd549e99d4e4d6ce6ff7'
and 'ad750d608664d7708c21300ab3eed2feec262c22'
-rw-r--r--packages/klibc/files/fstype-sane-vfat-and-jffs2-for-1.5.patch63
1 files changed, 63 insertions, 0 deletions
diff --git a/packages/klibc/files/fstype-sane-vfat-and-jffs2-for-1.5.patch b/packages/klibc/files/fstype-sane-vfat-and-jffs2-for-1.5.patch
new file mode 100644
index 0000000000..b52b3e309b
--- /dev/null
+++ b/packages/klibc/files/fstype-sane-vfat-and-jffs2-for-1.5.patch
@@ -0,0 +1,63 @@
+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 <endian.h>
+ #include <netinet/in.h>
+ #include <sys/vfs.h>
+-
++#include <linux/types.h>
+ #define cpu_to_be32(x) __cpu_to_be32(x) /* Needed by romfs_fs.h */
+
+ #include "romfs_fs.h"
+@@ -33,6 +33,12 @@
+ #include "lvm2_sb.h"
+ #include "iso9660_sb.h"
+
++#if __BYTE_ORDER == __BIG_ENDIAN
++#include <linux/byteorder/big_endian.h>
++#else
++#include <linux/byteorder/little_endian.h>
++#endif
++
+ /*
+ * Slightly cleaned up version of jfs_superblock to
+ * avoid pulling in other kernel header files.
+@@ -54,6 +60,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)
+ {
+ const unsigned char *p = buf;
+@@ -277,6 +304,8 @@
+ {1, "ext3", ext3_image},
+ {1, "ext2", ext2_image},
+ {1, "minix", minix_image},
++ {0, "jffs2", jffs2_image},
++ {0, "vfat", vfat_image},
+ {8, "reiserfs", reiserfs_image},
+ {64, "reiserfs", reiserfs_image},
+ {32, "jfs", jfs_image},