36 #include <sys/types.h>
46 #define TS_Xeq(x,m) if (!strcmp(x,var)) return m(Config, Eroute);
51 Eroute.
Say(
"++++++ OssCsi plugin initialization started.");
53 std::stringstream ss(parms ? parms :
"");
59 const auto idx = item.find(
'=');
60 if (idx != std::string::npos)
62 value = item.substr(idx+1, std::string::npos);
63 item.erase(idx, std::string::npos);
67 fillFileHole_ =
false;
69 else if (item ==
"space" && !value.empty())
71 xrdtSpaceName_ = value;
73 else if (item ==
"nomissing")
75 allowMissingTags_ =
false;
77 else if (item ==
"prefix")
81 else if (item ==
"nopgextend")
83 disablePgExtend_ =
true;
85 else if (item ==
"noloosewrites")
87 disableLooseWrite_ =
true;
91 if (NoGo)
return NoGo;
95 if (readConfig(Eroute, config_fn))
return 1;
97 Eroute.
Say(
" compute file holes : ", fillFileHole_ ?
"yes" :
"no");
98 Eroute.
Say(
" space name : ", xrdtSpaceName_.c_str());
99 Eroute.
Say(
" allow files without CRCs: ", allowMissingTags_ ?
"yes" :
"no");
100 Eroute.
Say(
" pgWrite can extend : ", disablePgExtend_ ?
"no" :
"yes");
101 Eroute.
Say(
" loose writes : ", disableLooseWrite_ ?
"no" :
"yes");
102 Eroute.
Say(
" trace level : ", std::to_string((
long long int)
OssCsiTrace.
What).c_str());
105 Eroute.
Say(
"++++++ OssCsi plugin initialization completed.");
111 int XrdOssCsiConfig::readConfig(
XrdSysError &Eroute,
const char *ConfigFN)
118 if( !ConfigFN || !*ConfigFN)
120 Eroute.
Say(
"Config warning: config file not specified; defaults assumed.");
124 if ( (cfgFD =
open(ConfigFN, O_RDONLY, 0)) < 0)
126 Eroute.
Emsg(
"Config", errno,
"open config file", ConfigFN);
131 static const char *cvec[] = {
"*** osscsi plugin config:", 0 };
134 while((var =
Config.GetMyFirstWord()))
136 if (!strncmp(var,
"csi.", 4))
138 if (ConfigXeq(var+4,
Config, Eroute))
145 if ((retc =
Config.LastError()))
146 NoGo = Eroute.
Emsg(
"Config", retc,
"read config file", ConfigFN);
162 static struct traceopts {
const char *opname;
int opval;} tropts[] =
169 int i, neg, trval = 0, numopts =
sizeof(tropts)/
sizeof(
struct traceopts);
171 if (!(val =
Config.GetWord()))
172 {Eroute.
Emsg(
"Config",
"trace option not specified");
return 1;}
174 {
if (!strcmp(val,
"off")) trval = 0;
175 else {
if ((neg = (val[0] ==
'-' && val[1]))) val++;
176 for (i = 0; i < numopts; i++)
177 {
if (!strcmp(val, tropts[i].opname))
178 {
if (neg) trval &= ~tropts[i].opval;
179 else trval |= tropts[i].opval;
184 Eroute.
Say(
"Config warning: ignoring invalid trace option '",val,
"'.");
int open(const char *path, int oflag,...)
void getline(uchar *buff, int blen)
int SetPrefix(XrdSysError &Eroute, const std::string &v)
int Init(XrdSysError &, const char *, const char *, XrdOucEnv *)
int Emsg(const char *esfx, int ecode, const char *text1, const char *text2=0)
void Say(const char *text1, const char *text2=0, const char *txt3=0, const char *text4=0, const char *text5=0, const char *txt6=0)