moving fwd, very slowly
[visor] / libvisor / include / visor.h
index 73fb7dc..58b6ac4 100644 (file)
@@ -69,10 +69,16 @@ 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);
-       long (*size)(vi_file *file);
+       vi_file *(*open)(const char *path, unsigned int flags);
        void (*close)(vi_file *file);
+       long (*size)(vi_file *file);
        void *(*map)(vi_file *file);
        void (*unmap)(vi_file *file);
        long (*read)(vi_file *file, void *buf, long count);
@@ -136,8 +142,12 @@ 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);
+/* find the span which corresponds to the specified text position
+ * if soffs is not null, the relative offset of the specified address from the
+ * start of the span is stored there.
+ */
+struct vi_span *vi_buf_find_span(struct vi_buffer *vb, vi_addr at, vi_addr *soffs);
+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);