size_t devo_fread(void *ptr, size_t size, size_t nmemb, FILE *stream) { long fd = (long)stream - 1; int r = _read_r(NULL, fd, ptr, size * nmemb); if (r <= 0) return 0; return nmemb; }
char *devo_fgets(char *s, int size, FILE *stream) { long fd = (long)stream - 1; _stop_on_cr = 1; int r = _read_r(NULL, fd, s, size-1); _stop_on_cr = 0; if(r <= 0) return NULL; s[r] = '\0'; return s; }
int __sread (void* cookie,char *buf,int n) { register FILE *fp = (FILE *) cookie; register int ret; ret = _read_r(fp->_data, fp->_file, buf, n); /* If the read succeeded, update the current offset. */ if (ret >= 0) fp->_offset += ret; else fp->_flags &= ~__SOFF; /* paranoia */ return ret; }
_ssize_t read( int file, void *ptr, size_t len ) { return _read_r( _REENT, file, ptr, len ); }