00001
00002
00003
00004
00005
00006
00007
00008 #include "fileMkdir.h"
00009 #include "miscServerFunct.h"
00010
00011
00012
00013 #include "eirods_log.h"
00014 #include "eirods_collection_object.h"
00015
00016 int
00017 rsFileMkdir (rsComm_t *rsComm, fileMkdirInp_t *fileMkdirInp)
00018 {
00019 rodsServerHost_t *rodsServerHost;
00020 int remoteFlag;
00021 int status;
00022
00023 remoteFlag = resolveHost (&fileMkdirInp->addr, &rodsServerHost);
00024 if (remoteFlag == LOCAL_HOST) {
00025 status = _rsFileMkdir (rsComm, fileMkdirInp);
00026 } else if (remoteFlag == REMOTE_HOST) {
00027 status = remoteFileMkdir (rsComm, fileMkdirInp, rodsServerHost);
00028 } else {
00029 if (remoteFlag < 0) {
00030 return (remoteFlag);
00031 } else {
00032 rodsLog (LOG_NOTICE,
00033 "rsFileMkdir: resolveHost returned unrecognized value %d",
00034 remoteFlag);
00035 return (SYS_UNRECOGNIZED_REMOTE_FLAG);
00036 }
00037 }
00038
00039
00040
00041 return (status);
00042 }
00043
00044 int
00045 remoteFileMkdir (rsComm_t *rsComm, fileMkdirInp_t *fileMkdirInp,
00046 rodsServerHost_t *rodsServerHost)
00047 {
00048 int status;
00049
00050 if (rodsServerHost == NULL) {
00051 rodsLog (LOG_NOTICE,
00052 "remoteFileMkdir: Invalid rodsServerHost");
00053 return SYS_INVALID_SERVER_HOST;
00054 }
00055
00056 if ((status = svrToSvrConnect (rsComm, rodsServerHost)) < 0) {
00057 return status;
00058 }
00059
00060
00061 status = rcFileMkdir (rodsServerHost->conn, fileMkdirInp);
00062
00063 if (status < 0) {
00064 rodsLog (LOG_NOTICE,
00065 "remoteFileOpen: rcFileMkdir failed for %s",
00066 fileMkdirInp->dirName);
00067 }
00068
00069 return status;
00070 }
00071
00072
00073
00074 int _rsFileMkdir( rsComm_t *rsComm, fileMkdirInp_t *fileMkdirInp ) {
00075
00076
00077
00078 eirods::collection_object coll_obj( fileMkdirInp->dirName, fileMkdirInp->rescHier, fileMkdirInp->mode, 0 );
00079 eirods::error mkdir_err = fileMkdir( rsComm, coll_obj );
00080
00081
00082
00083 if( !mkdir_err.ok() ) {
00084 if( getErrno( mkdir_err.code() ) != EEXIST ) {
00085 std::stringstream msg;
00086 msg << "fileMkdir failed for ";
00087 msg << fileMkdirInp->dirName;
00088 msg << "]";
00089 eirods::error ret_err = PASSMSG( msg.str(), mkdir_err );
00090 eirods::log( ret_err );
00091 }
00092 }
00093
00094 return (mkdir_err.code());
00095
00096 }
00097
00098
00099