Beispiel #1
0
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;
}