]> wimlib.net Git - wimlib/blobdiff - src/iterate_dir.c
A few cleanups and fixes from recent changes
[wimlib] / src / iterate_dir.c
index d0311358b60c15924336a9d5d67f6f0f161ec72f..76bb2b3c2d9a28d8f1d841fe4115f02e18a18f99 100644 (file)
@@ -8,20 +8,18 @@
 /*
  * Copyright (C) 2013 Eric Biggers
  *
- * This file is part of wimlib, a library for working with WIM files.
+ * This file is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free
+ * Software Foundation; either version 3 of the License, or (at your option) any
+ * later version.
  *
- * wimlib is free software; you can redistribute it and/or modify it under the
- * terms of the GNU General Public License as published by the Free
- * Software Foundation; either version 3 of the License, or (at your option)
- * any later version.
- *
- * wimlib is distributed in the hope that it will be useful, but WITHOUT ANY
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE. See the GNU General Public License for more
+ * This file is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
  * details.
  *
- * You should have received a copy of the GNU General Public License
- * along with wimlib; if not, see http://www.gnu.org/licenses/.
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this file; if not, see http://www.gnu.org/licenses/.
  */
 
 #ifdef HAVE_CONFIG_H
@@ -101,7 +99,7 @@ init_wimlib_dentry(struct wimlib_dir_entry *wdentry, struct wim_dentry *dentry,
        }
 
        for (unsigned i = 0; i < inode->i_num_ads; i++) {
-               if (!ads_entry_is_named_stream(&inode->i_ads_entries[i]))
+               if (!inode->i_ads_entries[i].stream_name_nbytes)
                        continue;
                lte = inode_stream_lte(inode, i + 1, wim->lookup_table);
                wdentry->num_named_streams++;
@@ -172,12 +170,22 @@ do_iterate_dir_tree(WIMStruct *wim,
                struct wim_dentry *child;
 
                ret = 0;
-               for_dentry_child(child, dentry) {
-                       ret = do_iterate_dir_tree(wim, child,
-                                                 flags & ~WIMLIB_ITERATE_DIR_TREE_FLAG_CHILDREN,
-                                                 cb, user_ctx);
-                       if (ret)
-                               break;
+               if (default_ignore_case) {
+                       for_dentry_child_case_insensitive(child, dentry) {
+                               ret = do_iterate_dir_tree(wim, child,
+                                                         flags & ~WIMLIB_ITERATE_DIR_TREE_FLAG_CHILDREN,
+                                                         cb, user_ctx);
+                               if (ret)
+                                       break;
+                       }
+               } else {
+                       for_dentry_child(child, dentry) {
+                               ret = do_iterate_dir_tree(wim, child,
+                                                         flags & ~WIMLIB_ITERATE_DIR_TREE_FLAG_CHILDREN,
+                                                         cb, user_ctx);
+                               if (ret)
+                                       break;
+                       }
                }
        }
 out_free_wimlib_dentry: