src/server/daemon/vfs.c

changeset 59
ab25c0a231d0
parent 58
66c22e54aa90
child 63
66442f81f823
equal deleted inserted replaced
58:66c22e54aa90 59:ab25c0a231d0
30 #include <stdlib.h> 30 #include <stdlib.h>
31 #include <unistd.h> 31 #include <unistd.h>
32 #include <sys/types.h> 32 #include <sys/types.h>
33 33
34 #include "../util/pool.h" 34 #include "../util/pool.h"
35 #include "../ucx/map.h"
35 #include "vfs.h" 36 #include "vfs.h"
37
38 static UcxMap *vfs_map;
36 39
37 static VFS_IO sys_file_io = { 40 static VFS_IO sys_file_io = {
38 sys_file_read, 41 sys_file_read,
39 sys_file_write, 42 sys_file_write,
40 sys_file_close 43 sys_file_close
42 45
43 static VFS_DIRIO sys_dir_io = { 46 static VFS_DIRIO sys_dir_io = {
44 sys_dir_read, 47 sys_dir_read,
45 sys_dir_close 48 sys_dir_close
46 }; 49 };
50
51 int vfs_init() {
52 vfs_map = ucx_map_new(16);
53 if(!vfs_map) {
54 return -1;
55 }
56 return 0;
57 }
58
59 void vfs_add(char *name, VFS *vfs) {
60 if(!vfs_map) {
61 vfs_init();
62 }
63 ucx_map_cstr_put(vfs_map, name, vfs);
64 }
47 65
48 VFSContext* vfs_request_context(Session *sn, Request *rq) { 66 VFSContext* vfs_request_context(Session *sn, Request *rq) {
49 VFSContext *ctx = pool_malloc(sn->pool, sizeof(VFSContext)); 67 VFSContext *ctx = pool_malloc(sn->pool, sizeof(VFSContext));
50 ctx->sn = sn; 68 ctx->sn = sn;
51 ctx->rq = rq; 69 ctx->rq = rq;

mercurial