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 int makePath(char *path, mode_t mode);
00081
00082 static int ReLink(const char *path, const char *target, mode_t mode=0);
00083
00084 static char *subLogfn(XrdSysError &eDest, const char *inst, char *logfn);
00085
00086 static void toLower(char *str);
00087
00088 static int Token(const char **str, char delim, char *buff, int bsz);
00089
00090 static void Undercover(XrdSysError &eDest, int noLog, int *pipeFD = 0);
00091
00092 static int UserName(uid_t uID, char *uName, int uNsz);
00093
00094 static bool PidFile(XrdSysError &eDest, const char *path);
00095
00096 XrdOucUtils() {}
00097 ~XrdOucUtils() {}
00098 };
00099 #endif