X-Git-Url: https://git.llucax.com/z.facultad/75.06/jacu.git/blobdiff_plain/a988e1ea05cda557de9b42feeef376ca7502ca54..cb53166758c12a09e9911769ce89c94cee4cc0f0:/src/vfile/vfile.c?ds=sidebyside diff --git a/src/vfile/vfile.c b/src/vfile/vfile.c index aafb851..589d4aa 100644 --- a/src/vfile/vfile.c +++ b/src/vfile/vfile.c @@ -22,7 +22,7 @@ * Autores: Leandro Lucarella *---------------------------------------------------------------------------- * - * $Id: bufford.c 624 2004-05-30 20:18:04Z llucare $ + * $Id$ * */ @@ -98,6 +98,11 @@ int vfclose(VFILE* vfp) return ret; } +int vfeof(VFILE* vfp) +{ + return vfp->lastvol && feof(vfp->fp); +} + int vfgetc(VFILE* vfp) { int c; @@ -127,12 +132,29 @@ int vfputc(int c, VFILE* vfp) size_t vfread(void* ptr, size_t size, size_t nmemb, VFILE* vfp) { - return 0; + int c; + size_t i = 0; + size_t total = size * nmemb; + /* leo uno a uno y si hay error salgo. */ + while (i < total) + { + if ((c = vfgetc(vfp)) == EOF) + { + PERR("vfread: EOF"); + break; + } + else ((char*)ptr)[i++] = c; + } + return i / size; } size_t vfwrite(const void *ptr, size_t size, size_t nmemb, VFILE* vfp) { - return 0; + size_t i = 0; + size_t total = size * nmemb; + /* escribo uno a uno y si hay error salgo. */ + while (i < total && (vfputc(((char*)ptr)[i++], vfp)) != EOF); + return i / size; } int vfvol_close(VFILE* vfp)