From d600a6b5b358c28d482b01f10bfa3292b17f5d12 Mon Sep 17 00:00:00 2001 From: Roberto Ierusalimschy Date: Tue, 16 Sep 1997 16:25:59 -0300 Subject: a generic input stream interface --- zio.c | 79 ------------------------------------------------------------------- 1 file changed, 79 deletions(-) delete mode 100644 zio.c (limited to 'zio.c') diff --git a/zio.c b/zio.c deleted file mode 100644 index c0b25daa..00000000 --- a/zio.c +++ /dev/null @@ -1,79 +0,0 @@ -/* -* zio.c -* a generic input stream interface -* $Id: zio.c,v 1.1 1997/06/16 16:50:22 roberto Exp roberto $ -*/ - -#include -#include -#include -#include "zio.h" - - -/* ----------------------------------------------------- memory buffers --- */ - -static int zmfilbuf(ZIO* z) -{ - return EOZ; -} - -ZIO* zmopen(ZIO* z, char* b, int size) -{ - if (b==NULL) return NULL; - z->n=size; - z->p= (unsigned char *)b; - z->filbuf=zmfilbuf; - z->u=NULL; - return z; -} - -/* ------------------------------------------------------------ strings --- */ - -ZIO* zsopen(ZIO* z, char* s) -{ - if (s==NULL) return NULL; - return zmopen(z,s,strlen(s)); -} - -/* -------------------------------------------------------------- FILEs --- */ - -static int zffilbuf(ZIO* z) -{ - int n=fread(z->buffer,1,ZBSIZE,z->u); - if (n==0) return EOZ; - z->n=n-1; - z->p=z->buffer; - return *(z->p++); -} - - -ZIO* zFopen(ZIO* z, FILE* f) -{ - if (f==NULL) return NULL; - z->n=0; - z->p=z->buffer; - z->filbuf=zffilbuf; - z->u=f; - return z; -} - - -/* --------------------------------------------------------------- read --- */ -int zread(ZIO *z, void *b, int n) -{ - while (n) { - int m; - if (z->n == 0) { - if (z->filbuf(z) == EOZ) - return n; /* retorna quantos faltaram ler */ - zungetc(z); /* poe o resultado de filbuf no buffer */ - } - m = (n <= z->n) ? n : z->n; /* minimo de n e z->n */ - memcpy(b, z->p, m); - z->n -= m; - z->p += m; - b = (char *)b + m; - n -= m; - } - return 0; -} -- cgit v1.2.3-55-g6feb