int rsModDataObjMeta( rsComm_t *rsComm, modDataObjMeta_t *modDataObjMetaInp ) { int status; rodsServerHost_t *rodsServerHost = NULL; dataObjInfo_t *dataObjInfo; dataObjInfo = modDataObjMetaInp->dataObjInfo; status = getAndConnRcatHost( rsComm, MASTER_RCAT, dataObjInfo->objPath, &rodsServerHost ); if ( status < 0 || NULL == rodsServerHost ) { // JMC cppcheck - nullptr return( status ); } if ( rodsServerHost->localFlag == LOCAL_HOST ) { #ifdef RODS_CAT status = _rsModDataObjMeta( rsComm, modDataObjMetaInp ); #else status = SYS_NO_RCAT_SERVER_ERR; #endif } else { status = rcModDataObjMeta( rodsServerHost->conn, modDataObjMetaInp ); } if ( status >= 0 ) { status = _call_file_modified_for_modification( rsComm, modDataObjMetaInp ); } return ( status ); }
/* perform the modify command to change the comment*/ int doModComment(rcComm_t *Conn, char *objPath, int numRepl, char *theComment) { int status; modDataObjMeta_t modDataObjMetaInp; keyValPair_t regParam; dataObjInfo_t dataObjInfo; memset (®Param, 0, sizeof (regParam)); addKeyVal (®Param, DATA_COMMENTS_KW, theComment); memset(&dataObjInfo, 0, sizeof(dataObjInfo)); rstrcpy(dataObjInfo.objPath, objPath, MAX_NAME_LEN); if (numRepl > 0) { dataObjInfo.replNum = numRepl; } else { addKeyVal(®Param, ALL_KW, theComment); } modDataObjMetaInp.regParam = ®Param; modDataObjMetaInp.dataObjInfo = &dataObjInfo; status = rcModDataObjMeta(Conn, &modDataObjMetaInp); if (status) { rodsLogError(LOG_ERROR, status, "rcModDataObjMeta failure"); } return(status); }
int rsModDataObjMeta (rsComm_t *rsComm, modDataObjMeta_t *modDataObjMetaInp) { int status; rodsServerHost_t *rodsServerHost = NULL; dataObjInfo_t *dataObjInfo; keyValPair_t *regParam; regParam = modDataObjMetaInp->regParam; dataObjInfo = modDataObjMetaInp->dataObjInfo; status = getAndConnRcatHost (rsComm, MASTER_RCAT, dataObjInfo->objPath, &rodsServerHost); if (status < 0) { return(status); } if (rodsServerHost->localFlag == LOCAL_HOST) { #ifdef RODS_CAT status = _rsModDataObjMeta (rsComm, modDataObjMetaInp); #else status = SYS_NO_RCAT_SERVER_ERR; #endif } else { status = rcModDataObjMeta (rodsServerHost->conn, modDataObjMetaInp); if (getIrodsErrno (status) == SYS_HEADER_READ_LEN_ERR || getIrodsErrno (status) == SYS_HEADER_WRITE_LEN_ERR) { /* this connection may be broken. try again */ int status1 = svrToSvrReConnect (rsComm, rodsServerHost); if (status1 >= 0) { status = rcModDataObjMeta (rodsServerHost->conn, modDataObjMetaInp); } } } return (status); }
/* perform the modify command to change the data_type*/ int doModDatatype(rcComm_t *Conn, char *objPath, char *dataType) { int status; modDataObjMeta_t modDataObjMetaInp; keyValPair_t regParam; dataObjInfo_t dataObjInfo; memset (®Param, 0, sizeof (regParam)); addKeyVal (®Param, DATA_TYPE_KW, dataType); memset(&dataObjInfo, 0, sizeof(dataObjInfo)); rstrcpy(dataObjInfo.objPath, objPath, MAX_NAME_LEN); modDataObjMetaInp.regParam = ®Param; modDataObjMetaInp.dataObjInfo = &dataObjInfo; status = rcModDataObjMeta(Conn, &modDataObjMetaInp); if (status) { rodsLogError(LOG_ERROR, status, "rcModDataObjMeta failure"); } return(status); }
int irodsChmod (const char *path, mode_t mode) { int status; modDataObjMeta_t modDataObjMetaInp; keyValPair_t regParam; dataObjInfo_t dataObjInfo; char dataMode[SHORT_STR_LEN]; pathCache_t *tmpPathCache; iFuseConn_t *iFuseConn = NULL; rodsLog (LOG_DEBUG, "irodsChmod: %s", path); matchAndLockPathCache((char *) path, &tmpPathCache); if (tmpPathCache->fileCache != NULL) { LOCK_STRUCT(*tmpPathCache->fileCache); if(tmpPathCache->fileCache->state == HAVE_NEWLY_CREATED_CACHE) { /* has not actually been created yet */ tmpPathCache->fileCache->mode = mode; UNLOCK_STRUCT(*tmpPathCache->fileCache); UNLOCK_STRUCT(*tmpPathCache); return (0); } UNLOCK_STRUCT(*tmpPathCache->fileCache); } UNLOCK_STRUCT(*tmpPathCache); if(tmpPathCache->stbuf.st_nlink != 1) { rodsLog (LOG_NOTICE, "irodsChmod: modification of the mode of non file object is currently not supported", path); return 0; } memset (®Param, 0, sizeof (regParam)); snprintf (dataMode, SHORT_STR_LEN, "%d", mode); addKeyVal (®Param, DATA_MODE_KW, dataMode); addKeyVal (®Param, ALL_KW, ""); memset(&dataObjInfo, 0, sizeof(dataObjInfo)); status = parseRodsPathStr ((char *) (path + 1) , &MyRodsEnv, dataObjInfo.objPath); if (status < 0) { rodsLogError (LOG_ERROR, status, "irodsChmod: parseRodsPathStr of %s error", path); /* use ENOTDIR for this type of error */ return -ENOTDIR; } modDataObjMetaInp.regParam = ®Param; modDataObjMetaInp.dataObjInfo = &dataObjInfo; getAndUseIFuseConn (&iFuseConn, &MyRodsEnv); RECONNECT_IF_NECESSARY(status, iFuseConn, rcModDataObjMeta(iFuseConn->conn, &modDataObjMetaInp)); if (status >= 0) { #ifdef CACHE_FUSE_PATH pathCache_t *tmpPathCache; if (matchAndLockPathCache ((char *) path, &tmpPathCache) == 1) { tmpPathCache->stbuf.st_mode &= 0xfffffe00; tmpPathCache->stbuf.st_mode |= (mode & 0777); UNLOCK_STRUCT(*tmpPathCache); } #endif status = 0; } else { rodsLogError(LOG_ERROR, status, "irodsChmod: rcModDataObjMeta failure"); status = -ENOENT; } unuseIFuseConn (iFuseConn); clearKeyVal (®Param); return(status); }