xrootd
Main Page
Namespaces
Classes
Files
File List
File Members
src
XrdXrootd
XrdXrootdXPath.hh
Go to the documentation of this file.
1
#ifndef __XROOTD_XPATH__
2
#define __XROOTD_XPATH__
3
/******************************************************************************/
4
/* */
5
/* X r d X r o o t d X P a t h . h h */
6
/* */
7
/* (c) 2004 by the Board of Trustees of the Leland Stanford, Jr., University */
8
/* All Rights Reserved */
9
/* Produced by Andrew Hanushevsky for Stanford University under contract */
10
/* DE-AC02-76-SFO0515 with the Department of Energy */
11
/* */
12
/* This file is part of the XRootD software suite. */
13
/* */
14
/* XRootD is free software: you can redistribute it and/or modify it under */
15
/* the terms of the GNU Lesser General Public License as published by the */
16
/* Free Software Foundation, either version 3 of the License, or (at your */
17
/* option) any later version. */
18
/* */
19
/* XRootD is distributed in the hope that it will be useful, but WITHOUT */
20
/* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or */
21
/* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public */
22
/* License for more details. */
23
/* */
24
/* You should have received a copy of the GNU Lesser General Public License */
25
/* along with XRootD in a file called COPYING.LESSER (LGPL license) and file */
26
/* COPYING (GPL license). If not, see <http://www.gnu.org/licenses/>. */
27
/* */
28
/* The copyright holder's institutional names and contributor's names may not */
29
/* be used to endorse or promote products derived from this software without */
30
/* specific prior written permission of the institution or contributor. */
31
/******************************************************************************/
32
33
#include <strings.h>
34
#include <stdlib.h>
35
36
#define XROOTDXP_OK 1
37
#define XROOTDXP_NOLK 2
38
39
class
XrdXrootdXPath
40
{
41
public
:
42
43
inline
XrdXrootdXPath
*
Next
() {
return
next
;}
44
inline
int
Opts
() {
return
pathopt
;}
45
inline
char
*
Path
() {
return
path
;}
46
inline
char
*
Path
(
int
&PLen)
47
{PLen =
pathlen
;
return
path
;}
48
49
void
Insert
(
const
char
*pd,
int
popt=0,
int
flags=
XROOTDXP_OK
)
50
{
XrdXrootdXPath
*pp = 0, *p =
next
;
51
XrdXrootdXPath
*newp =
new
XrdXrootdXPath
(pd,popt,flags);
52
while
(p && newp->
pathlen
>= p->pathlen)
53
{pp = p; p = p->
next
;}
54
newp->
next
= p;
55
if
(pp) pp->
next
= newp;
56
else
next
= newp;
57
}
58
59
inline
int
Validate
(
const
char
*pd,
const
int
pl=0)
60
{
int
plen = (pl ? pl : strlen(pd));
61
XrdXrootdXPath
*p =
next
;
62
while
(p && plen >= p->
pathlen
)
63
{
if
(!strncmp(pd, p->
path
, p->
pathlen
))
64
return
p->
pathopt
;
65
p=p->
next
;
66
}
67
return
0;
68
}
69
70
XrdXrootdXPath
(
const
char
*pathdata=
""
,
int
popt=0,
int
flags=
XROOTDXP_OK
)
71
{
next
= 0;
72
pathopt
= popt | flags;
73
pathlen
= strlen(pathdata);
74
path
= strdup(pathdata);
75
}
76
77
~XrdXrootdXPath
() {
if
(
path
) free(
path
);}
78
79
private
:
80
81
XrdXrootdXPath
*
next
;
82
int
pathlen
;
83
int
pathopt
;
84
char
*
path
;
85
};
86
#endif
Generated by
1.8.3.1