51 extern const std::string VERSION;
52 extern const std::string gUserAgent;
55 #define ENVPFX "Davix."
57 ClassImp(TDavixSystem);
59 using namespace Davix;
61 extern const char* grid_mode_opt;
62 extern const char* ca_check_opt;
63 extern const char* s3_seckey_opt;
64 extern const char* s3_acckey_opt;
68 TDavixSystem::TDavixSystem(
const char *url) :
70 d_ptr(new TDavixFileInternal(url,
"WEB"))
73 SetTitle(
"WebDAV system administration");
78 TDavixSystem::TDavixSystem() :
80 d_ptr(new TDavixFileInternal(
"",
"WEB"))
83 SetTitle(
"WebDAV system administration");
88 TDavixSystem::~TDavixSystem()
95 void TDavixSystem::FreeDirectory(
void *dirp)
97 d_ptr->davixPosix->closedir(static_cast<DAVIX_DIR *>(dirp), NULL);
98 d_ptr->removeDird(dirp);
103 const char *TDavixSystem::GetDirEntry(
void *dirp)
106 DavixError *davixErr = NULL;
107 if (((dir = d_ptr->davixPosix->readdir(static_cast<DAVIX_DIR *>(dirp), &davixErr)) == NULL)
108 && (davixErr != NULL)) {
109 Error(
"DavixReaddir",
"failed to readdir the directory: %s (%d)",
110 davixErr->getErrMsg().c_str(), davixErr->getStatus());
111 DavixError::clearError(&davixErr);
113 return (dir) ? (dir->d_name) : NULL;
118 void *TDavixSystem::OpenDirectory(
const char *dir)
120 DavixError *davixErr = NULL;
122 if ((d = d_ptr->davixPosix->opendir(d_ptr->davixParam, dir, &davixErr)) == NULL) {
123 Error(
"DavixOpendir",
"failed to opendir the directory: %s (%d)",
124 davixErr->getErrMsg().c_str(), davixErr->getStatus());
125 DavixError::clearError(&davixErr);
134 Bool_t TDavixSystem::ConsistentWith(
const char * ,
void *dirptr)
136 return (Bool_t) d_ptr->isMyDird(dirptr);
141 Int_t TDavixSystem::GetPathInfo(
const char *path, FileStat_t &buf)
145 if (!d_ptr->DavixStat(path, &st))
return 1;
148 buf.fMode = st.st_mode;
150 buf.fUid = st.st_uid;
151 buf.fGid = st.st_gid;
152 buf.fSize = st.st_size;
153 buf.fMtime = st.st_mtime;
154 buf.fIsLink = kFALSE;
162 Bool_t TDavixSystem::IsPathLocal(
const char *path)
170 Int_t TDavixSystem::Locate(
const char *path, TString &endurl)
172 DavixError *davixErr = NULL;
175 DavFile f(*d_ptr->davixContext, Uri(path));
176 if ((ret = f.getAllReplicas(d_ptr->davixParam,
179 Error(
"DavixLocate",
"failed to Locate file: %s (%d)",
180 davixErr->getErrMsg().c_str(), davixErr->getStatus());
181 DavixError::clearError(&davixErr);
184 if (vecRep.size() > 0) {
185 endurl = vecRep[0].uri.getString().c_str();
190 Info(
"DavixLocate",
"Davix Locate %s to %s", path, endurl.Data());
197 Int_t TDavixSystem::MakeDirectory(
const char *dir)
199 DavixError *davixErr = NULL;
201 if ((ret = d_ptr->davixPosix->mkdir(d_ptr->davixParam, dir, 0755, &davixErr)) < 0) {
202 Error(
"DavixMkdir",
"failed to create the directory: %s (%d)",
203 davixErr->getErrMsg().c_str(), davixErr->getStatus());
204 DavixError::clearError(&davixErr);
211 int TDavixSystem::Unlink(
const char *path)
213 DavixError *davixErr = NULL;
215 if ((ret = d_ptr->davixPosix->unlink(d_ptr->davixParam, path, &davixErr)) < 0) {
216 Error(
"DavixUnlink",
"failed to unlink the file: %s (%d)",
217 davixErr->getErrMsg().c_str(), davixErr->getStatus());
218 DavixError::clearError(&davixErr);