当前位置: 首页>>代码示例>>C++>>正文


C++ rsGenQuery函数代码示例

本文整理汇总了C++中rsGenQuery函数的典型用法代码示例。如果您正苦于以下问题:C++ rsGenQuery函数的具体用法?C++ rsGenQuery怎么用?C++ rsGenQuery使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。


在下文中一共展示了rsGenQuery函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: isColl

int
isColl( rsComm_t *rsComm, char *objName, rodsLong_t *collId ) {
    genQueryInp_t genQueryInp;
    genQueryOut_t *genQueryOut = NULL;
    char tmpStr[MAX_NAME_LEN];
    int status;

    memset( &genQueryInp, 0, sizeof( genQueryInp_t ) );
    snprintf( tmpStr, MAX_NAME_LEN, "='%s'", objName );
    addInxVal( &genQueryInp.sqlCondInp, COL_COLL_NAME, tmpStr );
    addInxIval( &genQueryInp.selectInp, COL_COLL_ID, 1 );
    genQueryInp.maxRows = 2;
    status =  rsGenQuery( rsComm, &genQueryInp, &genQueryOut );
    if ( status >= 0 ) {
        sqlResult_t *collIdRes;

        if ( ( collIdRes = getSqlResultByInx( genQueryOut, COL_COLL_ID ) ) ==
                NULL ) {
            rodsLog( LOG_ERROR,
                     "isColl: getSqlResultByInx for COL_D_DATA_ID failed" );
            return UNMATCHED_KEY_OR_INDEX;
        }

        if ( collId != NULL ) {
            *collId = strtoll( collIdRes->value, 0, 0 );
        }
        freeGenQueryOut( &genQueryOut );
    }

    clearGenQueryInp( &genQueryInp );
    return status;
}
开发者ID:bpow,项目名称:irods,代码行数:32,代码来源:objMetaOpr.cpp

示例2: checkPermitForDataObject

int
checkPermitForDataObject( rsComm_t *rsComm, char *objName, int userId, int operId ) {
    genQueryInp_t genQueryInp;
    genQueryOut_t *genQueryOut = NULL;
    char t1[MAX_NAME_LEN]; // JMC cppcheck - snprintf out of bounds
    char t11[MAX_NAME_LEN]; // JMC cppcheck - snprintf out of bounds
    char t2[MAX_NAME_LEN]; // JMC cppcheck - snprintf out of bounds
    char t3[MAX_NAME_LEN]; // JMC cppcheck - snprintf out of bounds
    char logicalEndName[MAX_NAME_LEN];
    char logicalParentDirName[MAX_NAME_LEN];
    int status;

    splitPathByKey( objName, logicalParentDirName, MAX_NAME_LEN, logicalEndName, MAX_NAME_LEN, '/' );
    snprintf( t1, MAX_NAME_LEN, " = '%s'", logicalEndName );
    snprintf( t11, MAX_NAME_LEN, " = '%s'", logicalParentDirName );
    snprintf( t2, MAX_NAME_LEN, " = '%i'", userId );
    snprintf( t3, MAX_NAME_LEN, " >= '%i' ", operId );

    memset( &genQueryInp, 0, sizeof( genQueryInp_t ) );
    addInxIval( &genQueryInp.selectInp, COL_D_DATA_ID, 1 );
    addInxVal( &genQueryInp.sqlCondInp, COL_DATA_NAME, t1 );
    addInxVal( &genQueryInp.sqlCondInp, COL_COLL_NAME, t11 );
    addInxVal( &genQueryInp.sqlCondInp, COL_DATA_ACCESS_USER_ID, t2 );
    addInxVal( &genQueryInp.sqlCondInp, COL_DATA_ACCESS_TYPE, t3 );
    genQueryInp.maxRows = 2;
    status = rsGenQuery( rsComm, &genQueryInp, &genQueryOut );
    freeGenQueryOut( &genQueryOut );
    clearGenQueryInp( &genQueryInp );
    if ( status >= 0 ) {
        return 1;
    }
    else {
        return 0;
    }
}
开发者ID:QuarkDoe,项目名称:irods,代码行数:35,代码来源:objMetaOpr.cpp

