]> git.tdb.fi Git - libs/core.git/blobdiff - source/io/pipe.cpp
Add move semantics to Variant
[libs/core.git] / source / io / pipe.cpp
index 1301b3ad0a8ce2a8554157d3d737bfa99b9bd06a..f6bc335d4216a48e820f9bd98c10c1e9b8c761f3 100644 (file)
@@ -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();