5 #define vi_malloc(s) vi->mm.malloc(s)
6 #define vi_free(p) vi->mm.free(p)
9 static const struct vi_alloc stdalloc = { malloc, free, realloc };
12 struct visor *vi_create(struct vi_alloc *mm)
17 if(!mm) mm = &stdalloc;
22 if(!(vi = mm->malloc(sizeof *vi))) {
25 memset(vi, 0, sizeof *vi);
31 void vi_destroy(struct visor *vi)
34 vi_delete_buf(vi, vi->buflist);
39 void vi_set_fileops(struct visor *vi, struct vi_fileops *fop)
44 struct vi_buffer *vi_new_buf(struct visor *vi, const char *path)
48 if(!(nb = vi_malloc(sizeof *nb))) {
49 vi_error(vi, "failed to allocate new buffer\n");
52 memset(nb, 0, sizeof *nb);
55 if(vi_buf_read(nb, path) == -1) {
62 struct vi_buffer *last = vi->buflist->prev;
64 nb->next = vi->buflist;
66 vi->buflist->prev = nb;
68 nb->next = nb->prev = nb;