boolean FileBrowser::Acceptable(const char* name) { boolean dir1 = IsADirectory(name); int m = dir1 ? directory_mode : mode; Regexp* r = dir1 ? directory_regexp : regexp; boolean mode_ok, name_ok; if (m != 0) { struct stat st; mode_ok = stat((char*)name, &st) == 0 && (st.st_mode & m) != 0; } else { mode_ok = true; } if (r != nil) { name_ok = r->Match(name, strlen(name), 0) >= 0; } else { name_ok = true; } return mode_ok && name_ok; }