X-Git-Url: http://git.tdb.fi/?p=libs%2Fcore.git;a=blobdiff_plain;f=source%2Fio%2Fpipe.cpp;h=f6bc335d4216a48e820f9bd98c10c1e9b8c761f3;hp=1301b3ad0a8ce2a8554157d3d737bfa99b9bd06a;hb=HEAD;hpb=ea8bf8f588310b0d7fd3297d74907602705bba1d diff --git a/source/io/pipe.cpp b/source/io/pipe.cpp index 1301b3a..f6bc335 100644 --- a/source/io/pipe.cpp +++ b/source/io/pipe.cpp @@ -43,18 +43,22 @@ void Pipe::set_mode(Mode m) void Pipe::set_block(bool b) { adjust_mode(mode, M_NONBLOCK, !b); - sys_set_blocking(read_handle, b); - sys_set_blocking(write_handle, b); + if(read_handle) + sys_set_blocking(read_handle, b); + if(write_handle) + sys_set_blocking(write_handle, b); } void Pipe::set_inherit(bool i) { adjust_mode(mode, M_INHERIT, i); - sys_set_inherit(read_handle, i); - sys_set_inherit(write_handle, i); + if(read_handle) + sys_set_inherit(read_handle, i); + if(write_handle) + sys_set_inherit(write_handle, i); } -unsigned Pipe::do_write(const char *buf, unsigned size) +size_t Pipe::do_write(const char *buf, size_t size) { if(size==0) return 0; @@ -62,12 +66,12 @@ unsigned Pipe::do_write(const char *buf, unsigned size) return sys_write(write_handle, buf, size); } -unsigned Pipe::do_read(char *buf, unsigned size) +size_t Pipe::do_read(char *buf, size_t size) { if(size==0) return 0; - unsigned ret = reader.read(buf, size); + size_t ret = reader.read(buf, size); if(ret==0) set_eof();