initial commit
[assman] / src / mod_path.c
1 #include <stdlib.h>
2
3 #include "assman_impl.h"
4
5
6 static void *fop_open(const char *fname, void *udata);
7 static void fop_close(void *fp, void *udata);
8 static long fop_seek(void *fp, long offs, int whence, void *udata);
9 static long fop_read(void *fp, void *buf, long size, void *udata);
10
11
12 struct ass_fileops *ass_alloc_path(const char *path)
13 {
14         char *p;
15         struct ass_fileops *fop;
16
17         if(!(fop = malloc(sizeof *fop))) {
18                 return 0;
19         }
20         if(!(p = malloc(strlen(path) + 1))) {
21                 free(fop);
22                 return 0;
23         }
24         fop->udata = p;
25
26         while(*path) {
27                 *p++ = *path++;
28         }
29         while(p > fop->udata && (p[-1] == '/' || isspace(p[-1]))) p--;
30         *p = 0;
31
32         fop->open = fop_open;
33         fop->close = fop_close;
34         fop->seek = fop_seek;
35         fop->read = fop_read;
36         return fop;
37 }
38
39 static void *fop_open(const char *fname, void *udata)
40 {
41 }
42
43 static void fop_close(void *fp, void *udata);
44 static long fop_seek(void *fp, long offs, int whence, void *udata);
45 static long fop_read(void *fp, void *buf, long size, void *udata);