00001 #ifndef __XRDOUCUTILS_HH__
00002 #define __XRDOUCUTILS_HH__
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 #include <sys/types.h>
00034 #include <sys/stat.h>
00035
00036 class XrdSysError;
00037 class XrdOucStream;
00038
00039 class XrdOucUtils
00040 {
00041 public:
00042
00043 static const mode_t pathMode = S_IRWXU|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH;
00044
00045 static bool endsWith(const char *text, const char *ending, int endlen);
00046
00047 static char *eText(int rc, char *eBuff, int eBlen, int AsIs=0);
00048
00049 static int doIf(XrdSysError *eDest, XrdOucStream &Config,
00050 const char *what, const char *hname,
00051 const char *nname, const char *pname);
00052
00053 static int fmtBytes(long long val, char *buff, int bsz);
00054
00055 static char *genPath(const char *path, const char *inst, const char *psfx=0);
00056
00057 static int genPath(char *buff, int blen, const char *path, const char *psfx=0);
00058
00059 static int GroupName(gid_t gID, char *gName, int gNsz);
00060
00061 static char *Ident(long long &mySID, char *iBuff, int iBlen,
00062 const char *iHost, const char *iProg, const char *iName,
00063 int Port);
00064
00065 static const char *InstName(int TranOpt=0);
00066
00067 static const char *InstName(const char *name, int Fillit=1);
00068
00069 static int is1of(char *val, const char **clist);
00070
00071 static int isFWD(const char *path, int *port=0, char *hBuff=0, int hBLen=0,
00072 bool pTrim=false);
00073
00074 static int Log2(unsigned long long n);
00075
00076 static int Log10(unsigned long long n);
00077
00078 static void makeHome(XrdSysError &eDest, const char *inst);
00079
00080 static bool makeHome(XrdSysError &eDest, const char *inst,
00081 const char *path, mode_t mode);
00082
00083 static int makePath(char *path, mode_t mode);
00084
00085 static char *parseHome(XrdSysError &eDest, XrdOucStream &Config, int &mode);
00086
00087 static int ReLink(const char *path, const char *target, mode_t mode=0);
00088
00089 static void Sanitize(char *instr, char subc='_');
00090
00091 static char *subLogfn(XrdSysError &eDest, const char *inst, char *logfn);
00092
00093 static void toLower(char *str);
00094
00095 static int Token(const char **str, char delim, char *buff, int bsz);
00096
00097 static void Undercover(XrdSysError &eDest, int noLog, int *pipeFD = 0);
00098
00099 static int UserName(uid_t uID, char *uName, int uNsz);
00100
00101 static bool PidFile(XrdSysError &eDest, const char *path);
00102
00103 XrdOucUtils() {}
00104 ~XrdOucUtils() {}
00105 };
00106 #endif