From 83cd586ea304d6f6aa190c65ee796baaba1941a7 Mon Sep 17 00:00:00 2001 From: Nicholas Noll Date: Thu, 23 Sep 2021 12:35:04 -0700 Subject: feat: improved interface of map macro --- sys/libn/io.c | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) (limited to 'sys/libn/io.c') 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); +} -- cgit v1.2.1