aboutsummaryrefslogtreecommitdiff
path: root/include/base
diff options
context:
space:
mode:
Diffstat (limited to 'include/base')
-rw-r--r--include/base/gz.h2
-rw-r--r--include/base/io.h31
2 files changed, 16 insertions, 17 deletions
diff --git a/include/base/gz.h b/include/base/gz.h
index 3b3a830..ac241d3 100644
--- a/include/base/gz.h
+++ b/include/base/gz.h
@@ -25,5 +25,5 @@ int gz·putbyte(gz·Stream *s, byte str);
int gz·putstring(gz·Stream *s, byte *str);
int gz·printf(gz·Stream *s, byte *fmt, ...);
int gz·flush(gz·Stream *s);
-int gz·seek(gz·Stream *s, long off, enum SeekPos whence);
+int gz·seek(gz·Stream *s, long off, int whence);
long gz·tell(gz·Stream *s);
diff --git a/include/base/io.h b/include/base/io.h
index 5e0f1e0..5d31282 100644
--- a/include/base/io.h
+++ b/include/base/io.h
@@ -1,12 +1,5 @@
#pragma once
-enum SeekPos
-{
- seek·cur = SEEK_CUR,
- seek·set = SEEK_SET,
- seek·end = SEEK_END
-};
-
typedef struct io·Reader
{
int (*read)(void*, int sz, int n, void *buf);
@@ -22,7 +15,7 @@ extern io·Peeker sys·Peeker;
typedef struct io·Seeker
{
- int (*seek)(void *skr, long off, enum SeekPos whence);
+ int (*seek)(void *skr, long off, int whence);
long (*tell)(void *skr);
} io·Seeker;
extern io·Seeker sys·Seeker;
@@ -93,10 +86,11 @@ int io·putbyte(io·Stream *s, byte c);
int io·putstring(io·Stream *s, string str);
int io·write(io·Stream *s, int sz, int n, void *buf);
int io·flush(io·Stream *s);
-int io·seek(io·Stream *s, long off, enum SeekPos whence);
+int io·seek(io·Stream *s, long off, int whence);
long io·tell(io·Stream *s);
/* buffered i/o */
+typedef struct io·Header io·Header;
typedef struct io·Buffer io·Buffer;
#define iota(x) (1 << (x))
@@ -116,21 +110,26 @@ enum
};
#undef iota
-struct io·Buffer
+struct io·Header
{
- int state, id, flag;
+ int state, fd, flag;
struct{
- int in; /* negative number of bytes at end */
- int out; /* number of bytes at start */
- int line; /* number of bytes after last readline */
+ 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 */
uchar *b,*g,*e; /* start, good bytes, end of byte pointers */
- uchar bytes[];
+};
+
+struct io·Buffer
+{
+ io·Header;
+ uchar bytes[io·BufLen+io·BufUngets];
};
int bio·init(io·Buffer *io, int fd, int mode);
-int bio·initcap(io·Buffer *io, int fd, int mode, int cap);
+int bio·initcap(io·Header *io, int fd, int mode, int cap, uchar *buf);
/* basic os helpers */
/* XXX: find a better location for this */