irods  4.2.8
About: iRODS (the integrated Rule Oriented Data System) is a distributed data-management system for creating data grids, digital libraries, persistent archives, and real-time data systems.
  Fossies Dox: irods-4.2.8.tar.gz  ("unofficial" and yet experimental doxygen-generated source code documentation)  

replUtil.cpp
Go to the documentation of this file.
1 
3 #ifndef windows_platform
4 #include <sys/time.h>
5 #endif
6 #include "rodsPath.h"
7 #include "rodsErrorTable.h"
8 #include "rodsLog.h"
9 #include "miscUtil.h"
10 #include "replUtil.h"
11 #include "rcGlobalExtern.h"
12 
13 int
14 replUtil( rcComm_t *conn, rodsEnv *myRodsEnv, rodsArguments_t *myRodsArgs,
15  rodsPathInp_t *rodsPathInp ) {
16 
17 
18  if ( rodsPathInp == NULL ) {
19  return USER__NULL_INPUT_ERR;
20  }
21 
22  dataObjInp_t dataObjInp;
23  rodsRestart_t rodsRestart;
24  initCondForRepl( myRodsEnv, myRodsArgs, &dataObjInp, &rodsRestart );
25 
26  int savedStatus = 0;
27  for ( int i = 0; i < rodsPathInp->numSrc; i++ ) {
28  if ( rodsPathInp->srcPath[i].objType == UNKNOWN_OBJ_T ) {
29  getRodsObjType( conn, &rodsPathInp->srcPath[i] );
30  if ( rodsPathInp->srcPath[i].objState == NOT_EXIST_ST ) {
32  "replUtil: srcPath %s does not exist",
33  rodsPathInp->srcPath[i].outPath );
34  savedStatus = USER_INPUT_PATH_ERR;
35  continue;
36  }
37  }
38  }
39 
40  /* initialize the progress struct */
41  if ( gGuiProgressCB != NULL ) {
42  bzero( &conn->operProgress, sizeof( conn->operProgress ) );
43  for ( int i = 0; i < rodsPathInp->numSrc; i++ ) {
44  if ( rodsPathInp->srcPath[i].objType == DATA_OBJ_T ) {
46  if ( rodsPathInp->srcPath[i].size > 0 ) {
48  rodsPathInp->srcPath[i].size;
49  }
50  }
51  else if ( rodsPathInp->srcPath[i].objType == COLL_OBJ_T ) {
52  getCollSizeForProgStat( conn, rodsPathInp->srcPath[i].outPath,
53  &conn->operProgress );
54  }
55  }
56  }
57 
58  for ( int i = 0; i < rodsPathInp->numSrc; i++ ) {
59  int status = 0;
60  if ( rodsPathInp->srcPath[i].objType == DATA_OBJ_T ) {
61  rmKeyVal( &dataObjInp.condInput, TRANSLATED_PATH_KW );
62  status = replDataObjUtil( conn, rodsPathInp->srcPath[i].outPath,
63  rodsPathInp->srcPath[i].size, myRodsArgs, &dataObjInp );
64  }
65  else if ( rodsPathInp->srcPath[i].objType == COLL_OBJ_T ) {
66  setStateForRestart( &rodsRestart, &rodsPathInp->srcPath[i],
67  myRodsArgs );
68  addKeyVal( &dataObjInp.condInput, TRANSLATED_PATH_KW, "" );
69  status = replCollUtil( conn, rodsPathInp->srcPath[i].outPath,
70  myRodsEnv, myRodsArgs, &dataObjInp, &rodsRestart );
71  if ( rodsRestart.fd > 0 && status < 0 ) {
72  close( rodsRestart.fd );
73  return status;
74  }
75  }
76  else {
77  /* should not be here */
79  "replUtil: invalid repl objType %d for %s",
80  rodsPathInp->srcPath[i].objType, rodsPathInp->srcPath[i].outPath );
81  return USER_INPUT_PATH_ERR;
82  }
83  /* XXXX may need to return a global status */
84  if ( status < 0 &&
87  "replUtil: repl error for %s, status = %d",
88  rodsPathInp->srcPath[i].outPath, status );
89  savedStatus = status;
90  }
91  }
92  return savedStatus;
93 }
94 
95 int
96 replDataObjUtil( rcComm_t *conn, char *srcPath, rodsLong_t srcSize,
97  rodsArguments_t *rodsArgs, dataObjInp_t *dataObjInp ) {
98  int status;
99  struct timeval startTime, endTime;
100 
101  if ( srcPath == NULL ) {
103  "replDataObjUtil: NULL srcPath input" );
104  return USER__NULL_INPUT_ERR;
105  }
106 
107  if ( rodsArgs->verbose == True ) {
108  ( void ) gettimeofday( &startTime, ( struct timezone * )0 );
109  }
110 
111  if ( gGuiProgressCB != NULL ) {
112  rstrcpy( conn->operProgress.curFileName, srcPath, MAX_NAME_LEN );
113  conn->operProgress.curFileSize = srcSize;
114  conn->operProgress.curFileSizeDone = 0;
115  conn->operProgress.flag = 0;
116  gGuiProgressCB( &conn->operProgress );
117  }
118 
119  rstrcpy( dataObjInp->objPath, srcPath, MAX_NAME_LEN );
120 
121  status = rcDataObjRepl( conn, dataObjInp );
122 
123  if ( status >= 0 ) {
124  if ( rodsArgs->verbose == True ) {
125  ( void ) gettimeofday( &endTime, ( struct timezone * )0 );
126  printTiming( conn, dataObjInp->objPath,
127  conn->transStat.bytesWritten, NULL, &startTime, &endTime );
128  }
129  if ( gGuiProgressCB != NULL ) {
131  conn->operProgress.totalFileSizeDone += srcSize;
132  }
133  }
134 
135  return status;
136 }
137 
138 int
139 initCondForRepl( rodsEnv *myRodsEnv, rodsArguments_t *rodsArgs,
140  dataObjInp_t *dataObjInp, rodsRestart_t *rodsRestart ) {
141  char *myResc = NULL;
142  char *tmpStr;
143 
144  if ( dataObjInp == NULL ) {
146  "initCondForRepl: NULL dataObjInp input" );
147  return USER__NULL_INPUT_ERR;
148  }
149 
150  memset( dataObjInp, 0, sizeof( dataObjInp_t ) );
151 
152  if ( rodsArgs == NULL ) {
153  return 0;
154  }
155 
156  if ( rodsArgs->replNum == True ) {
157  addKeyVal( &dataObjInp->condInput, REPL_NUM_KW,
158  rodsArgs->replNumValue );
159  }
160 
161  if ( rodsArgs->purgeCache == True ) { // JMC - backport 4549
162  addKeyVal( &dataObjInp->condInput, PURGE_CACHE_KW, "" );
163  }
164 
165 
166  if ( rodsArgs->all == True ) {
167  addKeyVal( &dataObjInp->condInput, ALL_KW, "" );
168  }
169 
170  if ( rodsArgs->admin == True ) {
171  addKeyVal( &dataObjInp->condInput, ADMIN_KW, "" );
172  }
173 
174  if ( rodsArgs->srcResc == True ) {
175  addKeyVal( &dataObjInp->condInput, RESC_NAME_KW,
176  rodsArgs->srcRescString );
177  }
178 
179  if ( rodsArgs->resource == True ) {
180  if ( rodsArgs->resourceString == NULL ) {
182  "initCondForRepl: NULL resourceString error" );
183  return USER__NULL_INPUT_ERR;
184  }
185  else {
186  myResc = rodsArgs->resourceString;
187  addKeyVal( &dataObjInp->condInput, DEST_RESC_NAME_KW,
188  rodsArgs->resourceString );
189  }
190  }
191  else if ( myRodsEnv != NULL && strlen( myRodsEnv->rodsDefResource ) > 0 ) {
192  myResc = myRodsEnv->rodsDefResource;
193  addKeyVal( &dataObjInp->condInput, DEF_RESC_NAME_KW,
194  myRodsEnv->rodsDefResource );
195  }
196 
197  if ( myResc != NULL && rodsArgs->backupMode == True ) {
198  addKeyVal( &dataObjInp->condInput, BACKUP_RESC_NAME_KW,
199  myResc );
200  }
201 
202  if ( rodsArgs->unmount == True ) {
203  /* use unmount for update */
204  addKeyVal( &dataObjInp->condInput, UPDATE_REPL_KW, "" );
205  }
206 
207  if ( rodsArgs->rbudp == True ) {
208  /* use -Q for rbudp transfer */
209  addKeyVal( &dataObjInp->condInput, RBUDP_TRANSFER_KW, "" );
210  }
211 
212  if ( rodsArgs->veryVerbose == True ) {
213  addKeyVal( &dataObjInp->condInput, VERY_VERBOSE_KW, "" );
214  }
215 
216  if ( ( tmpStr = getenv( RBUDP_SEND_RATE_KW ) ) != NULL ) {
217  addKeyVal( &dataObjInp->condInput, RBUDP_SEND_RATE_KW, tmpStr );
218  }
219 
220  if ( ( tmpStr = getenv( RBUDP_PACK_SIZE_KW ) ) != NULL ) {
221  addKeyVal( &dataObjInp->condInput, RBUDP_PACK_SIZE_KW, tmpStr );
222  }
223 
224  memset( rodsRestart, 0, sizeof( rodsRestart_t ) );
225  if ( rodsArgs->restart == True ) {
226  int status;
227  status = openRestartFile( rodsArgs->restartFileString, rodsRestart );
228  if ( status < 0 ) {
230  "initCondForRepl: openRestartFile of %s errno",
231  rodsArgs->restartFileString );
232  return status;
233  }
234  }
235  if ( rodsArgs->rlock == True ) { // JMC - backport 4609
237  }
238  if ( rodsArgs->number == True ) {
239  if ( rodsArgs->numberValue == 0 ) {
240  dataObjInp->numThreads = NO_THREADING;
241  }
242  else {
243  dataObjInp->numThreads = rodsArgs->numberValue;
244  }
245  }
246  if ( rodsArgs->wlock == True ) { // JMC - backport 4612
248  "initCondForPut: --wlock not supported, changing it to --rlock" );
250  }
251 
252  return 0;
253 }
254 
255 int
256 replCollUtil( rcComm_t *conn, char *srcColl, rodsEnv *myRodsEnv,
257  rodsArguments_t *rodsArgs, dataObjInp_t *dataObjInp,
258  rodsRestart_t *rodsRestart ) {
259  int status;
260  int savedStatus = 0;
261  collHandle_t collHandle;
262  collEnt_t collEnt;
263  char srcChildPath[MAX_NAME_LEN];
264 
265  if ( srcColl == NULL ) {
267  "replCollUtil: NULL srcColl input" );
268  return USER__NULL_INPUT_ERR;
269  }
270 
271  if ( rodsArgs->recursive != True ) {
273  "replCollUtil: -r option must be used for getting %s collection",
274  srcColl );
275  return USER_INPUT_OPTION_ERR;
276  }
277 
278  if ( rodsArgs->verbose == True ) {
279  fprintf( stdout, "C- %s:\n", srcColl );
280  }
281 
282  bzero( &collHandle, sizeof( collHandle ) );
283  replKeyVal( &dataObjInp->condInput, &collHandle.dataObjInp.condInput );
285  &collHandle );
286  if ( status < 0 ) {
288  "replCollUtil: rclOpenCollection of %s error. status = %d",
289  srcColl, status );
290  return status;
291  }
292  if ( collHandle.rodsObjStat->specColl != NULL &&
293  collHandle.rodsObjStat->specColl->collClass != LINKED_COLL ) {
294  /* no repl for mounted coll */
295  rclCloseCollection( &collHandle );
296  return 0;
297  }
298  while ( ( status = rclReadCollection( conn, &collHandle, &collEnt ) ) >= 0 ) {
299  if ( collEnt.objType == DATA_OBJ_T ) {
300  snprintf( srcChildPath, MAX_NAME_LEN, "%s/%s",
301  collEnt.collName, collEnt.dataName );
302 
303  int status = chkStateForResume( conn, rodsRestart, srcChildPath,
304  rodsArgs, DATA_OBJ_T, &dataObjInp->condInput, 0 );
305 
306  if ( status < 0 ) {
307  /* restart failed */
308  break;
309  }
310  else if ( status == 0 ) {
311  continue;
312  }
313 
314  status = replDataObjUtil( conn, srcChildPath, collEnt.dataSize,
315  rodsArgs, dataObjInp );
316 
317  if ( status == SYS_COPY_ALREADY_IN_RESC ) {
318  if ( rodsArgs->verbose == True ) {
319  printf( "copy of %s already exists. Probably OK\n",
320  srcChildPath );
321  }
322  status = 0;
323  }
324 
325  if ( status < 0 ) {
327  "replCollUtil: replDataObjUtil failed for %s. status = %d",
328  srcChildPath, status );
329  savedStatus = status;
330  if ( rodsRestart->fd > 0 ) {
331  break;
332  }
333  }
334  else {
335  status = procAndWriteRestartFile( rodsRestart, srcChildPath );
336  if ( status < 0 ) {
338  "replCollUtil: procAndWriteRestartFile failed for %s. status = %d",
339  srcChildPath, status );
340  savedStatus = status;
341  }
342  }
343  }
344  else if ( collEnt.objType == COLL_OBJ_T ) {
345  dataObjInp_t childDataObjInp;
346  childDataObjInp = *dataObjInp;
347  if ( collEnt.specColl.collClass != NO_SPEC_COLL ) {
348  childDataObjInp.specColl = &collEnt.specColl;
349  }
350  else {
351  childDataObjInp.specColl = NULL;
352  }
353  int status = replCollUtil( conn, collEnt.collName, myRodsEnv,
354  rodsArgs, &childDataObjInp, rodsRestart );
355  if ( status < 0 && status != CAT_NO_ROWS_FOUND ) {
356  savedStatus = status;
357  }
358  }
359  }
360  rclCloseCollection( &collHandle );
361 
362  if ( savedStatus < 0 ) {
363  return savedStatus;
364  }
365  else if ( status == CAT_NO_ROWS_FOUND ) {
366  return 0;
367  }
368  else {
369  return status;
370  }
371 }
372 
RBUDP_SEND_RATE_KW
#define RBUDP_SEND_RATE_KW
Definition: rodsKeyWdDef.h:78
rodsArguments_t::restartFileString
char * restartFileString
Definition: parseCommandLine.h:117
rodsLog
void rodsLog(int level, const char *formatStr,...)
Definition: rodsLog.cpp:86
DataObjInp::objPath
char objPath[(1024+64)]
Definition: dataObjInpOut.h:66
RESC_NAME_KW
#define RESC_NAME_KW
Definition: rodsKeyWdDef.h:19
LOCK_TYPE_KW
#define LOCK_TYPE_KW
Definition: rodsKeyWdDef.h:115
rcComm_t
Definition: rcConnect.h:95
NULL
#define NULL
Definition: rodsDef.h:70
True
#define True
Definition: parseCommandLine.h:11
rcDataObjRepl
int rcDataObjRepl(rcComm_t *conn, dataObjInp_t *dataObjInp)
Definition: rcDataObjRepl.cpp:84
addKeyVal
int addKeyVal(keyValPair_t *condInput, const char *keyWord, const char *value)
Definition: rcMisc.cpp:789
rodsPath.h
rclOpenCollection
int rclOpenCollection(rcComm_t *conn, char *collection, int flag, collHandle_t *collHandle)
Definition: miscUtil.cpp:1057
rodsArguments_t::all
int all
Definition: parseCommandLine.h:18
OperProgress::flag
int flag
Definition: guiProgressCallback.h:9
rodsArguments_t
Definition: parseCommandLine.h:14
DataObjInp::specColl
specColl_t * specColl
Definition: dataObjInpOut.h:73
rodsArguments_t::rbudp
int rbudp
Definition: parseCommandLine.h:83
UNKNOWN_OBJ_T
@ UNKNOWN_OBJ_T
Definition: rodsType.h:37
procAndWriteRestartFile
int procAndWriteRestartFile(rodsRestart_t *rodsRestart, char *donePath)
Definition: rcMisc.cpp:2700
RBUDP_TRANSFER_KW
#define RBUDP_TRANSFER_KW
Definition: rodsKeyWdDef.h:76
RodsPathInp
Definition: rodsPath.h:33
collHandle_t
Definition: miscUtil.h:97
rodsArguments_t::verbose
int verbose
Definition: parseCommandLine.h:107
replCollUtil
int replCollUtil(rcComm_t *conn, char *srcColl, rodsEnv *myRodsEnv, rodsArguments_t *rodsArgs, dataObjInp_t *dataObjInp, rodsRestart_t *rodsRestart)
Definition: replUtil.cpp:256
rodsArguments_t::srcRescString
char * srcRescString
Definition: parseCommandLine.h:93
OperProgress::curFileSize
rodsLong_t curFileSize
Definition: guiProgressCallback.h:15
CollEnt::collName
char * collName
Definition: miscUtil.h:119
replDataObjUtil
int replDataObjUtil(rcComm_t *conn, char *srcPath, rodsLong_t srcSize, rodsArguments_t *rodsArgs, dataObjInp_t *dataObjInp)
Definition: replUtil.cpp:96
OperProgress::curFileSizeDone
rodsLong_t curFileSizeDone
Definition: guiProgressCallback.h:16
CollEnt::dataSize
rodsLong_t dataSize
Definition: miscUtil.h:118
OperProgress::totalFileSize
rodsLong_t totalFileSize
Definition: guiProgressCallback.h:11
OperProgress::totalFileSizeDone
rodsLong_t totalFileSizeDone
Definition: guiProgressCallback.h:13
rodsArguments_t::rlock
int rlock
Definition: parseCommandLine.h:58
RodsPath::objState
objStat_t objState
Definition: rodsPath.h:20
REPL_NUM_KW
#define REPL_NUM_KW
Definition: rodsKeyWdDef.h:30
gGuiProgressCB
guiProgressCallback gGuiProgressCB
Definition: rcGlobal.cpp:207
ALL_KW
#define ALL_KW
Definition: rodsKeyWdDef.h:10
rodsArguments_t::resource
int resource
Definition: parseCommandLine.h:86
rcGlobalExtern.h
RodsPathInp::srcPath
rodsPath_t * srcPath
Definition: rodsPath.h:35
LOG_ERROR
#define LOG_ERROR
Definition: rodsLog.h:43
RodsPath::objType
objType_t objType
Definition: rodsPath.h:19
NO_THREADING
#define NO_THREADING
Definition: rodsDef.h:100
OperProgress::curFileName
char curFileName[MAX_NAME_LEN]
Definition: guiProgressCallback.h:14
PURGE_CACHE_KW
#define PURGE_CACHE_KW
Definition: rodsKeyWdDef.h:110
transferStat_t::bytesWritten
rodsLong_t bytesWritten
Definition: objInfo.h:294
replUtil.h
replUtil
int replUtil(rcComm_t *conn, rodsEnv *myRodsEnv, rodsArguments_t *myRodsArgs, rodsPathInp_t *rodsPathInp)
Definition: replUtil.cpp:14
OperProgress::totalNumFilesDone
rodsLong_t totalNumFilesDone
Definition: guiProgressCallback.h:12
COLL_OBJ_T
@ COLL_OBJ_T
Definition: rodsType.h:39
BACKUP_RESC_NAME_KW
#define BACKUP_RESC_NAME_KW
Definition: rodsKeyWdDef.h:22
DEST_RESC_NAME_KW
#define DEST_RESC_NAME_KW
Definition: rodsKeyWdDef.h:20
rodsArguments_t::srcResc
int srcResc
Definition: parseCommandLine.h:92
LINKED_COLL
@ LINKED_COLL
Definition: objInfo.h:49
rodsArguments_t::admin
int admin
Definition: parseCommandLine.h:20
rclCloseCollection
int rclCloseCollection(collHandle_t *collHandle)
Definition: miscUtil.cpp:1354
VERY_VERBOSE_KW
#define VERY_VERBOSE_KW
Definition: rodsKeyWdDef.h:77
setStateForRestart
int setStateForRestart(rodsRestart_t *rodsRestart, rodsPath_t *targPath, rodsArguments_t *rodsArgs)
Definition: rcMisc.cpp:2714
CollEnt
Definition: miscUtil.h:113
OperProgress::totalNumFiles
rodsLong_t totalNumFiles
Definition: guiProgressCallback.h:10
rodsArguments_t::purgeCache
int purgeCache
Definition: parseCommandLine.h:78
rodsArguments_t::veryVerbose
int veryVerbose
Definition: parseCommandLine.h:108
CollEnt::specColl
specColl_t specColl
Definition: miscUtil.h:130
DataObjInp
Definition: dataObjInpOut.h:65
collHandle_t::dataObjInp
dataObjInp_t dataObjInp
Definition: miscUtil.h:105
rodsArguments_t::backupMode
int backupMode
Definition: parseCommandLine.h:28
MAX_NAME_LEN
#define MAX_NAME_LEN
Definition: rodsDef.h:61
RBUDP_PACK_SIZE_KW
#define RBUDP_PACK_SIZE_KW
Definition: rodsKeyWdDef.h:79
collHandle_t::rodsObjStat
rodsObjStat_t * rodsObjStat
Definition: miscUtil.h:102
rmKeyVal
int rmKeyVal(keyValPair_t *condInput, const char *keyWord)
Definition: rcMisc.cpp:710
ADMIN_KW
#define ADMIN_KW
Definition: rodsKeyWdDef.h:62
INCLUDE_CONDINPUT_IN_QUERY
#define INCLUDE_CONDINPUT_IN_QUERY
Definition: miscUtil.h:95
RodsPath::size
rodsLong_t size
Definition: rodsPath.h:21
UPDATE_REPL_KW
#define UPDATE_REPL_KW
Definition: rodsKeyWdDef.h:75
getCollSizeForProgStat
int getCollSizeForProgStat(rcComm_t *conn, char *srcColl, operProgress_t *operProgress)
Definition: miscUtil.cpp:1920
irods.pypyodbc.status
status
Definition: pypyodbc.py:467
NO_SPEC_COLL
@ NO_SPEC_COLL
Definition: objInfo.h:46
TRANSLATED_PATH_KW
#define TRANSLATED_PATH_KW
Definition: rodsKeyWdDef.h:97
rcComm_t::operProgress
operProgress_t operProgress
Definition: rcConnect.h:119
rodsLog.h
DEF_RESC_NAME_KW
#define DEF_RESC_NAME_KW
Definition: rodsKeyWdDef.h:21
rodsArguments_t::resourceString
char * resourceString
Definition: parseCommandLine.h:87
rodsRestart_t
Definition: rodsDef.h:317
rodsArguments_t::wlock
int wlock
Definition: parseCommandLine.h:59
DATA_OBJ_T
@ DATA_OBJ_T
Definition: rodsType.h:38
CollEnt::dataName
char * dataName
Definition: miscUtil.h:120
rodsEnv::rodsDefResource
char rodsDefResource[64]
Definition: getRodsEnv.h:17
RodsPath::outPath
char outPath[(1024+64)]
Definition: rodsPath.h:24
printTiming
int printTiming(rcComm_t *conn, char *objPath, rodsLong_t fileSize, char *localFile, struct timeval *startTime, struct timeval *endTime)
Definition: miscUtil.cpp:396
rodsRestart_t::fd
int fd
Definition: rodsDef.h:319
rodsArguments_t::recursive
int recursive
Definition: parseCommandLine.h:85
initCondForRepl
int initCondForRepl(rodsEnv *myRodsEnv, rodsArguments_t *rodsArgs, dataObjInp_t *dataObjInp, rodsRestart_t *rodsRestart)
Definition: replUtil.cpp:139
CAT_NO_ROWS_FOUND
@ CAT_NO_ROWS_FOUND
Definition: rodsErrorTable.h:423
rodsArguments_t::unmount
int unmount
Definition: parseCommandLine.h:106
USER_INPUT_OPTION_ERR
@ USER_INPUT_OPTION_ERR
Definition: rodsErrorTable.h:249
openRestartFile
int openRestartFile(char *restartFile, rodsRestart_t *rodsRestart)
Definition: rcMisc.cpp:2552
rodsLogError
void rodsLogError(int level, int errCode, char *formatStr,...)
Definition: rodsLog.cpp:422
RodsPathInp::numSrc
int numSrc
Definition: rodsPath.h:34
rodsArguments_t::replNum
int replNum
Definition: parseCommandLine.h:63
READ_LOCK_TYPE
#define READ_LOCK_TYPE
Definition: dataObjLock.h:9
chkStateForResume
int chkStateForResume(rcComm_t *conn, rodsRestart_t *rodsRestart, char *targPath, rodsArguments_t *rodsArgs, objType_t objType, keyValPair_t *condInput, int deleteFlag)
Definition: putUtil.cpp:34
rcComm_t::transStat
transferStat_t transStat
Definition: rcConnect.h:108
CollEnt::objType
objType_t objType
Definition: miscUtil.h:114
rclReadCollection
int rclReadCollection(rcComm_t *conn, collHandle_t *collHandle, collEnt_t *collEnt)
Definition: miscUtil.cpp:1108
rodsErrorTable.h
rodsObjStat::specColl
specColl_t * specColl
Definition: objStat.h:18
miscUtil.h
rodsArguments_t::numberValue
int numberValue
Definition: parseCommandLine.h:69
rstrcpy
char * rstrcpy(char *dest, const char *src, int maxLen)
Definition: stringOpr.cpp:51
DataObjInp::condInput
keyValPair_t condInput
Definition: dataObjInpOut.h:74
rodsEnv
Definition: getRodsEnv.h:8
SYS_COPY_ALREADY_IN_RESC
@ SYS_COPY_ALREADY_IN_RESC
Definition: rodsErrorTable.h:113
NOT_EXIST_ST
@ NOT_EXIST_ST
Definition: rodsType.h:48
rodsArguments_t::replNumValue
char * replNumValue
Definition: parseCommandLine.h:64
getRodsObjType
int getRodsObjType(rcComm_t *conn, rodsPath_t *rodsPath)
Definition: miscUtil.cpp:200
USER_INPUT_PATH_ERR
@ USER_INPUT_PATH_ERR
Definition: rodsErrorTable.h:248
rodsArguments_t::restart
int restart
Definition: parseCommandLine.h:116
DataObjInp::numThreads
int numThreads
Definition: dataObjInpOut.h:71
replKeyVal
int replKeyVal(const keyValPair_t *srcCondInput, keyValPair_t *destCondInput)
Definition: rcMisc.cpp:739
rodsLong_t
long long rodsLong_t
Definition: rodsType.h:32
rodsArguments_t::number
int number
Definition: parseCommandLine.h:68
SpecColl::collClass
specCollClass_t collClass
Definition: objInfo.h:77
USER__NULL_INPUT_ERR
@ USER__NULL_INPUT_ERR
Definition: rodsErrorTable.h:247