src/server/daemon/vfs.h

changeset 385
a1f4cb076d2f
parent 366
47bc686fafe4
child 415
d938228c382e
--- a/src/server/daemon/vfs.h	Tue Aug 13 22:14:32 2019 +0200
+++ b/src/server/daemon/vfs.h	Sat Sep 24 16:26:10 2022 +0200
@@ -32,10 +32,17 @@
 #include "../public/vfs.h"
 #include "acl.h"
 
+#include <ucx/string.h>
+
 #ifdef	__cplusplus
 extern "C" {
 #endif
 
+typedef struct VfsType {
+    vfs_init_func      init;
+    vfs_create_func    create;
+} VfsType;
+    
 typedef struct SysVFSDir {
     DIR           *dir;
     struct dirent *cur;
@@ -47,20 +54,25 @@
 };
 typedef enum VFSAioOp VFSAioOp;
     
-int vfs_init();
+int vfs_init(void);
+VfsType* vfs_get_type(scstr_t vfs_class);
 
-typedef int(*vfs_op_f)(VFSContext *, char *);
-typedef int(*sys_op_f)(VFSContext *, char *, SysACL *);
-int vfs_path_op(VFSContext *ctx, char *path, vfs_op_f op, uint32_t access);
+void* vfs_init_backend(ServerConfiguration *cfg, pool_handle_t *pool, VfsType *vfs_class, WSConfigNode *config, int *error);
+
+typedef int(*vfs_op_f)(VFSContext *, const char *);
+typedef int(*sys_op_f)(VFSContext *, const char *, SysACL *);
+int vfs_path_op(VFSContext *ctx, const char *path, vfs_op_f op, uint32_t access);
 
-SYS_FILE sys_vfs_open(VFSContext *ctx, char *path, int oflags);
-int sys_vfs_stat(VFSContext *ctx, char *path, struct stat *buf);
+SYS_FILE sys_vfs_open(VFSContext *ctx, const char *path, int oflags);
+int sys_vfs_stat(VFSContext *ctx, const char *path, struct stat *buf);
 int sys_vfs_fstat(VFSContext *ctx, SYS_FILE fd, struct stat *buf);
-VFS_DIR sys_vfs_opendir(VFSContext *ctx, char *path);
-int sys_vfs_mkdir(VFSContext *ctx, char *path);
-int sys_vfs_unlink(VFSContext *ctx, char *path);
+VFS_DIR sys_vfs_opendir(VFSContext *ctx, const char *path);
+VFS_DIR sys_vfs_fdopendir(VFSContext *ctx, SYS_FILE fd);
+int sys_vfs_mkdir(VFSContext *ctx, const char *path);
+int sys_vfs_unlink(VFSContext *ctx, const char *path);
+int sys_vfs_rmdir(VFSContext *ctx, const char *path);
 
-int sys_path_op(VFSContext *ctx, char *path, sys_op_f op);
+int sys_path_op(VFSContext *ctx, const char *path, sys_op_f op);
 int sys_acl_check(VFSContext *ctx, uint32_t access_mask, SysACL *externacl);
 void sys_set_error_status(VFSContext *ctx);
 
@@ -76,8 +88,9 @@
 int sys_dir_read(VFS_DIR dir, VFS_ENTRY *entry, int getstat);
 void sys_dir_close(VFS_DIR dir);
 
-int sys_mkdir(VFSContext *ctx, char *path, SysACL *sysacl);
-int sys_unlink(VFSContext *ctx, char *path, SysACL *sysacl);
+int sys_mkdir(VFSContext *ctx, const char *path, SysACL *sysacl);
+int sys_unlink(VFSContext *ctx, const char *path, SysACL *sysacl);
+int sys_rmdir(VFSContext *ctx, const char *path, SysACL *sysacl);
 
 void vfs_queue_aio(aiocb_s *aiocb, VFSAioOp op);
 

mercurial