示例3: msiExecGenQuery

/**
 * \fn msiExecGenQuery(msParam_t* genQueryInParam, msParam_t* genQueryOutParam, ruleExecInfo_t *rei)
 *
 * \brief   This function executes a given general query structure and returns results
 *
 * \module core
 *
 * \since pre-2.1
 *
 * \author  Arcot Rajasekar
 * \date    2008
 *
 * \note Takes a SQL-like iRODS query (no FROM clause) and returns a table structure. Use #msiGetMoreRows to get all rows.
 *
 * \usage See clients/icommands/test/rules3.0/
 *
 * \param[in] genQueryInParam - a msParam of type GenQueryInp_MS_T
 * \param[out] genQueryOutParam - a msParam of type GenQueryOut_MS_T
 * \param[in,out] rei - The RuleExecInfo structure that is automatically
 *    handled by the rule engine. The user does not include rei as a
 *    parameter in the rule invocation.
 *
 * \DolVarDependence none
 * \DolVarModified none
 * \iCatAttrDependence none
 * \iCatAttrModified none
 * \sideeffect none
 *
 * \return integer
 * \retval 0 on success
 * \pre none
 * \post none
 * \sa msiGetMoreRows and msiExecStrCondQuery
**/
int msiExecGenQuery( msParam_t* genQueryInParam, msParam_t* genQueryOutParam, ruleExecInfo_t *rei ) {
    genQueryInp_t *genQueryInp;
    int i;
    genQueryOut_t *genQueryOut = NULL;


    genQueryInp = ( genQueryInp_t* )genQueryInParam->inOutStruct;

    i = rsGenQuery( rei->rsComm, genQueryInp, &genQueryOut );
    if ( i < 0 ) {
        if ( i == CAT_NO_ROWS_FOUND ) {
            genQueryOutParam->type = strdup( GenQueryOut_MS_T );
            genQueryOut = ( genQueryOut_t * ) malloc( sizeof( genQueryOut_t ) );
            memset( genQueryOut, 0, sizeof( genQueryOut_t ) );
            genQueryOutParam->inOutStruct = genQueryOut;
            return( 0 );
        }
        else {
            return( i );
        }
    }
    genQueryOutParam->type = strdup( GenQueryOut_MS_T );
    genQueryOutParam->inOutStruct = genQueryOut;
    return( 0 );
}
开发者ID:SyBernot,项目名称:irods,代码行数:59,代码来源:genQueryMS.cpp

示例4: getReInfoById

int
getReInfoById( rsComm_t *rsComm, char *ruleExecId, genQueryOut_t **genQueryOut ) {
    genQueryInp_t genQueryInp;
    char tmpStr[NAME_LEN];
    int status;

    memset( &genQueryInp, 0, sizeof( genQueryInp_t ) );

    addInxIval( &genQueryInp.selectInp, COL_RULE_EXEC_ID, 1 );
    addInxIval( &genQueryInp.selectInp, COL_RULE_EXEC_NAME, 1 );
    addInxIval( &genQueryInp.selectInp, COL_RULE_EXEC_REI_FILE_PATH, 1 );
    addInxIval( &genQueryInp.selectInp, COL_RULE_EXEC_USER_NAME, 1 );
    addInxIval( &genQueryInp.selectInp, COL_RULE_EXEC_ADDRESS, 1 );
    addInxIval( &genQueryInp.selectInp, COL_RULE_EXEC_TIME, 1 );
    addInxIval( &genQueryInp.selectInp, COL_RULE_EXEC_FREQUENCY, 1 );
    addInxIval( &genQueryInp.selectInp, COL_RULE_EXEC_PRIORITY, 1 );
    addInxIval( &genQueryInp.selectInp, COL_RULE_EXEC_ESTIMATED_EXE_TIME, 1 );
    addInxIval( &genQueryInp.selectInp, COL_RULE_EXEC_NOTIFICATION_ADDR, 1 );
    addInxIval( &genQueryInp.selectInp, COL_RULE_EXEC_LAST_EXE_TIME, 1 );
    addInxIval( &genQueryInp.selectInp, COL_RULE_EXEC_STATUS, 1 );

    snprintf( tmpStr, NAME_LEN, "='%s'", ruleExecId );
    addInxVal( &genQueryInp.sqlCondInp, COL_RULE_EXEC_ID, tmpStr );

    genQueryInp.maxRows = MAX_SQL_ROWS;

    status =  rsGenQuery( rsComm, &genQueryInp, genQueryOut );

    clearGenQueryInp( &genQueryInp );

    return status;
}
开发者ID:irods,项目名称:irods,代码行数:32,代码来源:rsRuleExecDel.cpp

