The attached patch adds iso9660 detection support to fstype. Signed-off-by: David H?rdeman <david at hardeman.nu> -- fstype.c | 17 +++++++++++++++++ iso9660_sb.h | 24 ++++++++++++++++++++++++ 2 files changed, 41 insertions(+) -------------- next part -------------- diff -Nru klibc/usr/kinit/fstype/fstype.c klibc-hack/usr/kinit/fstype/fstype.c --- klibc/usr/kinit/fstype/fstype.c 2006-09-14 00:19:41.000000000 +0200 +++ klibc-hack/usr/kinit/fstype/fstype.c 2006-09-14 00:10:01.000000000 +0200 @@ -31,6 +31,7 @@ #include "xfs_sb.h" #include "luks_fs.h" #include "lvm2_sb.h" +#include "iso9660_sb.h" /* * Slightly cleaned up version of jfs_superblock to @@ -221,6 +222,21 @@ return 0; } +static int iso_image(const void *buf, unsigned long long *blocks) +{ + const struct iso_volume_descriptor *isovd + (const struct iso_volume_descriptor *)buf; + const struct iso_hs_volume_descriptor *isohsvd + (const struct iso_hs_volume_descriptor *)buf; + + if (!memcmp(isovd->id, ISO_MAGIC, ISO_MAGIC_L) || + !memcmp(isohsvd->id, ISO_HS_MAGIC, ISO_HS_MAGIC_L)) { + *blocks = 0; + return 1; + } + return 0; +} + struct imagetype { off_t block; const char name[12]; @@ -250,6 +266,7 @@ {8, "reiserfs", reiserfs_image}, {64, "reiserfs", reiserfs_image}, {32, "jfs", jfs_image}, + {32, "iso9660", iso_image}, {0, "luks", luks_image}, {0, "lvm2", lvm2_image}, {1, "lvm2", lvm2_image}, diff -Nru klibc/usr/kinit/fstype/iso9660_sb.h klibc-hack/usr/kinit/fstype/iso9660_sb.h --- klibc/usr/kinit/fstype/iso9660_sb.h 1970-01-01 01:00:00.000000000 +0100 +++ klibc-hack/usr/kinit/fstype/iso9660_sb.h 2006-09-14 00:03:28.000000000 +0200 @@ -0,0 +1,24 @@ +#ifndef __ISO9660_SB_H +#define __ISO9660_SB_H + +#define ISO_MAGIC_L 5 +#define ISO_MAGIC "CD001" +#define ISO_HS_MAGIC_L 5 +#define ISO_HS_MAGIC "CDROM" + +/* ISO9660 Volume Descriptor */ +struct iso_volume_descriptor { + __u8 type; + char id[ISO_MAGIC_L]; + __u8 version; +}; + +/* High Sierra Volume Descriptor */ +struct iso_hs_volume_descriptor { + char foo[8]; + __u8 type; + char id[ISO_HS_MAGIC_L]; + __u8 version; +}; + +#endif