aboutsummaryrefslogtreecommitdiff
path: root/sys/libn/io.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/libn/io.c')
-rw-r--r--sys/libn/io.c28
1 files changed, 25 insertions, 3 deletions
diff --git a/sys/libn/io.c b/sys/libn/io.c
index f0d270e..ff4fe67 100644
--- a/sys/libn/io.c
+++ b/sys/libn/io.c
@@ -40,21 +40,37 @@ error
return io·putbyte((io·Stream *)wtr, c);
}
-static
+static
int
·puts(void *wtr, string s)
{
return io·putstring((io·Stream *)wtr, s);
}
+static
+int
+·seek(void *skr, long off, enum SeekPos whence)
+{
+ return io·seek((io·Stream *)skr, off, whence);
+}
+
+static
+long
+·tell(void *skr)
+{
+ return io·tell((io·Stream *)skr);
+}
+
/* actual interfaces */
io·Reader sys·Reader = (io·Reader){ ·read };
+io·Seeker sys·Seeker = (io·Seeker){ ·seek, ·tell };
io·Peeker sys·Peeker = (io·Peeker){ ·get, ·unget };
-io·FullReader sys·FullReader = (io·FullReader){ ·read, ·get, ·unget };
+io·SeekReader sys·SeekReader = (io·SeekReader){ ·seek, ·tell, ·read };
+io·PeekReader sys·PeekReader = (io·PeekReader){ ·read, ·get, ·unget };
io·Writer sys·Writer = (io·Writer){ ·write };
io·Putter sys·Putter = (io·Putter){ ·put, ·puts };
-io·FullWriter sys·FullWriter = (io·FullWriter){ ·write, ·put, ·puts };
+io·PutWriter sys·PutWriter = (io·PutWriter){ ·write, ·put, ·puts };
io·ReadWriter sys·ReadWriter = (io·ReadWriter){ ·read, ·write };
@@ -152,3 +168,9 @@ io·seek(io·Stream *s, long off, enum SeekPos origin)
{
return fseek(s, off, origin);
}
+
+long
+io·tell(io·Stream *s)
+{
+ return ftell(s);
+}