Index: stdio.h =================================================================== RCS file: /cvsroot/src/include/stdio.h,v retrieving revision 1.80 diff -u -p -u -r1.80 stdio.h --- stdio.h 22 Jan 2012 18:36:16 -0000 1.80 +++ stdio.h 16 Mar 2012 19:15:25 -0000 @@ -121,9 +121,9 @@ typedef struct __sFILE { /* operations */ void *_cookie; /* cookie passed to io functions */ int (*_close)(void *); - int (*_read) (void *, char *, int); + ssize_t (*_read) (void *, void *, size_t); __off_t (*_seek) (void *, __off_t, int); - int (*_write)(void *, const char *, int); + ssize_t (*_write)(void *, const void *, size_t); /* file extension */ struct __sbuf _ext; @@ -136,8 +136,9 @@ typedef struct __sFILE { unsigned char _ubuf[3]; /* guarantee an ungetc() buffer */ unsigned char _nbuf[1]; /* guarantee a getc() buffer */ + int (*_flush)(void *); /* Formerly used by fgetln/fgetwln; kept for binary compatibility */ - struct __sbuf _lb__unused; + char _lb_unused[sizeof(struct __sbuf) - sizeof(int (*)(void *))]; /* Unix stdio files get aligned to block boundaries on fseek() */ int _blksize; /* stat.st_blksize (may be != _bf._size) */ @@ -427,13 +428,21 @@ __END_DECLS */ __BEGIN_DECLS FILE *funopen(const void *, - int (*)(void *, char *, int), - int (*)(void *, const char *, int), - off_t (*)(void *, off_t, int), - int (*)(void *)); + int (*)(void *, char *, int), + int (*)(void *, const char *, int), + off_t (*)(void *, off_t, int), + int (*)(void *)); +FILE *funopen2(const void *, + ssize_t (*)(void *, void *, size_t), + ssize_t (*)(void *, const void *, size_t), + off_t (*)(void *, off_t, int), + int (*)(void *), + int (*)(void *)); __END_DECLS #define fropen(cookie, fn) funopen(cookie, fn, 0, 0, 0) #define fwopen(cookie, fn) funopen(cookie, 0, fn, 0, 0) +#define fropen2(cookie, fn) funopen2(cookie, fn, 0, 0, 0, 0) +#define fwopen2(cookie, fn) funopen2(cookie, 0, fn, 0, 0, 0) #endif /* _NETBSD_SOURCE */ /*