int rsRuleExecMod( rsComm_t *rsComm, ruleExecModInp_t *ruleExecModInp ) { rodsServerHost_t *rodsServerHost; int status; status = getAndConnRcatHost( rsComm, MASTER_RCAT, NULL, &rodsServerHost ); if ( status < 0 ) { return( status ); } if ( rodsServerHost->localFlag == LOCAL_HOST ) { #ifdef RODS_CAT status = _rsRuleExecMod( rsComm, ruleExecModInp ); #else status = SYS_NO_RCAT_SERVER_ERR; #endif } else { status = rcRuleExecMod( rodsServerHost->conn, ruleExecModInp ); } if ( status < 0 ) { rodsLog( LOG_NOTICE, "rsRuleExecMod: rcRuleExecMod failed" ); } return ( status ); }
int modDelayedRule( char *ruleId, char *fieldName, char *fieldValue ) { int status; ruleExecModInp_t ruleExecModInp; memset( &ruleExecModInp, 0, sizeof( ruleExecModInp ) ); /* for the time fields, convert from YYYY-MM-DD.hh:mm:ss in sec of unix time if necessary */ if ( strcmp( fieldName, "exeTime" ) == 0 || strcmp( fieldName, "estimateExeTime" ) == 0 || strcmp( fieldName, "lastExeTime" ) == 0 ) { status = checkDateFormat( fieldValue ); if ( status == DATE_FORMAT_ERR ) { printf( "Time format error: it should be sec in unix time or YYYY-MM-DD.hh:mm:ss.\n" ); return status; } } strncpy( ruleExecModInp.ruleId, ruleId, NAME_LEN ); addKeyVal( &ruleExecModInp.condInput, fieldName, fieldValue ); status = rcRuleExecMod( Conn, &ruleExecModInp ); if ( status == CAT_SUCCESS_BUT_WITH_NO_INFO ) { printf( "No rule found with id %s\n", ruleId ); return status; } if ( status < 0 ) { printError( Conn, status, "rcRuleExecMod" ); } return status; }