head 1.2; access; symbols pkgsrc-2014Q1:1.1.0.74 pkgsrc-2014Q1-base:1.1 pkgsrc-2013Q4:1.1.0.72 pkgsrc-2013Q4-base:1.1 pkgsrc-2013Q3:1.1.0.70 pkgsrc-2013Q3-base:1.1 pkgsrc-2013Q2:1.1.0.68 pkgsrc-2013Q2-base:1.1 pkgsrc-2013Q1:1.1.0.66 pkgsrc-2013Q1-base:1.1 pkgsrc-2012Q4:1.1.0.64 pkgsrc-2012Q4-base:1.1 pkgsrc-2012Q3:1.1.0.62 pkgsrc-2012Q3-base:1.1 pkgsrc-2012Q2:1.1.0.60 pkgsrc-2012Q2-base:1.1 pkgsrc-2012Q1:1.1.0.58 pkgsrc-2012Q1-base:1.1 pkgsrc-2011Q4:1.1.0.56 pkgsrc-2011Q4-base:1.1 pkgsrc-2011Q3:1.1.0.54 pkgsrc-2011Q3-base:1.1 pkgsrc-2011Q2:1.1.0.52 pkgsrc-2011Q2-base:1.1 pkgsrc-2011Q1:1.1.0.50 pkgsrc-2011Q1-base:1.1 pkgsrc-2010Q4:1.1.0.48 pkgsrc-2010Q4-base:1.1 pkgsrc-2010Q3:1.1.0.46 pkgsrc-2010Q3-base:1.1 pkgsrc-2010Q2:1.1.0.44 pkgsrc-2010Q2-base:1.1 pkgsrc-2010Q1:1.1.0.42 pkgsrc-2010Q1-base:1.1 pkgsrc-2009Q4:1.1.0.40 pkgsrc-2009Q4-base:1.1 pkgsrc-2009Q3:1.1.0.38 pkgsrc-2009Q3-base:1.1 pkgsrc-2009Q2:1.1.0.36 pkgsrc-2009Q2-base:1.1 pkgsrc-2009Q1:1.1.0.34 pkgsrc-2009Q1-base:1.1 pkgsrc-2008Q4:1.1.0.32 pkgsrc-2008Q4-base:1.1 pkgsrc-2008Q3:1.1.0.30 pkgsrc-2008Q3-base:1.1 cube-native-xorg:1.1.0.28 cube-native-xorg-base:1.1 pkgsrc-2008Q2:1.1.0.26 pkgsrc-2008Q2-base:1.1 cwrapper:1.1.0.24 pkgsrc-2008Q1:1.1.0.22 pkgsrc-2008Q1-base:1.1 pkgsrc-2007Q4:1.1.0.20 pkgsrc-2007Q4-base:1.1 pkgsrc-2007Q3:1.1.0.18 pkgsrc-2007Q3-base:1.1 pkgsrc-2007Q2:1.1.0.16 pkgsrc-2007Q2-base:1.1 pkgsrc-2007Q1:1.1.0.14 pkgsrc-2007Q1-base:1.1 pkgsrc-2006Q4:1.1.0.12 pkgsrc-2006Q4-base:1.1 pkgsrc-2006Q3:1.1.0.10 pkgsrc-2006Q3-base:1.1 pkgsrc-2006Q2:1.1.0.8 pkgsrc-2006Q2-base:1.1 pkgsrc-2006Q1:1.1.0.6 pkgsrc-2006Q1-base:1.1 pkgsrc-2005Q4:1.1.0.4 pkgsrc-2005Q4-base:1.1 pkgsrc-2005Q3:1.1.0.2 pkgsrc-2005Q3-base:1.1; locks; strict; comment @# @; 1.2 date 2014.05.25.15.35.35; author gdt; state dead; branches; next 1.1; commitid tewNFjYS9AE4YVBx; 1.1 date 2005.09.16.18.14.49; author bouyer; state Exp; branches; next ; desc @@ 1.2 log @Remove xentools20. @ text @$NetBSD: patch-aw,v 1.1 2005/09/16 18:14:49 bouyer Exp $ --- libxutil/file_stream.c.orig 2005-09-13 17:02:16.000000000 -0400 +++ libxutil/file_stream.c 2005-09-13 17:31:39.000000000 -0400 @@@@ -21,11 +21,13 @@@@ */ #ifndef __KERNEL__ #include +#include #include #include "allocate.h" #include "file_stream.h" static int file_read(IOStream *s, void *buf, size_t n); +static int file_read_nbuf(IOStream *s, void* buf, size_t n); static int file_write(IOStream *s, const void *buf, size_t n); static int file_error(IOStream *s); static int file_close(IOStream *s); @@@@ -42,6 +44,16 @@@@ flush: file_flush, }; +/** Methods used by a FILE* IOStream that's unbuffered. */ +static const IOMethods file_methods_nbuf = { + read: file_read_nbuf, + write: file_write, + error: file_error, + close: file_close, + free: file_free, + flush: file_flush, +}; + /** IOStream for stdin. */ static IOStream _iostdin = { methods: &file_methods, @@@@ -102,6 +114,7 @@@@ * @@return 0 on success, non-zero otherwise */ int file_stream_setvbuf(IOStream *io, char *buf, int mode, size_t size){ + io->methods = (mode == _IONBF) ? &file_methods_nbuf : &file_methods; return setvbuf(get_file(io), buf, mode, size); } @@@@ -126,6 +139,15 @@@@ static int file_read(IOStream *s, void *buf, size_t n){ return fread(buf, 1, n, get_file(s)); } +static int file_read_nbuf(IOStream *s, void *buf, size_t n){ + int fd = fileno(get_file(s)), rv, nr=0; + while(n > nr) { + rv = read(fd, buf+nr, n-nr); + if (rv <= 0) break; + nr += rv; + } + return nr; +} /** Fush the underlying stream using fflush(). * @ 1.1 log @Add patch from Jed Davis on port-xen: | xfrd reads from the network socket using | fread() on an _IONBF'ed stream; under NetBSD, this results in a | sequence of one-character reads. This behavior, as far as I can tell, | goes back all the way to V7 Unix; i.e., it's older than me. | | So I've modified libxutil, which has its own IO indirection layer, to | switch to read(2) in the "unbuffered" case" bump PKGREVISION @ text @d1 1 a1 1 $NetBSD: $ @