1.1 --- a/libfsserver/include/fsserver/ext2_file_opener.h Fri Aug 06 19:30:20 2021 +0200
1.2 +++ b/libfsserver/include/fsserver/ext2_file_opener.h Fri Aug 06 19:32:06 2021 +0200
1.3 @@ -23,12 +23,19 @@
1.4
1.5 #include <ext2fs/ext2fs.h>
1.6
1.7 +#include <fsclient/file.h>
1.8 #include <fsserver/ext2_file_operations.h>
1.9 #include <fsserver/opener_resource.h>
1.10 #include <systypes/user.h>
1.11
1.12
1.13
1.14 +/* Forward declarations. */
1.15 +
1.16 +struct Ext2FileOpenerDir;
1.17 +
1.18 +
1.19 +
1.20 /* Support for providing access to files. */
1.21
1.22 class Ext2FileOpener : public OpenerResource
1.23 @@ -43,6 +50,10 @@
1.24
1.25 virtual bool accessing_file(const char *path, flags_t flags, fileid_t fileid);
1.26
1.27 + /* Convenience methods obtaining different pager types. */
1.28 +
1.29 + virtual long get_directory(const char *path, flags_t flags, fileid_t fileid, offset_t *size, l4_cap_idx_t *cap);
1.30 +
1.31 public:
1.32 explicit Ext2FileOpener(FilePaging *paging, Ext2FileOperations *ops, user_t user)
1.33 : OpenerResource(paging), _ops(ops), _user(user)
1.34 @@ -56,6 +67,24 @@
1.35 virtual long get_fileid(const char *path, flags_t flags, fileid_t *fileid);
1.36
1.37 virtual long make_accessor(const char *path, flags_t flags, fileid_t fileid, Accessor **accessor);
1.38 +
1.39 + /* Helper methods. */
1.40 +
1.41 + void read_directory(fileid_t fileid, file_t *writer);
1.42 +
1.43 + int write_directory_entry(struct Ext2FileOpenerDir *dir);
1.44 +};
1.45 +
1.46 +
1.47 +
1.48 +/* Helper structures. */
1.49 +
1.50 +struct Ext2FileOpenerDir
1.51 +{
1.52 + Ext2FileOpener *opener;
1.53 + file_t *writer;
1.54 + struct ext2_dir_entry *entry;
1.55 + long offset;
1.56 };
1.57
1.58 // vim: tabstop=4 expandtab shiftwidth=4