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