[OpenBIOS] [commit] r796 - in trunk/openbios-devel: fs/ext2 fs/hfs fs/hfsplus fs/iso9660 include/fs packages
repository service
svn at openbios.org
Wed Jun 23 22:41:35 CEST 2010
Author: mcayland
Date: Wed Jun 23 22:41:34 2010
New Revision: 796
URL: http://tracker.coreboot.org/trac/openbios/changeset/796
Log:
Fix up non-grub iso9660 filesystem, plus correct a thinko where the sense of the existing hfs/ext2 probe functions was inverted
by default.
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland at siriusit.co.uk>
Modified:
trunk/openbios-devel/fs/ext2/ext2_fs.c
trunk/openbios-devel/fs/hfs/hfs_fs.c
trunk/openbios-devel/fs/hfsplus/hfsp_fs.c
trunk/openbios-devel/fs/iso9660/iso9660_fs.c
trunk/openbios-devel/fs/iso9660/iso9660_mount.c
trunk/openbios-devel/fs/iso9660/libiso9660.h
trunk/openbios-devel/include/fs/fs.h
trunk/openbios-devel/packages/misc-files.c
Modified: trunk/openbios-devel/fs/ext2/ext2_fs.c
==============================================================================
--- trunk/openbios-devel/fs/ext2/ext2_fs.c Tue Jun 15 21:59:47 2010 (r795)
+++ trunk/openbios-devel/fs/ext2/ext2_fs.c Wed Jun 23 22:41:34 2010 (r796)
@@ -205,7 +205,7 @@
int fs_ext2_probe(int fd, llong offs)
{
if (ext2_probe(fd, offs))
- return -1;
+ return 0;
- return 0;
+ return -1;
}
Modified: trunk/openbios-devel/fs/hfs/hfs_fs.c
==============================================================================
--- trunk/openbios-devel/fs/hfs/hfs_fs.c Tue Jun 15 21:59:47 2010 (r795)
+++ trunk/openbios-devel/fs/hfs/hfs_fs.c Wed Jun 23 22:41:34 2010 (r796)
@@ -463,7 +463,7 @@
fs_hfs_probe( int fd, llong offs )
{
if (hfs_probe(fd, offs))
- return -1;
+ return 0;
- return 0;
+ return -1;
}
Modified: trunk/openbios-devel/fs/hfsplus/hfsp_fs.c
==============================================================================
--- trunk/openbios-devel/fs/hfsplus/hfsp_fs.c Tue Jun 15 21:59:47 2010 (r795)
+++ trunk/openbios-devel/fs/hfsplus/hfsp_fs.c Wed Jun 23 22:41:34 2010 (r796)
@@ -402,7 +402,7 @@
fs_hfsp_probe(int fd, llong offs)
{
if (volume_probe(fd, offs))
- return -1;
+ return 0;
- return 0;
+ return -1;
}
Modified: trunk/openbios-devel/fs/iso9660/iso9660_fs.c
==============================================================================
--- trunk/openbios-devel/fs/iso9660/iso9660_fs.c Tue Jun 15 21:59:47 2010 (r795)
+++ trunk/openbios-devel/fs/iso9660/iso9660_fs.c Wed Jun 23 22:41:34 2010 (r796)
@@ -152,6 +152,15 @@
.get_fstype = get_fstype,
};
+int
+fs_iso9660_probe( int fd, llong offs )
+{
+ if (iso9660_probe(fd, offs))
+ return 0;
+
+ return -1;
+}
+
int fs_iso9660_open(int fd, fs_ops_t *fs)
{
iso9660_VOLUME *volume;
Modified: trunk/openbios-devel/fs/iso9660/iso9660_mount.c
==============================================================================
--- trunk/openbios-devel/fs/iso9660/iso9660_mount.c Tue Jun 15 21:59:47 2010 (r795)
+++ trunk/openbios-devel/fs/iso9660/iso9660_mount.c Wed Jun 23 22:41:34 2010 (r796)
@@ -189,6 +189,22 @@
return 0;
}
+int iso9660_probe(int fd, llong offset)
+{
+ struct iso_primary_descriptor ipd;
+
+ seek_io(fd, 16 * ISOFS_BLOCK_SIZE + offset);
+ read_io(fd, &ipd, sizeof (ipd));
+
+ if ((ipd.type[0] != ISO_VD_PRIMARY) ||
+ (strncmp(ipd.id, ISO_STANDARD_ID, sizeof (ipd.id)) != 0) ||
+ (ipd.version[0] != 1)) {
+ return 0;
+ }
+
+ return -1;
+}
+
struct iso_directory_record *iso9660_get_root_node(iso9660_VOLUME* volume)
{
return (struct iso_directory_record *)volume->descriptor->root_directory_record;
Modified: trunk/openbios-devel/fs/iso9660/libiso9660.h
==============================================================================
--- trunk/openbios-devel/fs/iso9660/libiso9660.h Tue Jun 15 21:59:47 2010 (r795)
+++ trunk/openbios-devel/fs/iso9660/libiso9660.h Wed Jun 23 22:41:34 2010 (r796)
@@ -14,6 +14,7 @@
extern iso9660_VOLUME* iso9660_mount(int fd);
extern int iso9660_umount(iso9660_VOLUME *volume);
+extern int iso9660_probe(int fd, llong offs);
extern iso9660_DIR* iso9660_opendir(iso9660_VOLUME *, const char *name);
extern iso9660_FILE* iso9660_open(iso9660_VOLUME *, const char *pathname);
extern int iso9660_closedir(iso9660_DIR *dir);
Modified: trunk/openbios-devel/include/fs/fs.h
==============================================================================
--- trunk/openbios-devel/include/fs/fs.h Tue Jun 15 21:59:47 2010 (r795)
+++ trunk/openbios-devel/include/fs/fs.h Wed Jun 23 22:41:34 2010 (r796)
@@ -69,8 +69,10 @@
#ifdef CONFIG_ISO9660
extern int fs_iso9660_open( int fd, fs_ops_t *fs );
+extern int fs_iso9660_probe( int fd, llong offs );
#else
static inline int fs_iso9660_open( int fd, fs_ops_t *fs ) { return -1; }
+static inline int fs_iso9660_probe( int fd, llong offs ) { return -1; }
#endif
#ifdef CONFIG_EXT2
Modified: trunk/openbios-devel/packages/misc-files.c
==============================================================================
--- trunk/openbios-devel/packages/misc-files.c Tue Jun 15 21:59:47 2010 (r795)
+++ trunk/openbios-devel/packages/misc-files.c Wed Jun 23 22:41:34 2010 (r796)
@@ -359,12 +359,12 @@
err = fs_hfs_probe(fd, offs);
DPRINTF("--- HFS returned %d\n", err);
}
-/*
+
if( err ) {
- err = fs_iso9660_open(fd, fs);
+ err = fs_iso9660_probe(fd, offs);
DPRINTF("--- ISO9660 returned %d\n", err);
}
-*/
+
if( err ) {
err = fs_ext2_probe(fd, offs);
DPRINTF("--- ext2 returned %d\n", err);
More information about the OpenBIOS
mailing list