示例5: getQuotaByResc

int
getQuotaByResc( rsComm_t *rsComm, char *userName, char *rescName,
                genQueryOut_t **genQueryOut ) {
    int status;
    genQueryInp_t genQueryInp;
    char condition1[MAX_NAME_LEN];
    char condition2[MAX_NAME_LEN];

    if ( genQueryOut == NULL ) {
        return USER__NULL_INPUT_ERR;
    }

    *genQueryOut = NULL;
    memset( &genQueryInp, 0, sizeof( genQueryInp ) );

    genQueryInp.options = QUOTA_QUERY;

    snprintf( condition1, MAX_NAME_LEN, "%s",
              userName );
    addInxVal( &genQueryInp.sqlCondInp, COL_USER_NAME, condition1 );

    if ( rescName != NULL && strlen( rescName ) > 0 ) {
        snprintf( condition2, MAX_NAME_LEN, "%s",
                  rescName );
        addInxVal( &genQueryInp.sqlCondInp, COL_R_RESC_NAME, condition2 );
    }

    genQueryInp.maxRows = MAX_SQL_ROWS;

    status = rsGenQuery( rsComm, &genQueryInp, genQueryOut );

    clearGenQueryInp( &genQueryInp );

    return status;
}
开发者ID:bpow,项目名称:irods,代码行数:35,代码来源:rsGetRescQuota.cpp

示例6: getTokenId

int
getTokenId(rsComm_t *rsComm, char *tokenNameSpace, char *tokenName)
{

  genQueryInp_t genQueryInp;
  genQueryOut_t *genQueryOut = NULL;
  char tmpStr[MAX_NAME_LEN];
  char tmpStr2[MAX_NAME_LEN];
  int status;
  
  memset (&genQueryInp, 0, sizeof (genQueryInp_t));
  snprintf (tmpStr, NAME_LEN, "='%s'", tokenNameSpace);
  snprintf (tmpStr2, NAME_LEN, "='%s'", tokenName);
  addInxVal (&genQueryInp.sqlCondInp, COL_TOKEN_NAMESPACE, tmpStr);
  addInxVal (&genQueryInp.sqlCondInp, COL_TOKEN_NAME, tmpStr2);
  addInxIval (&genQueryInp.selectInp, COL_TOKEN_ID, 1);
  genQueryInp.maxRows = 2;
  status =  rsGenQuery (rsComm, &genQueryInp, &genQueryOut);
  clearGenQueryInp (&genQueryInp);
  if (status >= 0) {
    sqlResult_t *tokenIdRes;

    if ((tokenIdRes = getSqlResultByInx (genQueryOut, COL_TOKEN_ID)) ==
	NULL) {
      rodsLog (LOG_ERROR,
	       "getTokenId: getSqlResultByInx for COL_TOKEN_ID failed");
      freeGenQueryOut (&genQueryOut);
      return (UNMATCHED_KEY_OR_INDEX);
    }
    status = atoi(tokenIdRes->value);
    freeGenQueryOut (&genQueryOut);
  }
  return(status);
}
开发者ID:DICE-UNC,项目名称:iRODS-FUSE-Mod,代码行数:34,代码来源:objMetaOpr.c

示例7: readICatUserInfo

