37 extern unsigned long XrdOucHashVal2(
const char *KeyVal,
int KeyLen);
51 plen = strlen(pathval); pins = 0; prem = 0;
53 path = strdup(pathval);
57 for (i = 0; i < plen; i++)
58 if (path[i] ==
'@' && path[i+1] ==
'=')
59 {pins = i; prem = plen - i - 2;
break;}
73 if (path) {free(path); path = 0;}
75 while(np) {cp = np; np = np->next; cp->next = 0;
delete cp;}
85 const unsigned long pathhash,
88 const int psl = (pathsub ? strlen(pathsub) : 0);
91 {
if (cp->ctmp->
Privs(pathpriv,pathname,pathlen,pathhash,pathsub))
94 else if (pathlen >= cp->plen)
95 if ((!pathsub && !strncmp(pathname, cp->path, cp->plen))
96 || (pathsub && cp->
Subcomp(pathname,pathlen,pathsub,psl)))
103 }
while ((cp = cp->next));
112 const char *pathsub,
const int sublen)
117 if (strncmp(pathname, path, pins))
return 0;
121 if (strncmp(&pathname[pins], pathsub, sublen))
return 0;
125 ncmp = pins + sublen;
126 if ((pathlen - ncmp) < prem)
return 0;
130 if (prem)
return !strncmp(&path[pins+2], &pathname[ncmp], prem);
148 if (CapName) free(CapName);
149 if (C_List)
delete C_List;
153 while(np) {cp = np; np = np->next; cp->next = 0;
delete cp;}
162 int nlen = strlen(name);
165 do {
if (ncp->CNlen <= nlen && !strcmp(ncp->CapName,name+(nlen - ncp->CNlen)))
unsigned long XrdOucHashVal2(const char *KeyVal, int KeyLen)
XrdAccCapability * Find(const char *name)
int Subcomp(const char *pathname, const int pathlen, const char *pathsub, const int sublen)
XrdAccCapability(char *pathval, XrdAccPrivCaps &privval)
int Privs(XrdAccPrivCaps &pathpriv, const char *pathname, const int pathlen, const unsigned long pathhash, const char *pathsub=0)