1.1 --- a/libfsserver/include/fsserver/opener_resource.h Mon Jul 12 00:27:07 2021 +0200
1.2 +++ b/libfsserver/include/fsserver/opener_resource.h Mon Jul 12 22:52:52 2021 +0200
1.3 @@ -49,7 +49,7 @@
1.4
1.5 /* Direct access methods. */
1.6
1.7 - Pager *open(const char *path, flags_t flags);
1.8 + long open(const char *path, flags_t flags, Pager **pager);
1.9
1.10 /* Opener interface methods. */
1.11
2.1 --- a/libfsserver/lib/files/opener_context_resource.cc Mon Jul 12 00:27:07 2021 +0200
2.2 +++ b/libfsserver/lib/files/opener_context_resource.cc Mon Jul 12 22:52:52 2021 +0200
2.3 @@ -73,7 +73,11 @@
2.4 if (path == NULL)
2.5 return -L4_EINVAL;
2.6
2.7 - Pager *pager = _opener->open(path, flags);
2.8 + Pager *pager;
2.9 + long err = _opener->open(path, flags, &pager);
2.10 +
2.11 + if (err)
2.12 + return err;
2.13
2.14 *size = pager->get_data_size();
2.15
3.1 --- a/libfsserver/lib/files/opener_resource.cc Mon Jul 12 00:27:07 2021 +0200
3.2 +++ b/libfsserver/lib/files/opener_resource.cc Mon Jul 12 22:52:52 2021 +0200
3.3 @@ -44,14 +44,17 @@
3.4
3.5 /* Return a pager object for the given path and flags. */
3.6
3.7 -Pager *OpenerResource::open(const char *path, flags_t flags)
3.8 +long OpenerResource::open(const char *path, flags_t flags, Pager **pager)
3.9 {
3.10 fileid_t fileid = get_fileid(path);
3.11
3.12 + /* Handle non-existent files. */
3.13 +
3.14 if (fileid == FILEID_INVALID)
3.15 - return NULL;
3.16 + return -L4_ENOENT;
3.17
3.18 - return get_pager(path, fileid, get_flags(flags));
3.19 + *pager = get_pager(path, fileid, get_flags(flags));
3.20 + return L4_EOK;
3.21 }
3.22
3.23