Switch to side-by-side view

--- a/src/utils/fstreewalk.cpp
+++ b/src/utils/fstreewalk.cpp
@@ -94,8 +94,6 @@
 bool FsTreeWalker::setSkippedNames(const list<string> &patterns)
 {
     data->skippedNames = patterns;
-    data->skippedNames.sort();
-    data->skippedNames.unique();
     return true;
 }
 bool FsTreeWalker::inSkippedNames(const string& name)
@@ -125,8 +123,6 @@
 	 it != data->skippedPaths.end(); it++)
         if (!(data->options & FtwNoCanon))
             *it = path_canon(*it);
-    data->skippedPaths.sort();
-    data->skippedPaths.unique();
     return true;
 }
 bool FsTreeWalker::inSkippedPaths(const string& path)
@@ -134,7 +130,14 @@
     list<string>::const_iterator it;
     for (it = data->skippedPaths.begin(); 
 	 it != data->skippedPaths.end(); it++) {
-	if (fnmatch(it->c_str(), path.c_str(), FNM_PATHNAME) == 0) 
+        // If we find a system where FNM_LEADING_DIR is undefined (its
+        // unposixy), will have to do this for all ascendant paths up
+        // to the topdir. We'll then have a constructor option because
+        // this is only useful when called externally. When used
+        // internally, we don't descend in skipped paths, and so don't
+        // need FNM_LEADING_DIR
+	if (fnmatch(it->c_str(), path.c_str(), FNM_PATHNAME | 
+                    FNM_LEADING_DIR) == 0) 
 	    return true;
     }
     return false;