X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=visor;a=blobdiff_plain;f=libvisor%2Finclude%2Fvisor.h;h=a9b3ec78f9e3035249d0f892534a3848a3bd057d;hp=55dcc48630639aefd5da934c9b0e0c86645978cb;hb=a4536cf08230dba14f221b661abd7804fcc1ebbc;hpb=a3d913263bd55389a60c8db96d1ea1fc11acf178 diff --git a/libvisor/include/visor.h b/libvisor/include/visor.h index 55dcc48..a9b3ec7 100644 --- a/libvisor/include/visor.h +++ b/libvisor/include/visor.h @@ -26,8 +26,9 @@ struct visor; struct vi_buffer; struct vi_span { - vi_addr beg; + vi_addr start; unsigned long size; + int src; }; enum vi_motdir { @@ -68,8 +69,14 @@ struct vi_alloc { void *(*realloc)(void*, unsigned long); /* can be null, will use malloc/free */ }; +/* open flags (same as POSIX O_*) */ +enum { VI_RDONLY, VI_WRONLY, VI_RDWR, VI_CREAT = 0x100 }; +/* seek origin (same as C SEEK_*) */ +enum { VI_SEEK_SET, VI_SEEK_CUR, VI_SEEK_END }; + + struct vi_fileops { - vi_file *(*open)(const char *path); + vi_file *(*open)(const char *path, unsigned int flags); long (*size)(vi_file *file); void (*close)(vi_file *file); void *(*map)(vi_file *file); @@ -135,6 +142,10 @@ int vi_buf_read(struct vi_buffer *vb, const char *path); int vi_buf_write(struct vi_buffer *vb, const char *path); long vi_buf_size(struct vi_buffer *vb); +/* find the span which corresponds to the specified text position */ +struct vi_span *vi_buf_find_span(struct vi_buffer *vb, vi_addr at); +const char *vi_buf_span_text(struct vi_buffer *vb, struct vi_span *span); + void vi_buf_ins_begin(struct vi_buffer *vb, vi_motion mot); void vi_buf_insert(struct vi_buffer *vb, char *s); void vi_buf_ins_end(struct vi_buffer *vb);