int readICatUserInfo( char *userName, char *attr, char userInfo[MAX_NAME_LEN], rsComm_t *rsComm ) {
    int status;
    genQueryInp_t genQueryInp;
    genQueryOut_t *genQueryOut = NULL;
    char condstr[MAX_NAME_LEN];
    memset( &genQueryInp, 0, sizeof( genQueryInp ) );
    genQueryInp.maxRows = MAX_SQL_ROWS;

    snprintf( condstr, MAX_NAME_LEN, "= '%s'", userName );
    addInxVal( &genQueryInp.sqlCondInp, COL_USER_NAME, condstr );
    snprintf( condstr, MAX_NAME_LEN, "= '%s'", attr );
    addInxVal( &genQueryInp.sqlCondInp, COL_META_USER_ATTR_NAME, condstr );

    addInxIval( &genQueryInp.selectInp, COL_META_USER_ATTR_VALUE, 1 );

    status = rsGenQuery( rsComm, &genQueryInp, &genQueryOut );
    userInfo[0] = '\0';
    if ( status >= 0 && genQueryOut->rowCnt > 0 ) {
        if ( sqlResult_t *r = getSqlResultByInx( genQueryOut, COL_META_USER_ATTR_VALUE ) ) {
            rstrcpy( userInfo, &r->value[0], MAX_NAME_LEN );
        }
        genQueryInp.continueInx =  genQueryOut->continueInx;
    }
    clearGenQueryInp( &genQueryInp );
    freeGenQueryOut( &genQueryOut );
    return status;

}
开发者ID:bpow,项目名称:irods,代码行数:28,代码来源:configuration.cpp

示例8: getUserId

int
getUserId( rsComm_t *rsComm, char *userName, char *zoneName ) {

    genQueryInp_t genQueryInp;
    genQueryOut_t *genQueryOut = NULL;
    char tmpStr[MAX_NAME_LEN];
    char tmpStr2[MAX_NAME_LEN];
    int status;

    memset( &genQueryInp, 0, sizeof( genQueryInp_t ) );
    snprintf( tmpStr, NAME_LEN, "='%s'", userName );
    snprintf( tmpStr2, NAME_LEN, "='%s'", zoneName );
    addInxVal( &genQueryInp.sqlCondInp, COL_USER_NAME, tmpStr );
    addInxVal( &genQueryInp.sqlCondInp, COL_USER_ZONE, tmpStr2 );
    addInxIval( &genQueryInp.selectInp, COL_USER_ID, 1 );
    genQueryInp.maxRows = 2;
    status =  rsGenQuery( rsComm, &genQueryInp, &genQueryOut );
    clearGenQueryInp( &genQueryInp );
    if ( status >= 0 ) {
        sqlResult_t *userIdRes;

        if ( ( userIdRes = getSqlResultByInx( genQueryOut, COL_USER_ID ) ) ==
                NULL ) {
            rodsLog( LOG_ERROR,
                     "getUserId: getSqlResultByInx for COL_USER_ID failed" );
            freeGenQueryOut( &genQueryOut );
            return UNMATCHED_KEY_OR_INDEX;
        }
        status = atoi( userIdRes->value );
        freeGenQueryOut( &genQueryOut );
    }
    return status;
}
开发者ID:bpow,项目名称:irods,代码行数:33,代码来源:objMetaOpr.cpp

示例9: checkPermitForResource

int
checkPermitForResource( rsComm_t *rsComm, char *objName, int userId, int operId ) {
    genQueryInp_t genQueryInp;
    genQueryOut_t *genQueryOut = NULL;
    char t1[MAX_NAME_LEN]; // JMC cppcheck - snprintf out of bounds
    char t2[MAX_NAME_LEN]; // JMC cppcheck - snprintf out of bounds
    char t4[MAX_NAME_LEN]; // JMC cppcheck - snprintf out of bounds
    int status;

    snprintf( t1, MAX_NAME_LEN, " = '%s'", objName );
    snprintf( t2, MAX_NAME_LEN, " = '%i'", userId );
    snprintf( t4, MAX_NAME_LEN, " >= '%i' ", operId );

    memset( &genQueryInp, 0, sizeof( genQueryInp_t ) );
    addInxIval( &genQueryInp.selectInp, COL_R_RESC_ID, 1 );
    addInxVal( &genQueryInp.sqlCondInp, COL_R_RESC_NAME, t1 );
    addInxVal( &genQueryInp.sqlCondInp, COL_RESC_ACCESS_USER_ID, t2 );
    addInxVal( &genQueryInp.sqlCondInp, COL_RESC_ACCESS_TYPE, t4 );
    genQueryInp.maxRows = 2;
    status =  rsGenQuery( rsComm, &genQueryInp, &genQueryOut );
    clearGenQueryInp( &genQueryInp );
    if ( status >= 0 ) {
        freeGenQueryOut( &genQueryOut );
        return 1;
    }
    else {
        return 0;
    }
}
开发者ID:bpow,项目名称:irods,代码行数:29,代码来源:objMetaOpr.cpp

