// get the user-supplied inode data for creating a directory int fskit_run_user_mkdir( struct fskit_core* core, char const* path, struct fskit_entry* parent, struct fskit_entry* fent, mode_t mode, void* cls, void** inode_data ) { int rc = 0; int cbrc = 0; struct fskit_route_dispatch_args dargs; char name[FSKIT_FILESYSTEM_NAMEMAX+1]; memset( name, 0, FSKIT_FILESYSTEM_NAMEMAX+1 ); fskit_basename( path, name ); fskit_route_mkdir_args( &dargs, parent, name, mode, cls ); rc = fskit_route_call_mkdir( core, path, fent, &dargs, &cbrc ); if( rc == -EPERM || rc == -ENOSYS ) { // no routes *inode_data = NULL; return 0; } else if( cbrc != 0 ) { // callback failed return cbrc; } else { // callback succeded *inode_data = dargs.inode_data; return 0; } }
// get the user-supplied inode data for creating a directory int fskit_run_user_mkdir( struct fskit_core* core, char const* path, struct fskit_entry* parent, struct fskit_entry* fent, mode_t mode, void** inode_data ) { int rc = 0; int cbrc = 0; struct fskit_route_dispatch_args dargs; fskit_route_mkdir_args( &dargs, parent, mode ); rc = fskit_route_call_mkdir( core, path, fent, &dargs, &cbrc ); if( rc == -EPERM || rc == -ENOSYS ) { // no routes *inode_data = NULL; return 0; } else if( cbrc != 0 ) { // callback failed return cbrc; } else { // callback succeded *inode_data = dargs.inode_data; return 0; } }