int main (int argc, char **argv) { irodsOper.getattr = irodsGetattr; irodsOper.readlink = irodsReadlink; irodsOper.readdir = irodsReaddir; irodsOper.mknod = irodsMknod; irodsOper.mkdir = irodsMkdir; irodsOper.symlink = irodsSymlink; irodsOper.unlink = irodsUnlink; irodsOper.rmdir = irodsRmdir; irodsOper.rename = irodsRename; irodsOper.link = irodsLink; irodsOper.chmod = irodsChmod; irodsOper.chown = irodsChown; irodsOper.truncate = irodsTruncate; irodsOper.utimens = irodsUtimens; irodsOper.open = irodsOpen; irodsOper.read = irodsRead; irodsOper.write = irodsWrite; irodsOper.statfs = irodsStatfs; irodsOper.release = irodsRelease; irodsOper.fsync = irodsFsync; irodsOper.flush = irodsFlush; int status; rodsArguments_t myRodsArgs; char *optStr; #ifdef __cplusplus bzero (&irodsOper, sizeof (irodsOper)); irodsOper.getattr = irodsGetattr; irodsOper.readlink = irodsReadlink; irodsOper.readdir = irodsReaddir; irodsOper.mknod = irodsMknod; irodsOper.mkdir = irodsMkdir; irodsOper.symlink = irodsSymlink; irodsOper.unlink = irodsUnlink; irodsOper.rmdir = irodsRmdir; irodsOper.rename = irodsRename; irodsOper.link = irodsLink; irodsOper.chmod = irodsChmod; irodsOper.chown = irodsChown; irodsOper.truncate = irodsTruncate; irodsOper.utimens = irodsUtimens; irodsOper.open = irodsOpen; irodsOper.read = irodsRead; irodsOper.write = irodsWrite; irodsOper.statfs = irodsStatfs; irodsOper.release = irodsRelease; irodsOper.fsync = irodsFsync; irodsOper.flush = irodsFlush; #endif optStr = "hdo:"; status = parseCmdLineOpt (argc, argv, optStr, 0, &myRodsArgs); if (status < 0) { printf("Use -h for help.\n"); exit (1); } if (myRodsArgs.help==True) { usage(); exit(0); } status = getRodsEnv (&MyRodsEnv); if (status < 0) { rodsLogError(LOG_ERROR, status, "main: getRodsEnv error. "); exit (1); } srandom((unsigned int) time(0) % getpid()); #ifdef CACHE_FILE_FOR_READ if (setAndMkFileCacheDir () < 0) exit (1); #endif initPathCache (); initIFuseDesc (); initConn(); initFileCache(); status = fuse_main (argc, argv, &irodsOper, NULL); disconnectAll (); if (status < 0) { exit (3); } else { exit(0); } }
int main (int argc, char **argv) { #ifdef ENABLE_TRACE irodsOper.getattr = traced_irodsGetattr; irodsOper.readlink = traced_irodsReadlink; irodsOper.readdir = traced_irodsReaddir; irodsOper.mknod = traced_irodsMknod; irodsOper.mkdir = traced_irodsMkdir; irodsOper.symlink = traced_irodsSymlink; irodsOper.unlink = traced_irodsUnlink; irodsOper.rmdir = traced_irodsRmdir; irodsOper.rename = traced_irodsRename; irodsOper.link = traced_irodsLink; irodsOper.chmod = traced_irodsChmod; irodsOper.chown = traced_irodsChown; irodsOper.truncate = traced_irodsTruncate; irodsOper.utimens = traced_irodsUtimens; irodsOper.open = traced_irodsOpen; irodsOper.read = traced_irodsRead; irodsOper.write = traced_irodsWrite; irodsOper.statfs = traced_irodsStatfs; irodsOper.release = traced_irodsRelease; irodsOper.fsync = traced_irodsFsync; irodsOper.flush = traced_irodsFlush; #else irodsOper.getattr = irodsGetattr; irodsOper.readlink = irodsReadlink; irodsOper.readdir = irodsReaddir; irodsOper.mknod = irodsMknod; irodsOper.mkdir = irodsMkdir; irodsOper.symlink = irodsSymlink; irodsOper.unlink = irodsUnlink; irodsOper.rmdir = irodsRmdir; irodsOper.rename = irodsRename; irodsOper.link = irodsLink; irodsOper.chmod = irodsChmod; irodsOper.chown = irodsChown; irodsOper.truncate = irodsTruncate; irodsOper.utimens = irodsUtimens; irodsOper.open = irodsOpen; irodsOper.read = irodsRead; irodsOper.write = irodsWrite; irodsOper.statfs = irodsStatfs; irodsOper.release = irodsRelease; irodsOper.fsync = irodsFsync; irodsOper.flush = irodsFlush; #endif // ENABLE_TRACE int status; rodsArguments_t myRodsArgs; char *optStr; int new_argc; char** new_argv; #ifdef __cplusplus #ifdef ENABLE_TRACE bzero (&irodsOper, sizeof (irodsOper)); irodsOper.getattr = traced_irodsGetattr; irodsOper.readlink = traced_irodsReadlink; irodsOper.readdir = traced_irodsReaddir; irodsOper.mknod = traced_irodsMknod; irodsOper.mkdir = traced_irodsMkdir; irodsOper.symlink = traced_irodsSymlink; irodsOper.unlink = traced_irodsUnlink; irodsOper.rmdir = traced_irodsRmdir; irodsOper.rename = traced_irodsRename; irodsOper.link = traced_irodsLink; irodsOper.chmod = traced_irodsChmod; irodsOper.chown = traced_irodsChown; irodsOper.truncate = traced_irodsTruncate; irodsOper.utimens = traced_irodsUtimens; irodsOper.open = traced_irodsOpen; irodsOper.read = traced_irodsRead; irodsOper.write = traced_irodsWrite; irodsOper.statfs = traced_irodsStatfs; irodsOper.release = traced_irodsRelease; irodsOper.fsync = traced_irodsFsync; irodsOper.flush = traced_irodsFlush; #else // no ENABLE_TRACE bzero (&irodsOper, sizeof (irodsOper)); irodsOper.getattr = irodsGetattr; irodsOper.readlink = irodsReadlink; irodsOper.readdir = irodsReaddir; irodsOper.mknod = irodsMknod; irodsOper.mkdir = irodsMkdir; irodsOper.symlink = irodsSymlink; irodsOper.unlink = irodsUnlink; irodsOper.rmdir = irodsRmdir; irodsOper.rename = irodsRename; irodsOper.link = irodsLink; irodsOper.chmod = irodsChmod; irodsOper.chown = irodsChown; irodsOper.truncate = irodsTruncate; irodsOper.utimens = irodsUtimens; irodsOper.open = irodsOpen; irodsOper.read = irodsRead; irodsOper.write = irodsWrite; irodsOper.statfs = irodsStatfs; irodsOper.release = irodsRelease; irodsOper.fsync = irodsFsync; irodsOper.flush = irodsFlush; #endif // ENABLE_TRACE #endif status = getRodsEnv (&MyRodsEnv); if (status < 0) { rodsLogError(LOG_ERROR, status, "main: getRodsEnv error. "); exit (1); } /* handle iRODS-FUSE specific command line options*/ status = parseFuseSpecificCmdLineOpt (argc, argv); if (status < 0) { printf("Use -h for help.\n"); exit (1); } status = makeCleanCmdLineOpt (argc, argv, &new_argc, &new_argv); argc = new_argc; argv = new_argv; optStr = "hdo:"; status = parseCmdLineOpt (argc, argv, optStr, 0, &myRodsArgs); if (status < 0) { printf("Use -h for help.\n"); exit (1); } if (myRodsArgs.help==True) { usage(); exit(0); } srandom((unsigned int) time(0) % getpid()); #ifdef CACHE_FILE_FOR_READ if (setAndMkFileCacheDir () < 0) exit (1); #endif initPathCache (); initIFuseDesc (); initConn(); initFileCache(); #ifdef ENABLE_PRELOAD // initialize preload initPreload (&MyPreloadConfig, &MyRodsEnv, &myRodsArgs); #endif #ifdef ENABLE_LAZY_UPLOAD // initialize Lazy Upload initLazyUpload (&MyLazyUploadConfig, &MyRodsEnv, &myRodsArgs); #endif #ifdef ENABLE_TRACE // start tracing status = trace_begin( NULL ); if( status != 0 ) { rodsLogError(LOG_ERROR, status, "main: trace_begin failed. "); exit(1); } #endif status = fuse_main (argc, argv, &irodsOper, NULL); #ifdef ENABLE_TRACE // stop tracing trace_end( NULL ); #endif /* release the preload command line options */ releaseCmdLineOpt (argc, argv); #ifdef ENABLE_PRELOAD // wait preload jobs waitPreloadJobs(); #endif #ifdef ENABLE_PRELOAD // uninitialize preload uninitPreload (&MyPreloadConfig); if (MyPreloadConfig.cachePath != NULL) { free(MyPreloadConfig.cachePath); } #endif #ifdef ENABLE_LAZY_UPLOAD // uninitialize lazy upload uninitLazyUpload (&MyLazyUploadConfig); if (MyLazyUploadConfig.bufferPath!=NULL) { free(MyLazyUploadConfig.bufferPath); } #endif disconnectAll (); if (status < 0) { exit (3); } else { exit(0); } }