示例10: get_resource_path

static int get_resource_path( rsComm_t *conn, char *rescName, char *rescPath ) {
    genQueryInp_t genQueryInp;
    int i1a[10];
    int i1b[10];
    int i2a[10];
    char *condVal[2];
    char v1[200];
    genQueryOut_t *genQueryOut = NULL;
    sqlResult_t *vaultPathSTruct;
    char *vaultPath;
    int t;

    memset( &genQueryInp, 0, sizeof( genQueryInp_t ) );

    i1a[0] = COL_R_VAULT_PATH;
    i1b[0] = 0;
    genQueryInp.selectInp.inx = i1a;
    genQueryInp.selectInp.value = i1b;
    genQueryInp.selectInp.len = 1;

    i2a[0] = COL_R_RESC_NAME;
    genQueryInp.sqlCondInp.inx = i2a;
    sprintf( v1, "='%s'", rescName );
    condVal[0] = v1;
    genQueryInp.sqlCondInp.value = condVal;
    genQueryInp.sqlCondInp.len = 1;

    genQueryInp.maxRows = 2;
    genQueryInp.continueInx = 0;
    t = rsGenQuery( conn, &genQueryInp, &genQueryOut );
    if ( NULL == genQueryOut ) { // JMC cppecheck - nullptr
        rodsLog( LOG_ERROR, "get_resource_path :: genQueryOut is NULL" );
        return 0;
    }

    if ( t < 0 ) {
        if ( t == CAT_NO_ROWS_FOUND ) { /* no data is found */
            return 0;
        }

        return( t );
    }

    if ( genQueryOut->rowCnt < 0 ) {
        return -1;
    }

    vaultPathSTruct = getSqlResultByInx( genQueryOut, COL_R_VAULT_PATH );
    vaultPath = &vaultPathSTruct->value[0];
    strcpy( rescPath, vaultPath );

    freeGenQueryOut( &genQueryOut );

    return 0;
}
开发者ID:leesab,项目名称:irods,代码行数:55,代码来源:reAutoReplicateService.cpp

示例11: getNumSubfilesInBunfileObj

// =-=-=-=-=-=-=-
// JMC - backport 4552
int
getNumSubfilesInBunfileObj( rsComm_t *rsComm, char *objPath ) {
    int status;
    genQueryOut_t *genQueryOut = NULL;
    genQueryInp_t genQueryInp;
    int totalRowCount;
    char condStr[MAX_NAME_LEN];

    bzero( &genQueryInp, sizeof( genQueryInp ) );
    genQueryInp.maxRows = 1;
    genQueryInp.options = RETURN_TOTAL_ROW_COUNT;

    snprintf( condStr, MAX_NAME_LEN, "='%s'", objPath );
    addInxVal( &genQueryInp.sqlCondInp, COL_D_DATA_PATH, condStr );
    snprintf( condStr, MAX_NAME_LEN, "='%s'", BUNDLE_RESC_CLASS );
    addInxVal( &genQueryInp.sqlCondInp, COL_R_CLASS_NAME, condStr );
    addKeyVal( &genQueryInp.condInput, ZONE_KW, objPath );

    addInxIval( &genQueryInp.selectInp, COL_COLL_NAME, 1 );
    addInxIval( &genQueryInp.selectInp, COL_DATA_NAME, 1 );
    addInxIval( &genQueryInp.selectInp, COL_DATA_SIZE, 1 );

    status = rsGenQuery( rsComm, &genQueryInp, &genQueryOut );
    if ( genQueryOut == NULL || status < 0 ) {
        freeGenQueryOut( &genQueryOut );
        clearGenQueryInp( &genQueryInp );
        if ( status == CAT_NO_ROWS_FOUND ) {
            return 0;
        }
        else {
            return status;
        }
    }
    totalRowCount = genQueryOut->totalRowCount;
    freeGenQueryOut( &genQueryOut );
    /* clear result */
    genQueryInp.maxRows = 0;
    rsGenQuery( rsComm, &genQueryInp, &genQueryOut );
    clearGenQueryInp( &genQueryInp );

    return totalRowCount;
}
开发者ID:QuarkDoe,项目名称:irods,代码行数:44,代码来源:objMetaOpr.cpp

