# HG changeset patch # User Paul Boddie # Date 1626123172 -7200 # Node ID b584c94d252f871d25721d8315eb1350d7e33cb9 # Parent fee8fdde3ae1aeffbed99e96cc784a3f72567c6a Changed the open method of the opener resource to return error information. diff -r fee8fdde3ae1 -r b584c94d252f libfsserver/include/fsserver/opener_resource.h --- a/libfsserver/include/fsserver/opener_resource.h Mon Jul 12 00:27:07 2021 +0200 +++ b/libfsserver/include/fsserver/opener_resource.h Mon Jul 12 22:52:52 2021 +0200 @@ -49,7 +49,7 @@ /* Direct access methods. */ - Pager *open(const char *path, flags_t flags); + long open(const char *path, flags_t flags, Pager **pager); /* Opener interface methods. */ diff -r fee8fdde3ae1 -r b584c94d252f libfsserver/lib/files/opener_context_resource.cc --- a/libfsserver/lib/files/opener_context_resource.cc Mon Jul 12 00:27:07 2021 +0200 +++ b/libfsserver/lib/files/opener_context_resource.cc Mon Jul 12 22:52:52 2021 +0200 @@ -73,7 +73,11 @@ if (path == NULL) return -L4_EINVAL; - Pager *pager = _opener->open(path, flags); + Pager *pager; + long err = _opener->open(path, flags, &pager); + + if (err) + return err; *size = pager->get_data_size(); diff -r fee8fdde3ae1 -r b584c94d252f libfsserver/lib/files/opener_resource.cc --- a/libfsserver/lib/files/opener_resource.cc Mon Jul 12 00:27:07 2021 +0200 +++ b/libfsserver/lib/files/opener_resource.cc Mon Jul 12 22:52:52 2021 +0200 @@ -44,14 +44,17 @@ /* Return a pager object for the given path and flags. */ -Pager *OpenerResource::open(const char *path, flags_t flags) +long OpenerResource::open(const char *path, flags_t flags, Pager **pager) { fileid_t fileid = get_fileid(path); + /* Handle non-existent files. */ + if (fileid == FILEID_INVALID) - return NULL; + return -L4_ENOENT; - return get_pager(path, fileid, get_flags(flags)); + *pager = get_pager(path, fileid, get_flags(flags)); + return L4_EOK; }