fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git] / fs / isofs / dir.c
index 14d86de..4af2548 100644 (file)
  * 
  *  isofs directory handling functions
  */
-#include <linux/errno.h>
-#include <linux/fs.h>
-#include <linux/iso_fs.h>
-#include <linux/kernel.h>
-#include <linux/stat.h>
-#include <linux/string.h>
-#include <linux/mm.h>
-#include <linux/slab.h>
-#include <linux/time.h>
-#include <linux/config.h>
 #include <linux/smp_lock.h>
-#include <linux/buffer_head.h>
-
-#include <asm/uaccess.h>
+#include "isofs.h"
 
 static int isofs_readdir(struct file *, void *, filldir_t);
 
-struct file_operations isofs_dir_operations =
+const struct file_operations isofs_dir_operations =
 {
        .read           = generic_read_dir,
        .readdir        = isofs_readdir,
@@ -195,7 +183,7 @@ static int do_isofs_readdir(struct inode *inode, struct file *filp,
 
                /* Handle the case of the '..' directory */
                if (de->name_len[0] == 1 && de->name[0] == 1) {
-                       inode_number = parent_ino(filp->f_dentry);
+                       inode_number = parent_ino(filp->f_path.dentry);
                        if (filldir(dirent, "..", 2, filp->f_pos, inode_number, DT_DIR) < 0)
                                break;
                        filp->f_pos += de_len;
@@ -204,12 +192,17 @@ static int do_isofs_readdir(struct inode *inode, struct file *filp,
 
                /* Handle everything else.  Do name translation if there
                   is no Rock Ridge NM field. */
-               if (sbi->s_unhide == 'n') {
-                       /* Do not report hidden or associated files */
-                       if (de->flags[-sbi->s_high_sierra] & 5) {
-                               filp->f_pos += de_len;
-                               continue;
-                       }
+
+               /*
+                * Do not report hidden files if so instructed, or associated
+                * files unless instructed to do so
+                */
+               if ((sbi->s_hide == 'y' &&
+                               (de->flags[-sbi->s_high_sierra] & 1)) ||
+                     (sbi->s_showassoc =='n' &&
+                               (de->flags[-sbi->s_high_sierra] & 4))) {
+                       filp->f_pos += de_len;
+                       continue;
                }
 
                map = 1;
@@ -262,8 +255,7 @@ static int isofs_readdir(struct file *filp,
        int result;
        char * tmpname;
        struct iso_directory_record * tmpde;
-       struct inode *inode = filp->f_dentry->d_inode;
-
+       struct inode *inode = filp->f_path.dentry->d_inode;
 
        tmpname = (char *)__get_free_page(GFP_KERNEL);
        if (tmpname == NULL)