int lsDataObjUtilLong (rcComm_t *conn, char *srcPath, rodsEnv *myRodsEnv, rodsArguments_t *rodsArgs, genQueryInp_t *genQueryInp) { int status; genQueryOut_t *genQueryOut = NULL; char myColl[MAX_NAME_LEN], myData[MAX_NAME_LEN]; char condStr[MAX_NAME_LEN]; int queryFlags; queryFlags = setQueryFlag (rodsArgs); setQueryInpForData (queryFlags, genQueryInp); genQueryInp->maxRows = MAX_SQL_ROWS; memset (myColl, 0, MAX_NAME_LEN); memset (myData, 0, MAX_NAME_LEN); if ((status = splitPathByKey ( srcPath, myColl, myData, '/')) < 0) { rodsLogError (LOG_ERROR, status, "setQueryInpForLong: splitPathByKey for %s error, status = %d", srcPath, status); return (status); } snprintf (condStr, MAX_NAME_LEN, "='%s'", myColl); addInxVal (&genQueryInp->sqlCondInp, COL_COLL_NAME, condStr); snprintf (condStr, MAX_NAME_LEN, "='%s'", myData); addInxVal (&genQueryInp->sqlCondInp, COL_DATA_NAME, condStr); status = rcGenQuery (conn, genQueryInp, &genQueryOut); if (status < 0) { if (status == CAT_NO_ROWS_FOUND) { rodsLog (LOG_ERROR, "%s does not exist or user lacks access permission", srcPath); } else { rodsLogError (LOG_ERROR, status, "lsDataObjUtilLong: rcGenQuery error for %s", srcPath); } return (status); } printLsLong (conn, rodsArgs, genQueryOut); return (0); }
int printSpecLsLong (char *objPath, char *ownerName, char *objSize, char *modifyTime, specColl_t *specColl, rodsArguments_t *rodsArgs) { char srcElement[MAX_NAME_LEN]; collEnt_t collEnt; int queryFlags; bzero (&collEnt, sizeof (collEnt)); getLastPathElement (objPath, srcElement); collEnt.dataName = objPath; collEnt.ownerName = ownerName; collEnt.dataSize = strtoll (objSize, 0, 0); collEnt.resource = specColl->resource; collEnt.modifyTime = modifyTime; collEnt.specColl = *specColl; collEnt.objType = DATA_OBJ_T; queryFlags = setQueryFlag (rodsArgs); printDataCollEntLong (&collEnt, queryFlags); return (0); }
int main( int argc, char **argv ) { rcComm_t *conn; rodsEnv myEnv; char *optStr; rErrMsg_t errMsg; int status; rodsArguments_t rodsArgs; int flag = 0; int nativeAPI = 0; optStr = "alL"; status = parseCmdLineOpt( argc, argv, optStr, 1, &rodsArgs ); if ( status < 0 ) { printf( "parseCmdLineOpt error, status = %d.\n", status ); exit( 1 ); } if ( argc - optind <= 0 ) { rodsLog( LOG_ERROR, "no input" ); exit( 2 ); } memset( &errMsg, 0, sizeof( rErrMsg_t ) ); status = getRodsEnv( &myEnv ); if ( status < 0 ) { fprintf( stderr, "getRodsEnv error, status = %d\n", status ); exit( 1 ); } conn = rcConnect( myEnv.rodsHost, myEnv.rodsPort, myEnv.rodsUserName, myEnv.rodsZone, 1, &errMsg ); if ( conn == NULL ) { fprintf( stderr, "rcConnect error\n" ); exit( 1 ); } status = clientLogin( conn ); if ( status != 0 ) { rcDisconnect( conn ); exit( 7 ); } flag = setQueryFlag( &rodsArgs ); if ( rodsArgs.all == True ) { nativeAPI = 1; } if ( nativeAPI == 1 ) { status = printCollectionNat( conn, argv[optind], flag ); } else { status = printCollection( conn, argv[optind], flag ); } rcDisconnect( conn ); exit( 0 ); }
int printLsLong (rcComm_t *conn, rodsArguments_t *rodsArgs, genQueryOut_t *genQueryOut) { int i; sqlResult_t *dataName, *replNum, *dataSize, *rescName, *replStatus, *dataModify, *dataOwnerName, *dataId; sqlResult_t *chksumStr, *dataPath, *rescGrp, *dataType; char *tmpDataId; int queryFlags; if (genQueryOut == NULL) { return (USER__NULL_INPUT_ERR); } queryFlags = setQueryFlag (rodsArgs); if (rodsArgs->veryLongOption == True) { if ((chksumStr = getSqlResultByInx (genQueryOut, COL_D_DATA_CHECKSUM)) == NULL) { rodsLog (LOG_ERROR, "printLsLong: getSqlResultByInx for COL_D_DATA_CHECKSUM failed"); return (UNMATCHED_KEY_OR_INDEX); } if ((dataPath = getSqlResultByInx (genQueryOut, COL_D_DATA_PATH)) == NULL) { rodsLog (LOG_ERROR, "printLsLong: getSqlResultByInx for COL_D_DATA_PATH failed"); return (UNMATCHED_KEY_OR_INDEX); } if ((rescGrp = getSqlResultByInx (genQueryOut, COL_D_RESC_GROUP_NAME)) == NULL) { rodsLog (LOG_ERROR, "printLsLong: getSqlResultByInx for COL_D_RESC_GROUP_NAME failed"); return (UNMATCHED_KEY_OR_INDEX); } if ((dataType = getSqlResultByInx (genQueryOut, COL_DATA_TYPE_NAME)) == NULL) { rodsLog (LOG_ERROR, "printLsLong: getSqlResultByInx for COL_DATA_TYPE_NAME failed"); return (UNMATCHED_KEY_OR_INDEX); } } if ((dataId = getSqlResultByInx (genQueryOut, COL_D_DATA_ID)) == NULL) { rodsLog (LOG_ERROR, "printLsLong: getSqlResultByInx for COL_D_DATA_ID failed"); return (UNMATCHED_KEY_OR_INDEX); } if ((dataName = getSqlResultByInx (genQueryOut, COL_DATA_NAME)) == NULL) { rodsLog (LOG_ERROR, "printLsLong: getSqlResultByInx for COL_DATA_NAME failed"); return (UNMATCHED_KEY_OR_INDEX); } if ((replNum = getSqlResultByInx (genQueryOut, COL_DATA_REPL_NUM)) == NULL) { rodsLog (LOG_ERROR, "printLsLong: getSqlResultByInx for COL_DATA_REPL_NUM failed"); return (UNMATCHED_KEY_OR_INDEX); } if ((dataSize = getSqlResultByInx (genQueryOut, COL_DATA_SIZE)) == NULL) { rodsLog (LOG_ERROR, "printLsLong: getSqlResultByInx for COL_DATA_SIZE failed"); return (UNMATCHED_KEY_OR_INDEX); } if ((rescName = getSqlResultByInx (genQueryOut, COL_D_RESC_NAME)) == NULL) { rodsLog (LOG_ERROR, "printLsLong: getSqlResultByInx for COL_D_RESC_NAME failed"); return (UNMATCHED_KEY_OR_INDEX); } if ((replStatus = getSqlResultByInx (genQueryOut, COL_D_REPL_STATUS)) == NULL) { rodsLog (LOG_ERROR, "printLsLong: getSqlResultByInx for COL_D_REPL_STATUS failed"); return (UNMATCHED_KEY_OR_INDEX); } if ((dataModify = getSqlResultByInx (genQueryOut, COL_D_MODIFY_TIME)) == NULL) { rodsLog (LOG_ERROR, "printLsLong: getSqlResultByInx for COL_D_MODIFY_TIME failed"); return (UNMATCHED_KEY_OR_INDEX); } if ((dataOwnerName = getSqlResultByInx (genQueryOut, COL_D_OWNER_NAME)) == NULL) { rodsLog (LOG_ERROR, "printLsLong: getSqlResultByInx for COL_D_OWNER_NAME failed"); return (UNMATCHED_KEY_OR_INDEX); } for (i = 0;i < genQueryOut->rowCnt; i++) { collEnt_t collEnt; bzero (&collEnt, sizeof (collEnt)); collEnt.dataName = &dataName->value[dataName->len * i]; collEnt.replNum = atoi (&replNum->value[replNum->len * i]); collEnt.dataSize = strtoll (&dataSize->value[dataSize->len * i], 0, 0); collEnt.resource = &rescName->value[rescName->len * i]; collEnt.ownerName = &dataOwnerName->value[dataOwnerName->len * i]; collEnt.replStatus = atoi (&replStatus->value[replStatus->len * i]); collEnt.modifyTime = &dataModify->value[dataModify->len * i]; if (rodsArgs->veryLongOption == True) { collEnt.chksum = &chksumStr->value[chksumStr->len * i]; collEnt.phyPath = &dataPath->value[dataPath->len * i]; collEnt.rescGrp = &rescGrp->value[rescGrp->len * i]; collEnt.dataType = &dataType->value[dataType->len * i]; } printDataCollEntLong (&collEnt, queryFlags); if (rodsArgs->accessControl == True) { tmpDataId = &dataId->value[dataId->len * i]; printDataAcl (conn, tmpDataId); } } return (0); }
int printLsLong( rcComm_t *conn, rodsArguments_t *rodsArgs, genQueryOut_t *genQueryOut ) { int i = 0; sqlResult_t *dataName = 0, *replNum = 0, *dataSize = 0, *rescName = 0, *rescHier = 0, *replStatus = 0, *dataModify = 0, *dataOwnerName = 0, *dataId = 0; sqlResult_t *chksumStr = 0, *dataPath = 0, *dataType = 0; // JMC - backport 4636 char *tmpDataId = 0; int queryFlags = 0; if ( genQueryOut == NULL ) { return USER__NULL_INPUT_ERR; } queryFlags = setQueryFlag( rodsArgs ); if ( rodsArgs->veryLongOption == True ) { if ( ( chksumStr = getSqlResultByInx( genQueryOut, COL_D_DATA_CHECKSUM ) ) == NULL ) { rodsLog( LOG_ERROR, "printLsLong: getSqlResultByInx for COL_D_DATA_CHECKSUM failed" ); return UNMATCHED_KEY_OR_INDEX; } if ( ( dataPath = getSqlResultByInx( genQueryOut, COL_D_DATA_PATH ) ) == NULL ) { rodsLog( LOG_ERROR, "printLsLong: getSqlResultByInx for COL_D_DATA_PATH failed" ); return UNMATCHED_KEY_OR_INDEX; } if ( ( dataType = getSqlResultByInx( genQueryOut, COL_DATA_TYPE_NAME ) ) == NULL ) { // JMC - backport 4636 rodsLog( LOG_ERROR, "printLsLong: getSqlResultByInx for COL_DATA_TYPE_NAME failed" ); return UNMATCHED_KEY_OR_INDEX; } } if ( ( dataId = getSqlResultByInx( genQueryOut, COL_D_DATA_ID ) ) == NULL ) { rodsLog( LOG_ERROR, "printLsLong: getSqlResultByInx for COL_D_DATA_ID failed" ); return UNMATCHED_KEY_OR_INDEX; } if ( ( dataName = getSqlResultByInx( genQueryOut, COL_DATA_NAME ) ) == NULL ) { rodsLog( LOG_ERROR, "printLsLong: getSqlResultByInx for COL_DATA_NAME failed" ); return UNMATCHED_KEY_OR_INDEX; } if ( ( replNum = getSqlResultByInx( genQueryOut, COL_DATA_REPL_NUM ) ) == NULL ) { rodsLog( LOG_ERROR, "printLsLong: getSqlResultByInx for COL_DATA_REPL_NUM failed" ); return UNMATCHED_KEY_OR_INDEX; } if ( ( dataSize = getSqlResultByInx( genQueryOut, COL_DATA_SIZE ) ) == NULL ) { rodsLog( LOG_ERROR, "printLsLong: getSqlResultByInx for COL_DATA_SIZE failed" ); return UNMATCHED_KEY_OR_INDEX; } if ( ( rescName = getSqlResultByInx( genQueryOut, COL_D_RESC_NAME ) ) == NULL ) { rodsLog( LOG_ERROR, "printLsLong: getSqlResultByInx for COL_D_RESC_NAME failed" ); return UNMATCHED_KEY_OR_INDEX; } if ( ( rescHier = getSqlResultByInx( genQueryOut, COL_D_RESC_HIER ) ) == NULL ) { // If the index is not found then COL_D_RESC_HIER was most likely stripped // from the query input to talk to an older zone. // use resource name instead rescHier = rescName; } if ( ( replStatus = getSqlResultByInx( genQueryOut, COL_D_REPL_STATUS ) ) == NULL ) { rodsLog( LOG_ERROR, "printLsLong: getSqlResultByInx for COL_D_REPL_STATUS failed" ); return UNMATCHED_KEY_OR_INDEX; } if ( ( dataModify = getSqlResultByInx( genQueryOut, COL_D_MODIFY_TIME ) ) == NULL ) { rodsLog( LOG_ERROR, "printLsLong: getSqlResultByInx for COL_D_MODIFY_TIME failed" ); return UNMATCHED_KEY_OR_INDEX; } if ( ( dataOwnerName = getSqlResultByInx( genQueryOut, COL_D_OWNER_NAME ) ) == NULL ) { rodsLog( LOG_ERROR, "printLsLong: getSqlResultByInx for COL_D_OWNER_NAME failed" ); return UNMATCHED_KEY_OR_INDEX; } for ( i = 0; i < genQueryOut->rowCnt; i++ ) { collEnt_t collEnt; bzero( &collEnt, sizeof( collEnt ) ); collEnt.dataName = &dataName->value[dataName->len * i]; collEnt.replNum = atoi( &replNum->value[replNum->len * i] ); collEnt.dataSize = strtoll( &dataSize->value[dataSize->len * i], 0, 0 ); collEnt.resource = &rescName->value[rescName->len * i]; collEnt.resc_hier = &rescHier->value[rescHier->len * i]; collEnt.ownerName = &dataOwnerName->value[dataOwnerName->len * i]; collEnt.replStatus = atoi( &replStatus->value[replStatus->len * i] ); collEnt.modifyTime = &dataModify->value[dataModify->len * i]; if ( rodsArgs->veryLongOption == True ) { collEnt.chksum = &chksumStr->value[chksumStr->len * i]; collEnt.phyPath = &dataPath->value[dataPath->len * i]; collEnt.dataType = &dataType->value[dataType->len * i]; // JMC - backport 4636 } printDataCollEntLong( &collEnt, queryFlags ); if ( rodsArgs->accessControl == True ) { tmpDataId = &dataId->value[dataId->len * i]; printDataAcl( conn, tmpDataId ); } } return 0; }