示例12: checkDupReplica

/* checkDupReplica - Check if a given object with a given rescName
 * and physical path already exist. If it does, returns the replNum.
 * JMC - backport 4497 */
int
checkDupReplica( rsComm_t *rsComm, rodsLong_t dataId, char *rescName,
                 char *filePath ) {
    genQueryInp_t genQueryInp;
    genQueryOut_t *genQueryOut = NULL;
    char tmpStr[MAX_NAME_LEN];
    int status;

    if ( rsComm == NULL || rescName == NULL || filePath == NULL ) {
        return USER__NULL_INPUT_ERR;
    }

    bzero( &genQueryInp, sizeof( genQueryInp_t ) );

    rodsLong_t resc_id;
    irods::error ret = resc_mgr.hier_to_leaf_id(rescName,resc_id);
    if(!ret.ok()) {
        irods::log(PASS(ret));
        return ret.code();
    }

    std::string resc_id_str = boost::lexical_cast<std::string>(resc_id);

    snprintf( tmpStr, MAX_NAME_LEN, "='%s'", resc_id_str.c_str() );
    addInxVal( &genQueryInp.sqlCondInp, COL_D_RESC_ID, tmpStr );
    snprintf( tmpStr, MAX_NAME_LEN, "='%s'", filePath );
    addInxVal( &genQueryInp.sqlCondInp, COL_D_DATA_PATH, tmpStr );
    snprintf( tmpStr, MAX_NAME_LEN, "='%lld'", dataId );
    addInxVal( &genQueryInp.sqlCondInp, COL_D_DATA_ID, tmpStr );

    addInxIval( &genQueryInp.selectInp, COL_DATA_REPL_NUM, 1 );
    genQueryInp.maxRows = 2;
    status = rsGenQuery( rsComm, &genQueryInp, &genQueryOut );
    clearGenQueryInp( &genQueryInp );
    if ( status >= 0 ) {
        int intReplNum;
        sqlResult_t *replNum;
        if ( ( replNum = getSqlResultByInx( genQueryOut, COL_DATA_REPL_NUM ) ) ==
                NULL ) {
            freeGenQueryOut( &genQueryOut );
            rodsLog( LOG_ERROR,
                     "checkDupReplica: getSqlResultByInx COL_DATA_REPL_NUM failed" );
            return UNMATCHED_KEY_OR_INDEX;
        }
        intReplNum = atoi( replNum->value );
        freeGenQueryOut( &genQueryOut );
        return intReplNum;
    }
    else {
        freeGenQueryOut( &genQueryOut );
        return status;
    }
}
开发者ID:QuarkDoe,项目名称:irods,代码行数:56,代码来源:objMetaOpr.cpp

示例13: msiExecStrCondQuery

