# HG changeset patch # User Paul Boddie # Date 1634501680 -7200 # Node ID d8a636f6f728569ac122da0f4c53cb6c5f4af648 # Parent bda5a4ba1e70f5fe5d69d6cc30fd0d690aa43a49 Consolidated provider registration. diff -r bda5a4ba1e70 -r d8a636f6f728 libfsserver/lib/files/file_object_registry.cc --- a/libfsserver/lib/files/file_object_registry.cc Sun Oct 17 22:10:09 2021 +0200 +++ b/libfsserver/lib/files/file_object_registry.cc Sun Oct 17 22:14:40 2021 +0200 @@ -62,10 +62,6 @@ return err; *provider = new DirectoryProvider(fileid, this, accessor); - - /* Register the provider. */ - - set(fileid, *provider); return L4_EOK; } @@ -86,10 +82,6 @@ PageMapper *mapper = new PageMapper(accessor, _pages); *provider = new FileProvider(fileid, get_flags(flags), this, mapper); - - /* Register the provider. */ - - set(fileid, *provider); return L4_EOK; } @@ -100,12 +92,20 @@ fileid_t fileid, Provider **provider) { + long err = -L4_EIO; + if (opening->accessing_directory(path, flags, fileid)) - return make_directory_provider(opening, path, flags, fileid, provider); + err = make_directory_provider(opening, path, flags, fileid, provider); else if (opening->accessing_file(path, flags, fileid)) - return make_file_provider(opening, path, flags, fileid, provider); - else - return -L4_EIO; + err = make_file_provider(opening, path, flags, fileid, provider); + + if (err) + return err; + + /* Register the provider. */ + + set(fileid, *provider); + return L4_EOK; }