rostring: renamed funcs to mixpsrv_*(), added close and str is copied now
[libmixpsrv.git] / libmixpsrv / default_ops.c
blobe9c262320d252f8796d1e4ffbdea829d9733fc2d
2 #include <errno.h>
3 #include <stdio.h>
4 #include <time.h>
5 #include <9p-mixp/mixp.h>
6 #include <9p-mixpsrv/types.h>
7 #include <9p-mixpsrv/default_ops.h>
8 #include <9p-mixpsrv/call_ops.h>
10 /* Macros */
11 #define QID(t, i) (((long long)((t)&0xFF)<<32)|((i)&0xFFFFFFFF))
13 int mixpsrv_default_ops_open(MIXPSRV_FILE_HANDLE* f, long mode)
15 /* if we don't have an own open() function, this is the default */
16 if((mode&3) == P9_OEXEC)
18 printf("1\n");
19 return -EPERM;
21 if((mode&3) != P9_OREAD && !(f->perm & 0200)) {
22 printf("2\n");
23 return -EPERM;
25 // if((mode&3) != P9_OWRITE && !(f->tab.perm & 0400)) {
26 // printf("3\n");
27 // return -EPERM;
28 // }
29 if((mode&~(3|P9_OAPPEND|P9_OTRUNC))) {
30 printf("4\n");
31 return -EPERM;
33 return 0;
36 long mixpsrv_default_ops_read(MIXPSRV_FILE_HANDLE* f, long offset, size_t size, void* buffer)
38 printf("mixp_defaultops_read() no data.\n");
39 return 0;
42 long mixpsrv_default_ops_write(MIXPSRV_FILE_HANDLE* f, long offset, size_t size, void* buffer)
44 fprintf(stderr,"mixpsrv_default_ops_write() offset=%ld size=%uld\n", offset, size);
45 return -EPERM;
48 long mixpsrv_default_ops_size(MIXPSRV_FILE_HANDLE* f)
50 #ifdef _DEBUG
51 fprintf(stderr,"mixpsrv_default_ops_size(): zero .. name=\"%s\"\n", f->name);
52 #endif
53 return 0;
56 int mixpsrv_default_ops_close(MIXPSRV_FILE_HANDLE* f)
58 fprintf(stderr,"mixpsrv_default_ops_close(): close unsupported\n");
59 return 0;
62 int mixpsrv_default_ops_stat(MIXPSRV_FILE_HANDLE* f, MIXP_STAT *s)
64 s->type = 0;
65 s->dev = 0;
66 s->qid.path = QID(f->type, f->id);
67 s->qid.version = 0;
68 s->qid.type = f->qtype;
69 s->mode = f->perm;
70 s->atime = time(NULL);
71 s->mtime = time(NULL);
72 s->name = (f->name ? f->name : "???");
73 s->uid = s->gid = s->muid = "INCOGNITO";
74 s->length = mixpsrv_call_ops_size(f);
76 return 1;
79 MIXPSRV_FILE_OPS mixp_default_fileops = {
80 .open = mixpsrv_default_ops_open,
81 .read = mixpsrv_default_ops_read,
82 .write = mixpsrv_default_ops_write,
83 .size = mixpsrv_default_ops_size,
84 .stat = mixpsrv_default_ops_stat,
85 .classname = "default"