11 #include <boost/format.hpp>
19 if ( rodsPathInp ==
NULL ) {
37 for (
int i = 0; i < rodsPathInp->
numSrc; i++ ) {
47 rodsLog(
LOG_ERROR,
"lsUtil: srcPath %s does not exist or user lacks access permission", src_path);
60 const std::string query_str{(boost::format(
61 "select DATA_ID where DATA_NAME = '%s' and COLL_NAME = '%s'") % data_name % coll_name).str()};
63 if (qobj.size() > 0) {
64 const auto id = qobj.front()[0];
103 rodsArgs, genQueryInp );
123 if ( srcPath ==
NULL ) {
125 "lsDataObjUtil: NULL srcPath input" );
134 printf(
" %s\n", srcPath );
157 "setQueryInpForLong: splitPathByKey for %s error, status = %d",
178 "lsDataObjUtilLong: rcGenQuery error for %s", srcPath );
191 sqlResult_t *dataName = 0, *replNum = 0, *dataSize = 0, *rescName = 0,
192 *replStatus = 0, *dataModify = 0, *dataOwnerName = 0, *dataId = 0;
193 sqlResult_t *chksumStr = 0, *dataPath = 0, *dataType = 0,*rescHier;
198 if ( genQueryOut ==
NULL ) {
208 "printLsLong: getSqlResultByInx for COL_D_DATA_CHECKSUM failed" );
215 "printLsLong: getSqlResultByInx for COL_D_DATA_PATH failed" );
222 "printLsLong: getSqlResultByInx for COL_DATA_TYPE_NAME failed" );
229 "printLsLong: getSqlResultByInx for COL_D_DATA_ID failed" );
235 "printLsLong: getSqlResultByInx for COL_DATA_NAME failed" );
242 "printLsLong: getSqlResultByInx for COL_DATA_REPL_NUM failed" );
248 "printLsLong: getSqlResultByInx for COL_DATA_SIZE failed" );
254 "printLsLong: getSqlResultByInx for COL_D_RESC_NAME failed" );
268 "printLsLong: getSqlResultByInx for COL_D_REPL_STATUS failed" );
275 "printLsLong: getSqlResultByInx for COL_D_MODIFY_TIME failed" );
282 "printLsLong: getSqlResultByInx for COL_D_OWNER_NAME failed" );
288 for ( i = 0; i < genQueryOut->
rowCnt; i++ ) {
291 bzero( &collEnt,
sizeof( collEnt ) );
294 collEnt.
replNum = atoi( &replNum->value[replNum->len * i] );
295 collEnt.
dataSize = strtoll( &dataSize->value[dataSize->len * i], 0, 0 );
296 collEnt.
resource = &rescName->value[rescName->len * i];
297 collEnt.
ownerName = &dataOwnerName->value[dataOwnerName->len * i];
298 collEnt.
replStatus = atoi( &replStatus->value[replStatus->len * i] );
299 collEnt.
modifyTime = &dataModify->value[dataModify->len * i];
300 collEnt.
resc_hier = &rescHier->value[rescHier->len * i];
304 collEnt.
phyPath = &dataPath->value[dataPath->len * i];
305 collEnt.
dataType = &dataType->value[dataType->len * i];
311 tmpDataId = &dataId->value[dataId->len * i];
340 char *tmpDataName, *tmpDataId;
342 if ( genQueryOut ==
NULL ) {
348 "printLsShort: getSqlResultByInx for COL_D_DATA_ID failed" );
354 "printLsShort: getSqlResultByInx for COL_DATA_NAME failed" );
358 for ( i = 0; i < genQueryOut->
rowCnt; i++ ) {
359 tmpDataName = &dataName->
value[dataName->
len * i];
363 tmpDataId = &dataId->
value[dataId->
len * i];
373 if ( genQueryInp ==
NULL ) {
375 "initCondForLs: NULL genQueryInp input" );
394 if ( srcPath ==
NULL ) {
396 "lsCollUtil: NULL srcPath input" );
403 printf(
"%s:\n", srcColl );
425 "lsCollUtil: rclOpenCollection of %s error. status = %d",
448 strcmp( collEnt.
collName,
"/" ) != 0 ) {
450 memset( &tmpPath, 0,
sizeof( tmpPath ) );
496 printf(
" %-12.12s %6d %s %12lld %16.16s %s %s\n",
502 printf(
" %-12.12s %6.6s %s %12lld %16.16s %s %s\n",
524 printf(
" C- %s %s\n", collEnt->
collName, typeStr );
528 printf(
" C- %s\n", collEnt->
collName );
533 printf(
" C- %s %6.6s %s %s %s\n",
539 printf(
" C- %s %6.6s %s %s;;;%s;;;%d\n",
548 printf(
" C- %s\n", collEnt->
collName );
559 bzero( &collEnt,
sizeof( collEnt ) );
563 collEnt.
dataSize = strtoll( objSize, 0, 0 );
581 char *userNameStr, *userZoneStr, *dataAccessStr;
594 "printDataAcl: getSqlResultByInx for COL_USER_NAME failed" );
600 "printDataAcl: getSqlResultByInx for COL_USER_ZONE failed" );
607 "printDataAcl: getSqlResultByInx for COL_DATA_ACCESS_NAME failed" );
611 for ( i = 0; i < genQueryOut->
rowCnt; i++ ) {
612 userNameStr = &userName->
value[userName->
len * i];
613 userZoneStr = &userZone->
value[userZone->
len * i];
614 dataAccessStr = &dataAccess->
value[dataAccess->
len * i];
615 printf(
"%s#%s:%s ", userNameStr, userZoneStr, dataAccessStr );
631 char *userNameStr, *userZoneStr, *dataAccessStr;
642 for ( i = 0; i < genQueryOut->
rowCnt; i++ ) {
648 for ( j = 0; j < 10; j++ ) {
650 if ( j < genQueryOut->attriCnt ) {
656 if ( tResult[3] != 0 && strncmp( tResult[3],
"rodsgroup", 9 ) == 0 ) {
657 strncpy( typeStr,
"g:", 3 );
659 printf(
"%s%s#%s:%s ", typeStr, tResult[0], tResult[1], tResult[2] );
677 "printCollAcl: getSqlResultByInx for COL_COLL_USER_NAME failed" );
683 "printCollAcl: getSqlResultByInx for COL_COLL_USER_ZONE failed" );
690 "printCollAcl: getSqlResultByInx for COL_COLL_ACCESS_NAME failed" );
695 for ( i = 0; i < genQueryOut->
rowCnt; i++ ) {
696 userNameStr = &userName->
value[userName->
len * i];
697 userZoneStr = &userZone->
value[userZone->
len * i];
698 dataAccessStr = &dataAccess->
value[dataAccess->
len * i];
699 printf(
"%s#%s:%s ", userNameStr, userZoneStr, dataAccessStr );
725 "printCollInheritance: getSqlResultByInx for COL_COLL_INHERITANCE failed" );
730 inheritStr = &inheritResult->
value[0];
731 printf(
" Inheritance - " );
732 if ( *inheritStr ==
'1' ) {
733 printf(
"Enabled\n" );
736 printf(
"Disabled\n" );
760 if ( specColl !=
NULL ) {
767 fprintf( stdout,
"%s- %s %-5.5s :\n", typeStr, myName, objType );
770 fprintf( stdout,
"%s- %s :\n", typeStr, myName );
781 char *dataNameStr, *collectionStr, *dataSizeStr;
785 fprintf( stdout,
"Bundle file: %s\n", srcPath );
786 fprintf( stdout,
"Subfiles:\n" );
787 bzero( &genQueryInp,
sizeof( genQueryInp ) );
800 while ( continueInx > 0 ) {
806 "lsSubfilesInBundle: rsGenQuery error for %s",
816 "lsSubfilesInBundle: getSqlResultByInx for COL_COLL_NAME failed" );
822 "lsSubfilesInBundle: getSqlResultByInx for COL_DATA_NAME failed" );
828 "lsSubfilesInBundle: getSqlResultByInx for COL_DATA_SIZE failed" );
832 for ( i = 0; i < genQueryOut->
rowCnt; i++ ) {
833 collectionStr = &collection->
value[collection->
len * i];
834 dataNameStr = &dataName->
value[dataName->
len * i];
835 dataSizeStr = &dataSize->
value[dataSize->
len * i];
836 fprintf( stdout,
" %s/%s %s\n",
837 collectionStr, dataNameStr, dataSizeStr );