patch-2.1.87 linux/fs/ufs/ufs_dir.c
Next file: linux/fs/ufs/ufs_inode.c
Previous file: linux/fs/adfs/super.c
Back to the patch index
Back to the overall index
- Lines: 78
- Date:
Thu Feb 12 16:27:15 1998
- Orig file:
v2.1.86/linux/fs/ufs/ufs_dir.c
- Orig date:
Sat Nov 8 09:52:02 1997
diff -u --recursive --new-file v2.1.86/linux/fs/ufs/ufs_dir.c linux/fs/ufs/ufs_dir.c
@@ -8,6 +8,9 @@
*
* swab support by Francois-Rene Rideau <rideau@ens.fr> 19970406
*
+ * 4.4BSD (FreeBSD) support added on February 1st 1998 by
+ * Niels Kristian Bech Jensen <nkbj@image.dk> partially based
+ * on code by Martin von Loewis <martin@mira.isdn.cs.tu-berlin.de>.
*/
#include <linux/fs.h>
@@ -28,17 +31,18 @@
struct ufs_direct * de;
struct super_block * sb;
int de_reclen;
- __u32 s_flags, bytesex;
+ __u32 flags;
- /* Isn't that already done but the upper layer??? */
+ /* Isn't that already done in the upper layer???
+ * the VFS layer really needs some explicit documentation!
+ */
if (!inode || !S_ISDIR(inode->i_mode))
return -EBADF;
sb = inode->i_sb;
- s_flags = sb->u.ufs_sb.s_flags;
- bytesex = s_flags & UFS_BYTESEX;
+ flags = sb->u.ufs_sb.s_flags;
- if (s_flags & UFS_DEBUG) {
+ if (flags & UFS_DEBUG) {
printk("ufs_readdir: ino %lu f_pos %lu\n",
inode->i_ino, (unsigned long) filp->f_pos);
ufs_print_inode(inode);
@@ -92,20 +96,23 @@
&& offset < sb->s_blocksize) {
de = (struct ufs_direct *) (bh->b_data + offset);
/* XXX - put in a real ufs_check_dir_entry() */
- if ((de->d_reclen == 0) || (de->d_namlen == 0)) {
+ if ((de->d_reclen == 0) || (NAMLEN(de) == 0)) {
/* SWAB16() was unneeded -- compare to 0 */
- filp->f_pos = (filp->f_pos & (sb->s_blocksize - 1)) + sb->s_blocksize;
+ filp->f_pos = (filp->f_pos &
+ (sb->s_blocksize - 1)) +
+ sb->s_blocksize;
brelse(bh);
return stored;
}
-#if 0
+#if 0 /* XXX */
if (!ext2_check_dir_entry ("ext2_readdir", inode, de,
/* XXX - beware about de having to be swabped somehow */
bh, offset)) {
/* On error, skip the f_pos to the
next block. */
- filp->f_pos = (filp->f_pos & (sb->s_blocksize - 1))
- + sb->s_blocksize;
+ filp->f_pos = (filp->f_pos &
+ (sb->s_blocksize - 1)) +
+ sb->s_blocksize;
brelse (bh);
return stored;
}
@@ -121,11 +128,12 @@
* during the copy operation. */
unsigned long version = inode->i_version;
- if (s_flags & UFS_DEBUG) {
+ if (flags & UFS_DEBUG) {
printk("ufs_readdir: filldir(%s,%u)\n",
de->d_name, SWAB32(de->d_ino));
}
- error = filldir(dirent, de->d_name, SWAB16(de->d_namlen), filp->f_pos, SWAB32(de->d_ino));
+ error = filldir(dirent, de->d_name, NAMLEN(de),
+ filp->f_pos, SWAB32(de->d_ino));
if (error)
break;
if (version != inode->i_version)
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov