aboutsummaryrefslogtreecommitdiff
path: root/include/base/io.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/base/io.h')
-rw-r--r--include/base/io.h37
1 files changed, 29 insertions, 8 deletions
diff --git a/include/base/io.h b/include/base/io.h
index 5d31282..22606ad 100644
--- a/include/base/io.h
+++ b/include/base/io.h
@@ -113,12 +113,12 @@ enum
struct io·Header
{
int state, fd, flag;
- struct{
- int in; /* negative number of bytes at end */
- int out; /* number of bytes at start */
- int ln; /* number of bytes after last readline */
- } off;
- intptr pos, cap; /* position in file, capacity of buffer */
+ int ilen; /* negative number of bytes at end of buffer */
+ int olen; /* number of bytes at start of buffer */
+ int line; /* number of bytes after last readline */
+ int runesz; /* number of bytes of last getrune */
+ int cap; /* size of buffer */
+ intptr pos; /* position in file */
uchar *b,*g,*e; /* start, good bytes, end of byte pointers */
};
@@ -128,8 +128,29 @@ struct io·Buffer
uchar bytes[io·BufLen+io·BufUngets];
};
-int bio·init(io·Buffer *io, int fd, int mode);
-int bio·initcap(io·Header *io, int fd, int mode, int cap, uchar *buf);
+int bio·open(char *path, int flag, io·Buffer *io);
+int bio·openfd(int fd, int flag, io·Buffer *io);
+int bio·close(io·Header *io);
+
+int bio·init(io·Buffer *io, int fd, int mode);
+int bio·initcap(io·Header *io, int fd, int mode, int cap, uchar *buf);
+
+int bio·flush(io·Header *io);
+intptr bio·read(io·Header *io, intptr len, void *buf);
+void *bio·readuntil(io·Header *io, int delim);
+intptr bio·write(io·Header *io, intptr len, void *buf);
+
+int bio·getc(io·Header *io);
+rune bio·getr(io·Header *io);
+
+int bio·ungetc(io·Header *io);
+rune bio·ungetr(io·Header *io);
+
+int bio·seek(io·Header *io, intptr offset, int whence, intptr *pos);
+intptr bio·offset(io·Header *io);
+
+int bio·print(io·Header *io, char *fmt, ...);
+int bio·vprint(io·Header *io, char *fmt, va_list args);
/* basic os helpers */
/* XXX: find a better location for this */