00001
00002
00003
00004
00005
00006
00007
00008 #include "fileRename.h"
00009 #include "miscServerFunct.h"
00010 #include "fileOpr.h"
00011 #include "dataObjOpr.h"
00012 #include "physPath.h"
00013
00014 int
00015 rsFileRename (rsComm_t *rsComm, fileRenameInp_t *fileRenameInp)
00016 {
00017 rodsServerHost_t *rodsServerHost;
00018 int remoteFlag;
00019 int status;
00020
00021 remoteFlag = resolveHost (&fileRenameInp->addr, &rodsServerHost);
00022
00023 if (remoteFlag == LOCAL_HOST) {
00024 status = _rsFileRename (rsComm, fileRenameInp, rodsServerHost);
00025 } else if (remoteFlag == REMOTE_HOST) {
00026 status = remoteFileRename (rsComm, fileRenameInp, rodsServerHost);
00027 } else {
00028 if (remoteFlag < 0) {
00029 return (remoteFlag);
00030 } else {
00031 rodsLog (LOG_NOTICE,
00032 "rsFileRename: resolveHost returned unrecognized value %d",
00033 remoteFlag);
00034 return (SYS_UNRECOGNIZED_REMOTE_FLAG);
00035 }
00036 }
00037
00038 return (status);
00039 }
00040
00041 int
00042 remoteFileRename (rsComm_t *rsComm, fileRenameInp_t *fileRenameInp,
00043 rodsServerHost_t *rodsServerHost)
00044 {
00045 int status;
00046
00047 if (rodsServerHost == NULL) {
00048 rodsLog (LOG_NOTICE,
00049 "remoteFileRename: Invalid rodsServerHost");
00050 return SYS_INVALID_SERVER_HOST;
00051 }
00052
00053 if ((status = svrToSvrConnect (rsComm, rodsServerHost)) < 0) {
00054 return status;
00055 }
00056
00057 status = rcFileRename (rodsServerHost->conn, fileRenameInp);
00058
00059 if (status < 0) {
00060 rodsLog (LOG_NOTICE,
00061 "remoteFileRename: rcFileRename failed for %s",
00062 fileRenameInp->newFileName);
00063 }
00064
00065 return status;
00066 }
00067
00068
00069
00070
00071 int
00072 _rsFileRename (rsComm_t *rsComm, fileRenameInp_t *fileRenameInp,
00073 rodsServerHost_t *rodsServerHost)
00074 {
00075 int status;
00076
00077
00078
00079
00080
00081 mkDirForFilePath (fileRenameInp->fileType, rsComm,
00082 "/", fileRenameInp->newFileName, getDefDirMode ());
00083
00084 status = fileRename (fileRenameInp->fileType, rsComm,
00085 fileRenameInp->oldFileName, fileRenameInp->newFileName);
00086
00087 return (status);
00088 }
00089