#include #include // ----------------------------------------------------------------------- // Open/Close Stream* io·open(byte *name, byte *mode) { return fopen(name, mode); } int io·fd(Stream *s) { return fileno(s); } error io·stat(Stream *s, io·Stat *buf) { return fstat(fileno(s), buf); } error io·close(Stream *s) { return fclose(s); } // ----------------------------------------------------------------------- // Reading byte io·getbyte(Stream *s) { return fgetc(s); } error io·ungetbyte(Stream *s, byte c) { return ungetc(c, s); } int io·read(Stream *s, int sz, int n, void *buf) { return fread(buf, sz, n, s); } int io·readln(Stream *s, int n, byte* buf) { byte* b; b = fgets(buf, n+1, s); return strlen(buf); } // ----------------------------------------------------------------------- // Writing error io·putbyte(Stream *s, byte c) { return fputc(c, s); } int io·putstring(Stream *s, string str) { return fputs(str, s); } int io·write(Stream *s, int sz, int n, void *buf) { return fwrite(buf, sz, n, s); } int io·flush(Stream *s) { return fflush(s); } // ----------------------------------------------------------------------- // Seek int io·seek(Stream *s, long off, enum SeekPos origin) { return fseek(s, off, origin); }