aboutsummaryrefslogtreecommitdiff
path: root/include/libn.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/libn.h')
-rw-r--r--include/libn.h48
1 files changed, 30 insertions, 18 deletions
diff --git a/include/libn.h b/include/libn.h
index 5d557ce..2cf29c7 100644
--- a/include/libn.h
+++ b/include/libn.h
@@ -57,7 +57,7 @@ typedef struct mem·Allocator {
void *(*alloc)(void *heap, uint n, ulong size);
void (*free)(void *heap, void *ptr);
} mem·Allocator;
-extern mem·Allocator sys·Memory;
+extern mem·Allocator sys·Memory;
typedef struct mem·Reallocator {
void *(*alloc)(void *iface, uint n, ulong size);
@@ -159,6 +159,7 @@ enum SeekPos
seek·end = SEEK_END
};
+/* XXX: change casing */
enum
{
ReadOK = R_OK,
@@ -180,6 +181,7 @@ 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);
+long io·tell(io·Stream *s);
/* basic os helpers */
int os·exists(byte *path, int flag);
@@ -193,13 +195,6 @@ typedef struct io·Reader
} io·Reader;
extern io·Reader sys·Reader;
-/*
-typedef struct io·LineReader
-{
- int (*readln)(void*, int n, void *buf);
-} io·LineReader;
-*/
-
typedef struct io·Peeker
{
byte (*get)(void*);
@@ -207,12 +202,26 @@ typedef struct io·Peeker
} io·Peeker;
extern io·Peeker sys·Peeker;
-typedef struct io·FullReader
+typedef struct io·Seeker
+{
+ int (*seek)(void *skr, long off, enum SeekPos whence);
+ long (*tell)(void *skr);
+} io·Seeker;
+extern io·Seeker sys·Seeker;
+
+typedef struct io·SeekReader
+{
+ io·Seeker;
+ io·Reader;
+} io·SeekReader;
+extern io·SeekReader sys·SeekReader;
+
+typedef struct io·PeekReader
{
io·Reader;
io·Peeker;
-} io·FullReader;
-extern io·FullReader sys·FullReader;
+} io·PeekReader;
+extern io·PeekReader sys·PeekReader;
typedef struct io·Writer
{
@@ -227,12 +236,12 @@ typedef struct io·Putter
} io·Putter;
extern io·Putter sys·Putter;
-typedef struct io·FullWriter
+typedef struct io·PutWriter
{
io·Writer;
io·Putter;
-} io·FullWriter;
-extern io·FullWriter sys·FullWriter;
+} io·PutWriter;
+extern io·PutWriter sys·PutWriter;
typedef struct io·ReadWriter
{
@@ -348,13 +357,15 @@ typedef void gz·Stream;
/* interfaces */
extern io·Reader gz·Reader;
extern io·Peeker gz·Peeker;
-extern io·FullReader gz·FullReader;
+extern io·Seeker gz·Seeker;
+extern io·SeekReader gz·SeekReader;
+extern io·PeekReader gz·PeekReader;
extern io·Writer gz·Writer;
extern io·Putter gz·Putter;
-extern io·FullWriter gz·FullWriter;
+extern io·PutWriter gz·PutWriter;
extern io·ReadWriter gz·ReadWriter;
-
+
gz·Stream *gz·open(byte *path, byte *mode);
error gz·close(gz·Stream* s);
int gz·read(gz·Stream *s, int sz, int n, void* buf);
@@ -366,7 +377,8 @@ error gz·putbyte(gz·Stream *s, byte str);
error gz·putstring(gz·Stream *s, byte *str);
int gz·printf(gz·Stream *s, byte *fmt, ...);
error gz·flush(gz·Stream *s);
-vlong gz·seek(gz·Stream *s, long off, enum SeekPos whence);
+int gz·seek(gz·Stream *s, long off, enum SeekPos whence);
+long gz·tell(gz·Stream *s);
// -----------------------------------------------------------------------------
// libjson