|
This is a part of the CLFS silo patch found at
|
|
http://svn.cross-lfs.org/svn/repos/cross-lfs/trunk/patches/silo-1.4.13-fixes-3.patch
|
|
|
|
diff -Naur silo-1.4.13.orig/second/fs/ufs.c silo-1.4.13/second/fs/ufs.c
|
|
--- silo-1.4.13.orig/second/fs/ufs.c 2006-06-01 13:24:53.000000000 -0400
|
|
+++ silo-1.4.13/second/fs/ufs.c 2007-04-03 17:02:53.000000000 -0400
|
|
@@ -40,28 +40,18 @@
|
|
|
|
ino_t inode = 0;
|
|
|
|
-#ifdef UFS_CIGAM
|
|
-/* Apparently new header */
|
|
-
|
|
#define ufsi_size(x) ((unsigned int)((x)->ui_size))
|
|
#define ufsi_db(x) ((unsigned int *)((x)->ui_u2.ui_addr.ui_db))
|
|
#define ufsi_ib(x) ((unsigned int *)((x)->ui_u2.ui_addr.ui_ib))
|
|
#define ufsd_namlen(x) ((unsigned char)((x)->d_u.d_44.d_namlen))
|
|
|
|
-#ifdef UFS_MINFREE
|
|
-/* Apparently even newer header */
|
|
-#define ufs_superblock ufs_super_block
|
|
+struct ufs_superblock_full {
|
|
+ struct ufs_super_block_first first;
|
|
+ struct ufs_super_block_second second;
|
|
+ struct ufs_super_block_third third;
|
|
+};
|
|
+#define ufs_superblock ufs_super_block_first
|
|
#define ufs_direct ufs_dir_entry
|
|
-#endif
|
|
-
|
|
-#else
|
|
-
|
|
-#define ufsi_size(x) (((x)->ui_size.val[1]))
|
|
-#define ufsi_db(x) ((unsigned int *)((x)->ui_db))
|
|
-#define ufsi_ib(x) ((unsigned int *)((x)->ui_ib))
|
|
-#define ufsd_namlen(x) ((unsigned char)((x)->d_namlen))
|
|
-
|
|
-#endif
|
|
|
|
#ifndef S_ISLNK
|
|
#include <sys/stat.h>
|
|
@@ -92,25 +82,22 @@
|
|
return p;
|
|
}
|
|
|
|
-static struct ufs_superblock *ufs_read_super(ufs_filsys fs)
|
|
+static struct ufs_superblock_full *ufs_read_super(ufs_filsys fs)
|
|
{
|
|
- struct ufs_superblock *usb;
|
|
+ struct ufs_superblock_full *usb;
|
|
|
|
- usb = (struct ufs_superblock *) malloc (2048);
|
|
+ usb = (struct ufs_superblock_full *) malloc (2048);
|
|
if (!usb) return 0;
|
|
if (io_channel_read_blk (fs->io, UFS_SBLOCK/1024, -2048, (char *)usb))
|
|
return 0;
|
|
- if (usb->fs_magic != UFS_MAGIC) {
|
|
- /* XXX - replace hard-coded constant with a byte-swap macro */
|
|
- if (usb->fs_magic == 0x54190100) {
|
|
- }
|
|
+ if (usb->third.fs_magic != UFS_MAGIC) {
|
|
return 0;
|
|
}
|
|
- if (usb->fs_bsize != UFS_BSIZE)
|
|
+ if (usb->first.fs_bsize != UFS_BSIZE)
|
|
return 0;
|
|
- if (usb->fs_fsize != UFS_FSIZE)
|
|
+ if (usb->first.fs_fsize != UFS_FSIZE)
|
|
return 0;
|
|
- io_channel_set_blksize (fs->io, usb->fs_fsize);
|
|
+ io_channel_set_blksize (fs->io, usb->first.fs_fsize);
|
|
return usb;
|
|
}
|
|
|