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)  

rsStructFileBundle.cpp
Go to the documentation of this file.
1 
3 /* rsStructFileBundle.c. See structFileBundle.h for a description of
4  * this API call.*/
5 
6 //#include "reFuncDefs.hpp"
7 #include "apiHeaderAll.h"
8 #include "objMetaOpr.hpp"
9 #include "dataObjOpr.hpp"
10 #include "physPath.hpp"
11 #include "miscServerFunct.hpp"
12 #include "rcGlobalExtern.h"
13 #include "rcMisc.h"
14 #include "rsStructFileBundle.hpp"
15 #include "rsDataObjOpen.hpp"
16 #include "rsDataObjCreate.hpp"
17 #include "rsChkObjPermAndStat.hpp"
18 #include "rsDataObjClose.hpp"
19 #include "rsOpenCollection.hpp"
20 #include "rsReadCollection.hpp"
21 #include "rsCloseCollection.hpp"
23 #include "rsPhyBundleColl.hpp"
24 
25 // =-=-=-=-=-=-=-
26 #include "irods_log.hpp"
27 #include "irods_file_object.hpp"
28 #include "irods_stacktrace.hpp"
30 
31 #include "boost/lexical_cast.hpp"
32 int
34  structFileExtAndRegInp_t *structFileBundleInp ) {
35  int status;
37  int remoteFlag;
38  dataObjInp_t dataObjInp;
39 
40 
41  memset( &dataObjInp, 0, sizeof( dataObjInp ) );
42  rstrcpy( dataObjInp.objPath, structFileBundleInp->objPath,
43  MAX_NAME_LEN );
44 
45  remoteFlag = getAndConnRemoteZone( rsComm, &dataObjInp, &rodsServerHost,
46  REMOTE_CREATE );
47 
48  if ( remoteFlag < 0 ) {
49  return remoteFlag;
50  }
51  else if ( remoteFlag == REMOTE_HOST ) {
53  structFileBundleInp );
54  return status;
55  }
56 
57  // =-=-=-=-=-=-=-
58  // working on the "home zone", determine if we need to redirect to a different
59  // server in this zone for this operation. if there is a RESC_HIER_STR_KW then
60  // we know that the redirection decision has already been made
61  std::string hier;
62  int local = LOCAL_HOST;
64  dataObjInp_t data_inp;
65  bzero( &data_inp, sizeof( data_inp ) );
66  rstrcpy( data_inp.objPath, structFileBundleInp->objPath, MAX_NAME_LEN );
67  copyKeyVal( &structFileBundleInp->condInput, &data_inp.condInput );
68  if ( getValByKey( &structFileBundleInp->condInput, RESC_HIER_STR_KW ) == NULL ) {
70  &data_inp, hier, host, local );
71  if ( !ret.ok() ) {
72  std::stringstream msg;
73  msg << "rsStructFileBundle :: failed in irods::resource_redirect for [";
74  msg << &data_inp.objPath << "]";
75  irods::log( PASSMSG( msg.str(), ret ) );
76  return ret.code();
77  }
78 
79  // =-=-=-=-=-=-=-
80  // we resolved the redirect and have a host, set the hier str for subsequent
81  // api calls, etc.
82  addKeyVal( &structFileBundleInp->condInput, RESC_HIER_STR_KW, hier.c_str() );
83 
84  } // if keyword
85 
86  if ( LOCAL_HOST == local ) {
87  status = _rsStructFileBundle( rsComm, structFileBundleInp );
88  }
89  else {
90  status = rcStructFileBundle( host->conn, structFileBundleInp );
91  } // else remote host
92 
93 
94  return status;
95 }
96 
98  structFileExtAndRegInp_t* structFileBundleInp ) {
99  int status;
100  int handleInx;
101  char phyBunDir[MAX_NAME_LEN];
102  char tmpPath[MAX_NAME_LEN];
103  int l1descInx;
104  char* dataType = 0; // JMC - backport 4664
105  openedDataObjInp_t dataObjCloseInp;
106  memset( &dataObjCloseInp, 0, sizeof(dataObjCloseInp) );
107 
108  // =-=-=-=-=-=-=-
109  // create an empty data obj
110  dataObjInp_t dataObjInp;
111  memset( &dataObjInp, 0, sizeof( dataObjInp ) );
112  dataObjInp.openFlags = O_WRONLY;
113 
114  // =-=-=-=-=-=-=-
115  // get the data type of the structured file
116  dataType = getValByKey( &structFileBundleInp->condInput, DATA_TYPE_KW );
117 
118  // =-=-=-=-=-=-=-
119  // ensure that the file name will end in .zip, if necessary
120  if ( dataType != NULL && strstr( dataType, ZIP_DT_STR ) != NULL ) {
121  int len = strlen( structFileBundleInp->objPath );
122  if ( strcmp( &structFileBundleInp->objPath[len - 4], ".zip" ) != 0 ) {
123  strcat( structFileBundleInp->objPath, ".zip" );
124  }
125  }
126 
127  // =-=-=-=-=-=-=-
128  // capture the object path in the data obj struct
129  rstrcpy( dataObjInp.objPath, structFileBundleInp->objPath, MAX_NAME_LEN );
130 
131  // =-=-=-=-=-=-=-
132  // replicate the condInput. may have resource input
133  replKeyVal( &structFileBundleInp->condInput, &dataObjInp.condInput );
134 
135  // =-=-=-=-=-=-=-
136  // open the file if we are in an add operation, otherwise create the new file
137  if ( ( structFileBundleInp->oprType & ADD_TO_TAR_OPR ) != 0 ) { // JMC - backport 4643
138  l1descInx = rsDataObjOpen( rsComm, &dataObjInp );
139 
140  }
141  else {
142  l1descInx = rsDataObjCreate( rsComm, &dataObjInp );
143 
144  }
145 
146  // =-=-=-=-=-=-=-
147  // error check create / open
148  if ( l1descInx < 0 ) {
149  rodsLog( LOG_ERROR, "rsStructFileBundle: rsDataObjCreate of %s error. status = %d",
150  dataObjInp.objPath, l1descInx );
151  return l1descInx;
152  }
153 
154  // =-=-=-=-=-=-=-
155  // FIXME :: Why, when we replicate them above?
156  clearKeyVal( &dataObjInp.condInput ); // JMC - backport 4637
157  // ???? l3Close (rsComm, l1descInx);
158 
159  // =-=-=-=-=-=-=-
160  // zip does not like a zero length file as target
161  //L1desc[ l1descInx ].l3descInx = 0;
162  //if( dataType != NULL && strstr( dataType, ZIP_DT_STR ) != NULL ) {
163  // if( ( structFileBundleInp->oprType & ADD_TO_TAR_OPR) == 0 ) { // JMC - backport 4643
164  // l3Unlink( rsComm, L1desc[l1descInx].dataObjInfo );
165  // }
166  //}
167 
168  // convert resc id to a string for the cond input
169  std::string resc_id_str = boost::lexical_cast<std::string>(L1desc[l1descInx].dataObjInfo->rescId);
170 
171  // =-=-=-=-=-=-=-
172  // check object permissions / stat
173  chkObjPermAndStat_t chkObjPermAndStatInp;
174  memset( &chkObjPermAndStatInp, 0, sizeof( chkObjPermAndStatInp ) );
175  rstrcpy( chkObjPermAndStatInp.objPath, structFileBundleInp->collection, MAX_NAME_LEN );
176  chkObjPermAndStatInp.flags = CHK_COLL_FOR_BUNDLE_OPR;
177  addKeyVal( &chkObjPermAndStatInp.condInput, RESC_NAME_KW, L1desc[l1descInx].dataObjInfo->rescName );
178  addKeyVal( &chkObjPermAndStatInp.condInput, RESC_ID_KW, resc_id_str.c_str());
179 
180  // =-=-=-=-=-=-=-
181  // get the resc hier string
182  std::string resc_hier;
183  char* resc_hier_ptr = getValByKey( &structFileBundleInp->condInput, RESC_HIER_STR_KW );
184  if ( !resc_hier_ptr ) {
185  rodsLog( LOG_NOTICE, "_rsStructFileBundle :: RESC_HIER_STR_KW is NULL" );
186  }
187  else {
188  addKeyVal( &chkObjPermAndStatInp.condInput, RESC_HIER_STR_KW, resc_hier_ptr );
189  resc_hier = resc_hier_ptr;
190  }
191  status = rsChkObjPermAndStat( rsComm, &chkObjPermAndStatInp );
192  if ( status < 0 ) {
193  rodsLog( LOG_ERROR, "rsStructFileBundle: rsChkObjPermAndStat of %s error. stat = %d",
194  chkObjPermAndStatInp.objPath, status );
195  dataObjCloseInp.l1descInx = l1descInx;
196  rsDataObjClose( rsComm, &dataObjCloseInp );
197  return status;
198  }
199 
200  clearKeyVal( &chkObjPermAndStatInp.condInput );
201 
202  // =-=-=-=-=-=-=-
203  // create the special hidden directory where the bundling happens
204  createPhyBundleDir( rsComm, L1desc[ l1descInx ].dataObjInfo->filePath, phyBunDir, L1desc[ l1descInx ].dataObjInfo->rescHier );
205 
206  // =-=-=-=-=-=-=-
207  // build a collection open input structure
208  collInp_t collInp;
209  bzero( &collInp, sizeof( collInp ) );
211  rstrcpy( collInp.collName, structFileBundleInp->collection, MAX_NAME_LEN );
212  addKeyVal( &collInp.condInput, RESC_ID_KW, resc_id_str.c_str() );
213  rodsLog(
214  LOG_NOTICE,//LOG_DEBUG,
215  "rsStructFileBundle: calling rsOpenCollection for [%s]",
216  structFileBundleInp->collection );
217 
218  // =-=-=-=-=-=-=-
219  // open the collection from which we will bundle
220  handleInx = rsOpenCollection( rsComm, &collInp );
221  if ( handleInx < 0 ) {
222  rodsLog( LOG_ERROR, "rsStructFileBundle: rsOpenCollection of %s error. status = %d",
223  collInp.collName, handleInx );
224  rmdir( phyBunDir );
225  return handleInx;
226  }
227 
228  // =-=-=-=-=-=-=-
229  // preserve the collection path?
230  int collLen = 0;
231  if ( ( structFileBundleInp->oprType & PRESERVE_COLL_PATH ) != 0 ) {
232  // =-=-=-=-=-=-=-
233  // preserve the last entry of the coll path
234  char* tmpPtr = collInp.collName;
235  int tmpLen = 0;
236  collLen = 0;
237 
238  // =-=-=-=-=-=-=-
239  // find length to the last '/'
240  while ( *tmpPtr != '\0' ) {
241  if ( *tmpPtr == '/' ) {
242  collLen = tmpLen;
243  }
244 
245  tmpLen++;
246  tmpPtr++;
247  }
248 
249  }
250  else {
251  collLen = strlen( collInp.collName );
252 
253  }
254 
255 
256  // =-=-=-=-=-=-=-
257  // preserve the collection path?
258  collEnt_t* collEnt = NULL;
259  while ( ( status = rsReadCollection( rsComm, &handleInx, &collEnt ) ) >= 0 ) {
260  if ( NULL == collEnt ) {
261  rodsLog(
262  LOG_ERROR,
263  "rsStructFileBundle: collEnt is NULL" );
264  continue;
265  }
266  // =-=-=-=-=-=-=-
267  // entry is a data object
268  if ( collEnt->objType == DATA_OBJ_T ) {
269  // =-=-=-=-=-=-=-
270  // filter out any possible replicas that are not on this resource
271  if ( resc_hier != collEnt->resc_hier ) {
272  rodsLog(
273  LOG_DEBUG,
274  "_rsStructFileBundle - skipping [%s] on resc [%s]",
275  collEnt->phyPath,
276  collEnt->resc_hier );
277  free( collEnt );
278  collEnt = NULL;
279  continue;
280  }
281 
282  if ( collEnt->collName[collLen] == '\0' ) {
283  snprintf(
284  tmpPath,
285  MAX_NAME_LEN,
286  "%s/%s",
287  phyBunDir,
288  collEnt->dataName );
289  }
290  else {
291  snprintf(
292  tmpPath,
293  MAX_NAME_LEN, "%s/%s/%s",
294  phyBunDir,
295  collEnt->collName + collLen + 1,
296  collEnt->dataName );
298  rsComm,
299  strlen( phyBunDir ),
300  tmpPath,
301  collEnt->resc_hier,
302  getDefDirMode() );
303  if ( status < 0 ) {
304  rodsLog(
305  LOG_ERROR,
306  "mkDirForFilePath failed in _rsStructFileBundle with status %d",
307  status );
308  free( collEnt );
309  return status;
310  }
311  }
312 
313  // =-=-=-=-=-=-=-
314  // add a link
315  status = link( collEnt->phyPath, tmpPath );
316  if ( status < 0 ) {
317  rodsLog(
318  LOG_ERROR,
319  "rsStructFileBundle: link error %s to %s. errno = %d",
320  collEnt->phyPath,
321  tmpPath,
322  errno );
323  rmLinkedFilesInUnixDir( phyBunDir );
324  rmdir( phyBunDir );
325  free( collEnt );
326  return UNIX_FILE_LINK_ERR - errno;
327  }
328  else {
329  rodsLog(
330  LOG_DEBUG,
331  "_rsStructFileBundle - LINK [%s] on resc [%s]",
332  collEnt->phyPath,
333  collEnt->resc_hier );
334  }
335  }
336  else {
337  // =-=-=-=-=-=-=-
338  // entry is a collection
339  if ( ( int ) strlen( collEnt->collName ) + 1 <= collLen ) {
340  free( collEnt );
341  collEnt = NULL;
342  continue;
343  }
344  snprintf( tmpPath, MAX_NAME_LEN, "%s/%s", phyBunDir, collEnt->collName + collLen );
345  status = mkFileDirR( rsComm, strlen( phyBunDir ), tmpPath, resc_hier.c_str(), getDefDirMode() );
346  if ( status < 0 ) {
347  rodsLog( LOG_ERROR, "mkFileDirR failed in _rsStructFileBundle with status %d", status );
348  free( collEnt );
349  return status;
350  }
351  } // else
352 
353  free( collEnt );
354  collEnt = NULL;
355 
356  } // while
357 
358  // =-=-=-=-=-=-=-
359  // clean up key vals and close the collection
360  clearKeyVal( &collInp.condInput );
361  rsCloseCollection( rsComm, &handleInx );
362 
363  // =-=-=-=-=-=-=-
364  // call the helper function to do the actual bundling
365  status = phyBundle( rsComm, L1desc[l1descInx].dataObjInfo, phyBunDir,
366  collInp.collName, structFileBundleInp->oprType ); // JMC - backport 4643
367 
368  int savedStatus = 0;
369  if ( status < 0 ) {
370  rodsLog( LOG_ERROR, "rsStructFileBundle: phyBundle of %s error. stat = %d",
371  L1desc[ l1descInx ].dataObjInfo->objPath, status );
372  L1desc[ l1descInx ].bytesWritten = 0;
373  savedStatus = status;
374  }
375  else {
376  // mark it was written so the size would be adjusted
377  L1desc[ l1descInx ].bytesWritten = 1;
378  }
379 
380  // =-=-=-=-=-=-=-
381  // clean up after the bundle directory
382  rmLinkedFilesInUnixDir( phyBunDir );
383  rmdir( phyBunDir );
384 
385  dataObjCloseInp.l1descInx = l1descInx;
386  status = rsDataObjClose( rsComm, &dataObjCloseInp );
387  if ( status >= 0 ) {
388  return savedStatus;
389  }
390 
391  return status;
392 }
393 
394 int
396  structFileExtAndRegInp_t *structFileBundleInp, rodsServerHost_t *rodsServerHost ) {
397  int status;
398 
399  if ( rodsServerHost == NULL ) {
401  "remoteStructFileBundle: Invalid rodsServerHost" );
403  }
404 
405  if ( ( status = svrToSvrConnect( rsComm, rodsServerHost ) ) < 0 ) {
406  return status;
407  }
408 
409  status = rcStructFileBundle( rodsServerHost->conn, structFileBundleInp );
410  return status;
411 }
rodsLog
void rodsLog(int level, const char *formatStr,...)
Definition: rodsLog.cpp:86
getValByKey
char * getValByKey(const keyValPair_t *condInput, const char *keyWord)
Definition: rcMisc.cpp:675
DataObjInp::objPath
char objPath[(1024+64)]
Definition: dataObjInpOut.h:66
OpenedDataObjInp
Definition: dataObjInpOut.h:104
L1desc
l1desc_t L1desc[1026]
Definition: irods_server_globals.cpp:29
RESC_NAME_KW
#define RESC_NAME_KW
Definition: rodsKeyWdDef.h:19
NULL
#define NULL
Definition: rodsDef.h:70
rsComm_t
Definition: rcConnect.h:145
getDefDirMode
int getDefDirMode()
Definition: physPath.cpp:1070
rsReadCollection
int rsReadCollection(rsComm_t *rsComm, int *handleInxInp, collEnt_t **collEnt)
Definition: rsReadCollection.cpp:15
addKeyVal
int addKeyVal(keyValPair_t *condInput, const char *keyWord, const char *value)
Definition: rcMisc.cpp:789
rsOpenCollection
int rsOpenCollection(rsComm_t *rsComm, collInp_t *openCollInp)
Definition: rsOpenCollection.cpp:16
DataObjInp::openFlags
int openFlags
Definition: dataObjInpOut.h:68
CollInp
Definition: dataObjInpOut.h:157
rsDataObjOpen.hpp
rodsServerHost::conn
rcComm_t * conn
Definition: rodsConnect.h:64
rsDataObjCreate.hpp
rsChkObjPermAndStat
int rsChkObjPermAndStat(rsComm_t *rsComm, chkObjPermAndStat_t *chkObjPermAndStatInp)
Definition: rsChkObjPermAndStat.cpp:23
irods_file_object.hpp
irods_stacktrace.hpp
rsDataObjOpen
int rsDataObjOpen(rsComm_t *rsComm, dataObjInp_t *dataObjInp)
Definition: rsDataObjOpen.cpp:45
OpenedDataObjInp::l1descInx
int l1descInx
Definition: dataObjInpOut.h:105
rsDataObjCreate
int rsDataObjCreate(rsComm_t *rsComm, dataObjInp_t *dataObjInp)
Definition: rsDataObjCreate.cpp:77
CollEnt::collName
char * collName
Definition: miscUtil.h:119
StructFileExtAndRegInp
Definition: structFileExtAndReg.h:7
REMOTE_HOST
#define REMOTE_HOST
Definition: rodsConnect.h:45
rcStructFileBundle
int rcStructFileBundle(rcComm_t *conn, structFileExtAndRegInp_t *structFileBundleInp)
Definition: rcStructFileBundle.cpp:23
rcMisc.h
_rsStructFileBundle
int _rsStructFileBundle(rsComm_t *rsComm, structFileExtAndRegInp_t *structFileBundleInp)
Definition: rsStructFileBundle.cpp:97
rsPhyBundleColl.hpp
rsOpenCollection.hpp
l1desc::dataObjInfo
dataObjInfo_t * dataObjInfo
Definition: objDesc.hpp:42
rsChkObjPermAndStat.hpp
DataObjInfo::rescHier
char rescHier[(1024+64)]
Definition: objInfo.h:132
LOCAL_HOST
#define LOCAL_HOST
Definition: rodsConnect.h:44
UNIX_FILE_LINK_ERR
@ UNIX_FILE_LINK_ERR
Definition: rodsErrorTable.h:320
StructFileExtAndRegInp::objPath
char objPath[(1024+64)]
Definition: structFileExtAndReg.h:8
NO_TRIM_REPL_FG
#define NO_TRIM_REPL_FG
Definition: miscUtil.h:94
irods::resource_redirect
error resource_redirect(const std::string &, rsComm_t *, dataObjInp_t *, std::string &, rodsServerHost_t *&, int &, dataObjInfo_t **_data_obj_info=0)
Definition: irods_resource_redirect.cpp:786
rsUnbunAndRegPhyBunfile.hpp
PASSMSG
#define PASSMSG(message_, prev_error_)
Definition: irods_error.hpp:119
rcGlobalExtern.h
LOG_ERROR
#define LOG_ERROR
Definition: rodsLog.h:43
CollInp::flags
int flags
Definition: dataObjInpOut.h:159
rmLinkedFilesInUnixDir
int rmLinkedFilesInUnixDir(char *phyBunDir)
Definition: rsUnbunAndRegPhyBunfile.cpp:416
irods_resource_redirect.hpp
phyBundle
int phyBundle(rsComm_t *rsComm, dataObjInfo_t *dataObjInfo, char *phyBunDir, char *collection, int oprType)
Definition: rsPhyBundleColl.cpp:549
rsReadCollection.hpp
remoteStructFileBundle
int remoteStructFileBundle(rsComm_t *rsComm, structFileExtAndRegInp_t *structFileBundleInp, rodsServerHost_t *rodsServerHost)
Definition: rsStructFileBundle.cpp:395
DATA_TYPE_KW
#define DATA_TYPE_KW
Definition: rodsKeyWdDef.h:23
StructFileExtAndRegInp::collection
char collection[(1024+64)]
Definition: structFileExtAndReg.h:9
rsCloseCollection
int rsCloseCollection(rsComm_t *rsComm, int *handleInxInp)
Definition: rsCloseCollection.cpp:14
irods::error::code
long long code() const
Definition: irods_error.cpp:194
RESC_HIER_STR_KW
#define RESC_HIER_STR_KW
Definition: rodsKeyWdDef.h:225
chkObjPermAndStat_t::objPath
char objPath[(1024+64)]
Definition: chkObjPermAndStat.h:10
LOG_DEBUG
#define LOG_DEBUG
Definition: rodsLog.h:23
CollEnt::phyPath
char * phyPath
Definition: miscUtil.h:127
ADD_TO_TAR_OPR
#define ADD_TO_TAR_OPR
Definition: syncMountedColl.h:13
CollEnt
Definition: miscUtil.h:113
rsDataObjClose
int rsDataObjClose(rsComm_t *rsComm, openedDataObjInp_t *dataObjCloseInp)
Definition: rsDataObjClose.cpp:56
REMOTE_CREATE
#define REMOTE_CREATE
Definition: getRemoteZoneResc.h:4
DataObjInp
Definition: dataObjInpOut.h:65
rsDataObjClose.hpp
MAX_NAME_LEN
#define MAX_NAME_LEN
Definition: rodsDef.h:61
ZIP_DT_STR
#define ZIP_DT_STR
Definition: objInfo.h:31
SYS_INVALID_SERVER_HOST
@ SYS_INVALID_SERVER_HOST
Definition: rodsErrorTable.h:89
CollInp::condInput
keyValPair_t condInput
Definition: dataObjInpOut.h:161
INCLUDE_CONDINPUT_IN_QUERY
#define INCLUDE_CONDINPUT_IN_QUERY
Definition: miscUtil.h:95
svrToSvrConnect
int svrToSvrConnect(rsComm_t *rsComm, rodsServerHost_t *rodsServerHost)
Definition: miscServerFunct.cpp:106
irods.pypyodbc.status
status
Definition: pypyodbc.py:467
StructFileExtAndRegInp::condInput
keyValPair_t condInput
Definition: structFileExtAndReg.h:12
physPath.hpp
irods::log
void log(const error &)
Definition: irods_log.cpp:13
StructFileExtAndRegInp::oprType
int oprType
Definition: structFileExtAndReg.h:10
LOG_NOTICE
#define LOG_NOTICE
Definition: rodsLog.h:33
RECUR_QUERY_FG
#define RECUR_QUERY_FG
Definition: miscUtil.h:92
irods::error
Definition: irods_error.hpp:23
miscServerFunct.hpp
DATA_OBJ_T
@ DATA_OBJ_T
Definition: rodsType.h:38
CHK_COLL_FOR_BUNDLE_OPR
#define CHK_COLL_FOR_BUNDLE_OPR
Definition: chkObjPermAndStat.h:7
CollEnt::dataName
char * dataName
Definition: miscUtil.h:120
mkFileDirR
int mkFileDirR(rsComm_t *rsComm, size_t startDirLen, const std::string &destDir, const std::string &hier, int mode)
Definition: fileOpr.cpp:147
rodsServerHost
Definition: rodsConnect.h:62
DataObjInfo::rescName
char rescName[64]
Definition: objInfo.h:131
apiHeaderAll.h
l1desc::bytesWritten
rodsLong_t bytesWritten
Definition: objDesc.hpp:45
VERY_LONG_METADATA_FG
#define VERY_LONG_METADATA_FG
Definition: miscUtil.h:91
rsStructFileBundle.hpp
getAndConnRemoteZone
int getAndConnRemoteZone(rsComm_t *rsComm, dataObjInp_t *dataObjInp, rodsServerHost_t **rodsServerHost, char *remotZoneOpr)
Definition: rodsConnect.cpp:784
generate_iadmin_commands_for_41_to_42_upgrade.host
host
Definition: generate_iadmin_commands_for_41_to_42_upgrade.py:23
CollEnt::objType
objType_t objType
Definition: miscUtil.h:114
CollInp::collName
char collName[(1024+64)]
Definition: dataObjInpOut.h:158
createPhyBundleDir
int createPhyBundleDir(rsComm_t *rsComm, char *bunFilePath, char *outPhyBundleDir, char *hier)
Definition: rsPhyBundleColl.cpp:681
chkObjPermAndStat_t::flags
int flags
Definition: chkObjPermAndStat.h:12
RESC_ID_KW
#define RESC_ID_KW
Definition: rodsKeyWdDef.h:157
rsStructFileBundle
int rsStructFileBundle(rsComm_t *rsComm, structFileExtAndRegInp_t *structFileBundleInp)
Definition: rsStructFileBundle.cpp:33
rstrcpy
char * rstrcpy(char *dest, const char *src, int maxLen)
Definition: stringOpr.cpp:51
dataObjOpr.hpp
DataObjInp::condInput
keyValPair_t condInput
Definition: dataObjInpOut.h:74
clearKeyVal
int clearKeyVal(keyValPair_t *condInput)
Definition: rcMisc.cpp:1047
mkDirForFilePath
int mkDirForFilePath(rsComm_t *rsComm, size_t startDirLen, const std::string &filePath, const std::string &hier, int mode)
Definition: fileOpr.cpp:120
irods::error::ok
bool ok()
Definition: irods_error.cpp:258
CollEnt::resc_hier
char * resc_hier
Definition: miscUtil.h:126
chkObjPermAndStat_t::condInput
keyValPair_t condInput
Definition: chkObjPermAndStat.h:14
irods::CREATE_OPERATION
const std::string CREATE_OPERATION("CREATE")
rsCloseCollection.hpp
replKeyVal
int replKeyVal(const keyValPair_t *srcCondInput, keyValPair_t *destCondInput)
Definition: rcMisc.cpp:739
PRESERVE_COLL_PATH
#define PRESERVE_COLL_PATH
Definition: syncMountedColl.h:14
irods_log.hpp
objMetaOpr.hpp
chkObjPermAndStat_t
Definition: chkObjPermAndStat.h:9
copyKeyVal
int copyKeyVal(const keyValPair_t *srcCondInput, keyValPair_t *destCondInput)
Definition: rcMisc.cpp:751