return 0;
 }
 
-static void add_name(struct dir_struct *dir, const char *pathname, int len,
-                    int ignored_entry)
+static void add_name(struct dir_struct *dir, const char *pathname, int len)
 {
        struct dir_entry *ent;
 
                dir->entries = xrealloc(dir->entries, alloc*sizeof(ent));
        }
        ent = xmalloc(sizeof(*ent) + len + 1);
-       ent->ignored_entry = ignored_entry;
        ent->len = len;
        memcpy(ent->name, pathname, len);
        ent->name[len] = 0;
 
                while ((de = readdir(fdir)) != NULL) {
                        int len;
-                       int ignored_entry;
 
                        if ((de->d_name[0] == '.') &&
                            (de->d_name[1] == 0 ||
                                continue;
                        len = strlen(de->d_name);
                        memcpy(fullname + baselen, de->d_name, len+1);
-                       ignored_entry = excluded(dir, fullname);
-
-                       if (!dir->show_both &&
-                           (ignored_entry != dir->show_ignored) &&
-                           (!dir->show_ignored || DTYPE(de) != DT_DIR))
-                               continue;
+                       if (excluded(dir, fullname) != dir->show_ignored) {
+                               if (!dir->show_ignored || DTYPE(de) != DT_DIR) {
+                                       continue;
+                               }
+                       }
 
                        switch (DTYPE(de)) {
                        struct stat st;
                        if (check_only)
                                goto exit_early;
                        else
-                               add_name(dir, fullname, baselen + len,
-                                        ignored_entry);
+                               add_name(dir, fullname, baselen + len);
                }
 exit_early:
                closedir(fdir);
 
 
 
 struct dir_entry {
-       unsigned ignored_entry : 1;
-       unsigned int len : 15;
+       int len;
        char name[FLEX_ARRAY]; /* more */
 };
 
 
 struct dir_struct {
        int nr, alloc;
-       unsigned int show_both: 1,
-                    show_ignored:1,
+       unsigned int show_ignored:1,
                     show_other_directories:1,
                     hide_empty_directories:1;
        struct dir_entry **entries;