/**
 * \fn msiExecStrCondQuery(msParam_t* queryParam, msParam_t* genQueryOutParam, ruleExecInfo_t *rei)
 *
 * \brief   This function takes a given condition string, creates an iCAT query, executes it and returns the values
 *
 * \module core
 *
 * \since pre-2.1
 *
 *
 * \usage See clients/icommands/test/rules3.0/
 *
 * \param[in] queryParam - a msParam of type GenQueryInp_MS_T
 * \param[out] genQueryOutParam - a msParam of type GenQueryOut_MS_T
 * \param[in,out] rei - The RuleExecInfo structure that is automatically
 *    handled by the rule engine. The user does not include rei as a
 *    parameter in the rule invocation.
 *
 * \DolVarDependence none
 * \DolVarModified none
 * \iCatAttrDependence none
 * \iCatAttrModified none
 * \sideeffect none
 *
 * \return integer
 * \retval 0 on success
 * \pre none
 * \post none
 * \sa none
**/
int msiExecStrCondQuery( msParam_t* queryParam, msParam_t* genQueryOutParam, ruleExecInfo_t *rei ) {
    genQueryInp_t genQueryInp;
    int i;
    genQueryOut_t *genQueryOut = NULL;
    char *query;

    query = ( char * ) malloc( strlen( ( const char* )queryParam->inOutStruct ) + 10 + MAX_COND_LEN * 8 );

    strcpy( query, ( const char* )queryParam->inOutStruct );

    /**** Jun 27, 2007
    if (queryParam->inOutStruct == NULL) {
      query = (char *) malloc(strlen(queryParam->label) + MAX_COND_LEN);
      strcpy(query , queryParam->label);
    }
    else {
      query = (char *) malloc(strlen(queryParam->inOutStruct) + MAX_COND_LEN);
      strcpy(query , queryParam->inOutStruct);
    }
    i  = replaceVariablesAndMsParams("",query, rei->msParamArray, rei);
    if (i < 0)
      return i;
    ***/
    memset( &genQueryInp, 0, sizeof( genQueryInp_t ) );
    i = fillGenQueryInpFromStrCond( query, &genQueryInp );
    free( query );
    if ( i < 0 ) {
        return i;
    }
    genQueryInp.maxRows = MAX_SQL_ROWS;
    genQueryInp.continueInx = 0;

    i = rsGenQuery( rei->rsComm, &genQueryInp, &genQueryOut );
    if ( i < 0 ) {
        if ( i == CAT_NO_ROWS_FOUND ) {
            genQueryOutParam->type = strdup( GenQueryOut_MS_T );
            genQueryOut = ( genQueryOut_t * ) malloc( sizeof( genQueryOut_t ) );
            memset( genQueryOut, 0, sizeof( genQueryOut_t ) );
            genQueryOutParam->inOutStruct = genQueryOut;
            return 0;
        }
        else {
            return i;
        }
    }
    genQueryOutParam->type = strdup( GenQueryOut_MS_T );
    genQueryOutParam->inOutStruct = genQueryOut;
    return 0;
}
开发者ID:hurngchunlee,项目名称:irods,代码行数:79,代码来源:genQueryMS.cpp

示例14: isData

int
isData(rsComm_t *rsComm, char *objName, rodsLong_t *dataId) {
    char logicalEndName[MAX_NAME_LEN]{};
    char logicalParentDirName[MAX_NAME_LEN]{};
    auto status{splitPathByKey(objName, logicalParentDirName, MAX_NAME_LEN, logicalEndName, MAX_NAME_LEN, '/')};
    if (status < 0) {
        const auto err{ERROR(status,
                             (boost::format("splitPathByKey failed for [%s]") %
                              objName).str().c_str())};
        irods::log(err);
        return err.code();
    }

    genQueryInp_t genQueryInp{};
    genQueryOut_t *genQueryOut{};
    char tmpStr[MAX_NAME_LEN]{};
    memset(&genQueryInp, 0, sizeof(genQueryInp_t));

    snprintf(tmpStr, MAX_NAME_LEN, "='%s'", logicalEndName);
    addInxVal(&genQueryInp.sqlCondInp, COL_DATA_NAME, tmpStr);
    addInxIval(&genQueryInp.selectInp, COL_D_DATA_ID, 1);

    snprintf(tmpStr, MAX_NAME_LEN, "='%s'", logicalParentDirName);
    addInxVal(&genQueryInp.sqlCondInp, COL_COLL_NAME, tmpStr);
    addInxIval(&genQueryInp.selectInp, COL_COLL_ID, 1);
    genQueryInp.maxRows = 2;

    status = rsGenQuery(rsComm, &genQueryInp, &genQueryOut);
    if (status < 0) {
        freeGenQueryOut(&genQueryOut);
        clearGenQueryInp(&genQueryInp);
        return status;
    }

    sqlResult_t *dataIdRes{getSqlResultByInx(genQueryOut, COL_D_DATA_ID)};
    if (NULL == dataIdRes) {
        const auto err{ERROR(UNMATCHED_KEY_OR_INDEX, "getSqlResultByInx for COL_D_DATA_ID failed")};
        irods::log(err);
        return err.code();
    }
    if (NULL != dataId) {
        *dataId = strtoll(dataIdRes->value, 0, 0);
    }

    freeGenQueryOut(&genQueryOut);
    clearGenQueryInp(&genQueryInp);
    return status;
}
开发者ID:QuarkDoe,项目名称:irods,代码行数:48,代码来源:objMetaOpr.cpp

