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);
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 bool getGID(const char *gName, gid_t &gID);
00060
00061 static bool getUID(const char *uName, uid_t &uID, gid_t *gID=0);
00062
00063 static int GidName(gid_t gID, char *gName, int gNsz, time_t keepT=0);
00064
00065 static int GroupName(gid_t gID, char *gName, int gNsz);
00066
00067 static char *Ident(long long &mySID, char *iBuff, int iBlen,
00068 const char *iHost, const char *iProg, const char *iName,
00069 int Port);
00070
00071 static const char *InstName(int TranOpt=0);
00072
00073 static const char *InstName(const char *name, int Fillit=1);
00074
00075 static int is1of(char *val, const char **clist);
00076
00077 static int isFWD(const char *path, int *port=0, char *hBuff=0, int hBLen=0,
00078 bool pTrim=false);
00079
00080 static int Log2(unsigned long long n);
00081
00082 static int Log10(unsigned long long n);
00083
00084 static void makeHome(XrdSysError &eDest, const char *inst);
00085
00086 static bool makeHome(XrdSysError &eDest, const char *inst,
00087 const char *path, mode_t mode);
00088
00089 static int makePath(char *path, mode_t mode, bool reset=false);
00090
00091 static bool parseLib(XrdSysError &eDest, XrdOucStream &Config,
00092 const char *libName, char *&path, char **libparm);
00093
00094 static char *parseHome(XrdSysError &eDest, XrdOucStream &Config, int &mode);
00095
00096 static int ReLink(const char *path, const char *target, mode_t mode=0);
00097
00098 static void Sanitize(char *instr, char subc='_');
00099
00100 static char *subLogfn(XrdSysError &eDest, const char *inst, char *logfn);
00101
00102 static void toLower(char *str);
00103
00104 static int Token(const char **str, char delim, char *buff, int bsz);
00105
00106 static void Undercover(XrdSysError &eDest, int noLog, int *pipeFD = 0);
00107
00108 static int UidName(uid_t uID, char *uName, int uNsz, time_t keepT=0);
00109
00110 static int UserName(uid_t uID, char *uName, int uNsz);
00111
00112 static
00113 const char *ValPath(const char *path, mode_t allow, bool isdir);
00114
00115 static bool PidFile(XrdSysError &eDest, const char *path);
00116
00117 XrdOucUtils() {}
00118 ~XrdOucUtils() {}
00119 };
00120 #endif