35 #include <sys/param.h>
37 #include <sys/types.h>
61 char *lfn, pfn[MAXPATHLEN];
65 if (!(lfn = Spec.
getarg())) {Emsg(
"lfn not specified.");
return 1;}
69 do {
if (
Config.LocalPath(lfn, pfn,
sizeof(pfn))) Msg(pfn);
71 }
while((lfn = Spec.
getarg()));
81 char *lfn, rfn[MAXPATHLEN];
85 if (!(lfn = Spec.
getarg())) {Emsg(
"lfn not specified.");
return 1;}
89 do {
if (
Config.RemotePath(lfn, rfn,
sizeof(rfn))) Msg(rfn);
91 }
while((lfn = Spec.
getarg()));
106 char buff[2048], pfn[MAXPATHLEN], *lfn;
111 if (!vP) {Emsg(
"No outplace space has been configured.");
return 0;}
123 {sprintf(buff,
"%s %s", vP->
Name, tP->
text);
124 Msg(buff, (tP->val ?
" xa" : 0));
134 if (!strncmp(lfn,
"-recursive", strlen(lfn)))
136 if (!(lfn = Spec.
getarg()))
137 {Emsg(
"lfn not specified.");
return 0;}
142 do {Opt.All = VerifyAll(lfn);
143 if (!
Config.LocalPath(lfn, pfn,
sizeof(pfn))) finalRC = 4;
144 else if (
stat(pfn, &
Stat)) Emsg(errno,
"query ", pfn);
145 else if ((
Stat.st_mode & S_IFMT) != S_IFDIR)
146 {
if (Opt.All) Emsg(ENOTDIR,
"query ", lfn);
147 else QuerySpace(pfn);
150 while((sP = fP->
Get(
ec,1)))
160 }
while((lfn = Spec.
getarg()));
169 int XrdFrmAdmin::QuerySpace(
const char *Pfn,
char *Lnk,
int Lsz)
176 Msg(SName,
" ", Pfn);
194 {Emsg(
"Usage is not being tracked.");
return 0;}
198 if ((myVP.Name = Spec.
getarg())) {myVP.Next = 0; vP = &myVP;}
199 else if (!vP) {Emsg(
"No outplace space has been configured.");
return 0;}
204 Emsg(
"Space ", vP->
Name,
" not found.");
210 sprintf(buff,
"Space %s\n%20lld Used\n%20lld Staged\n"
211 "%20lld Purged\n%20lld Adjust\n%20lld Effective",
218 }
while((vP = vP->
Next));
228 static struct {
const char *qName;
char qType;} qN2T[] =
240 int i, qPrty, QList = 0;
244 if (!frmProxy && !frmProxz) ConfigProxy();
248 while((qName = Spec.
getarg()))
250 while(qN2T[i].qName && strcmp(qN2T[i].qName, qName)) i++;
251 if (qN2T[i].qName) QList |= qN2T[i].qType;
261 if (qName && strlen(qName) == 1 && *qName >=
'0' && *qName <=
'9')
262 {qPrty = *qName -
'0';
264 {Emsg(
"Invalid xfrq priority - ", qName);
return 1;}
273 else {Emsg(
"Invalid xfrq variable - ", qName);
return 1;}
275 if (qName) {Emsg(
"Too many xfrq variables starting at ",qName);
return 1;}
280 if (!frmProxy) {Emsg(
"Unable to list the xfrq.");
return 1;}
281 if (!frmProxy->List(QList, qPrty, Items, i)) Msg(
"No entries found.");
int stat(const char *path, struct stat *buf)
static int MapV2I(const char *Opc, XrdFrcRequest::Item &ICode)
static const int NoAutoDel
XrdFrmFileset * Get(int &rc, int noBase=0)
static const int Recursive
XrdOucNSWalk::NSEnt * baseFile()
static int getCname(const char *path, char *Cache, char *lbuf=0, int lbsz=0)
static long long Usage(int gent)
static const int minSNbsz
static const int haveUsage