39 for (std::vector<std::string>::const_iterator it = m_blacklist.begin(); it != m_blacklist.end(); it++)
41 if (! fnmatch(it->c_str(), lfn.c_str(), FNM_PATHNAME))
57 if (! parms || ! parms[0] || (strlen(parms) == 0))
59 m_log.
Emsg(
"ConfigDecision",
"Blacklist file not specified.");
62 m_log.
Emsg(
"ConfigDecision",
"Using blacklist", parms);
63 FILE * fp =
fopen(parms,
"r");
66 m_log.
Emsg(
"ConfigDecision", errno,
"Failed to open blacklist:", parms);
71 while(fgets(line,
sizeof(line), fp))
74 while (trimmed[0] && isspace(trimmed[0])) {trimmed++; }
75 if (trimmed[0] == 0) {
continue; }
76 size_t filelen = strlen(trimmed);
77 if (trimmed[filelen-1] ==
'\n') {trimmed[filelen-1] =
'\0'; }
78 m_blacklist.push_back(trimmed);
82 m_log.
Emsg(
"ConfigDecision", errno,
"Failed to parse blacklist");
85 for (std::vector<std::string>::const_iterator it = m_blacklist.begin(); it!=m_blacklist.end(); it++)
87 m_log.
Emsg(
"ConfigDecision",
"Cache is blacklisting paths matching", it->c_str());
93 std::vector<std::string> m_blacklist;
XrdPfc::Decision * XrdPfcGetDecision(XrdSysError &err)
virtual bool ConfigDecision(const char *parms)
BlacklistDecision(XrdSysError &log)
virtual bool Decide(const std::string &lfn, XrdOss &) const
A decision library that allows all files to be cached except for a blacklist.
Base class for selecting which files should be cached.
int Emsg(const char *esfx, int ecode, const char *text1, const char *text2=0)