41 inline int Attr() {
return attrs;}
42 inline unsigned long long Flag() {
return flags;}
43 inline const char *
Name() {
return name;}
45 inline char *
Path() {
return path;}
46 inline int Plen() {
return pathlen;}
48 inline int PathOK(
const char *pd,
const int pl)
49 {
return pl >= pathlen && !strncmp(pd, path, pathlen);}
51 inline void Set(
int aval) {attrs = aval;}
52 inline void Set(
unsigned long long fval) {flags = fval;}
53 inline void Set(
const char *pd,
const char *pn)
54 {
if (path) free(path);
56 int n = strlen(pn) + 1 + pathlen + 1;
57 path = (
char *)malloc(n);
58 n = snprintf(path, n,
"%s", pd);
59 name = path+pathlen+1;
64 : flags(fv), next(0), path(strdup(pd)),
65 pathlen(strlen(pd)), attrs(0) {}
68 : next(0), path(0), attrs(0)
72 {
if (path) free(path);}
79 unsigned long long flags;
93 {
int plen = strlen(pathname);
95 while(p) {
if (p->
PathOK(pathname, plen))
break;
101 inline void Default(
unsigned long long x) {dflts = x;}
104 inline void Defstar(
unsigned long long x) {dstrs = x;}
108 while(p) {next = p->next;
delete p; p = next;}
112 inline unsigned long long Find(
const char *pathname)
113 {
int plen = strlen(pathname);
115 while(p) {
if (p->
PathOK(pathname, plen))
break;
118 if (p)
return p->flags;
119 return (*pathname ==
'/' ? dflts : dstrs);
123 {
int plen = strlen(pathname);
125 while(p) {
if (p->pathlen == plen
126 && !strcmp(p->path, pathname))
break;
136 while(cp && newitem->pathlen < cp->pathlen) {pp=cp;cp=cp->next;}
137 if (pp) {newitem->next = pp->next; pp->next = newitem;}
138 else {newitem->next = next; next = newitem;}
144 : dflts(dfx), dstrs(dfx) {}
149 unsigned long long dflts;
150 unsigned long long dstrs;
XrdOucPListAnchor(unsigned long long dfx=0)
XrdOucPList * About(const char *pathname)
void Default(unsigned long long x)
void Insert(XrdOucPList *newitem)
XrdOucPList * Match(const char *pathname)
unsigned long long Default()
unsigned long long Find(const char *pathname)
void Defstar(unsigned long long x)
void Empty(XrdOucPList *newlist=0)
void Set(unsigned long long fval)
int PathOK(const char *pd, const int pl)
XrdOucPList(const char *pd="", unsigned long long fv=0)
XrdOucPList(const char *pd, const char *pn)
void Set(const char *pd, const char *pn)
unsigned long long Flag()