X-Git-Url: https://git.ozlabs.org/?a=blobdiff_plain;f=second%2Ffs.c;fp=second%2Ffs.c;h=1744f7de3f28951cafd3d9bddc8fa10e069fcf06;hb=8d5a42062f8b88eaea91434e53973ce9f55589d9;hp=b5ba2ca655925081307e9dec7debdba8b0824a32;hpb=67d317029778e6f068badf7b8e3eec6482ecb00e;p=yaboot.git diff --git a/second/fs.c b/second/fs.c index b5ba2ca..1744f7d 100644 --- a/second/fs.c +++ b/second/fs.c @@ -20,17 +20,32 @@ #include "stdlib.h" #include "fs.h" +#include "errors.h" extern const struct fs_t of_filesystem; extern const struct fs_t of_net_filesystem; extern const struct fs_t ext2_filesystem; -extern const struct fs_t reiserfs_filesystem; //extern const struct fs_t iso_filesystem; +/* Configurable filesystems */ + +#ifdef CONFIG_FS_XFS +extern const struct fs_t xfs_filesystem; +#endif /* CONFIG_FS_XFS */ + +#ifdef CONFIG_FS_REISERFS +extern const struct fs_t reiserfs_filesystem; +#endif /* CONFIG_FS_REISERFS */ + /* Filesystem handlers yaboot knows about */ static const struct fs_t *block_filesystems[] = { &ext2_filesystem, /* ext2 */ +#ifdef CONFIG_FS_XFS + &xfs_filesystem, /* XFS */ +#endif /* CONFIG_FS_XFS */ +#ifdef CONFIG_FS_REISERFS &reiserfs_filesystem, /* reiserfs */ +#endif /* CONFIG_FS_REISERFS */ &of_filesystem, /* HFS/HFS+, ISO9660, UDF, UFS */ NULL }; @@ -39,13 +54,13 @@ const struct fs_t *fs_of = &of_filesystem; /* needed by ISO9660 */ const struct fs_t *fs_of_netboot = &of_net_filesystem; /* needed by file.c */ const struct fs_t * -fs_open( struct boot_file_t *file, const char *dev_name, - struct partition_t *part, const char *file_name) +fs_open(struct boot_file_t *file, const char *dev_name, + struct partition_t *part, const char *file_name) { - const struct fs_t **fs; - for( fs = block_filesystems; *fs; fs++ ) - if( (*fs)->open( file, dev_name, part, file_name ) == FILE_ERR_OK ) - break; + const struct fs_t **fs; + for (fs = block_filesystems; *fs; fs++) + if ((fserrorno = (*fs)->open(file, dev_name, part, file_name)) != FILE_ERR_BAD_FSYS) + break; - return *fs; + return *fs; }