示例15: msiCheckHostAccessControl

/**
 * \fn msiCheckHostAccessControl (ruleExecInfo_t *rei)
 *
 * \brief  This microservice sets the access control policy. It checks the
 *  access control by host and user based on the the policy given in the
 *  HostAccessControl file.
 *
 * \module core
 *
 * \since pre-2.1
 *
 * \author Jean-Yves Nief
 * \date 2007-09
 *
 * \note  This microservice controls access to the iRODS service
 *  based on the information in the host based access configuration file:
 *  HOST_ACCESS_CONTROL_FILE
 *
 * \usage See clients/icommands/test/rules3.0/
 *
 * \param[in,out] rei - The RuleExecInfo structure that is automatically
 *    handled by the rule engine. The user does not include rei as a
 *    parameter in the rule invocation.
 *
 * \DolVarDependence none
 * \DolVarModified none
 * \iCatAttrDependence none
 * \iCatAttrModified none
 * \sideeffect none
 *
 * \return integer
 * \retval 0 upon success
 * \pre N/A
 * \post N/A
 * \sa N/A
 **/
int msiCheckHostAccessControl( ruleExecInfo_t *rei ) {
    char group[MAX_NAME_LEN], *hostclient, *result, *username;
    char condstr[MAX_NAME_LEN];
    int i, rc, status;
    genQueryInp_t genQueryInp;
    genQueryOut_t *genQueryOut = NULL;
    rsComm_t *rsComm;

    RE_TEST_MACRO( "    Calling msiCheckHostAccessControl" )
    /* the above line is needed for loop back testing using irule -i option */

    group[0] = '\0';
    rsComm = rei->rsComm;

    /* retrieve user name */
    username = rsComm->clientUser.userName;
    /* retrieve client IP address */
    hostclient = inet_ntoa( rsComm->remoteAddr.sin_addr );
    /* retrieve groups to which the user belong */
    memset( &genQueryInp, 0, sizeof( genQueryInp ) );
    snprintf( condstr, MAX_NAME_LEN, "= '%s'", username );
    addInxVal( &genQueryInp.sqlCondInp, COL_USER_NAME, condstr );
    addInxIval( &genQueryInp.selectInp, COL_USER_GROUP_NAME, 1 );
    genQueryInp.maxRows = MAX_SQL_ROWS;
    status =  rsGenQuery( rsComm, &genQueryInp, &genQueryOut );
    if ( status >= 0 ) {
        for ( i = 0; i < genQueryOut->rowCnt; i++ ) {
            result = genQueryOut->sqlResult[0].value;
            result += i * genQueryOut->sqlResult[0].len;
            strcat( group, result );
            strcat( group, " " );
        }
    }
    else {
        rstrcpy( group, "all", MAX_NAME_LEN );
    }
    clearGenQueryInp( &genQueryInp );
    freeGenQueryOut( &genQueryOut );

    rc = checkHostAccessControl( username, hostclient, group );
    if ( rc < 0 ) {
        rodsLog( LOG_NOTICE, "Access to user %s from host %s has been refused.\n", username, hostclient );
        rei->status = rc;
    }

    return rei->status;

}
开发者ID:dthain,项目名称:irods,代码行数:84,代码来源:reIn2p3SysRule.cpp


注:本文中的rsGenQuery函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。