]> git.tdb.fi Git - libs/core.git/blobdiff - source/io/pipe.cpp
Implement controls for file descriptor inheritance
[libs/core.git] / source / io / pipe.cpp
index 0a72a80068da4d9ac686fdb8cd3216801e316725..1301b3ad0a8ce2a8554157d3d737bfa99b9bd06a 100644 (file)
@@ -42,14 +42,18 @@ void Pipe::set_mode(Mode m)
 
 void Pipe::set_block(bool b)
 {
-       mode = (mode&~M_NONBLOCK);
-       if(b)
-               mode = (mode|M_NONBLOCK);
-
+       adjust_mode(mode, M_NONBLOCK, !b);
        sys_set_blocking(read_handle, b);
        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);
+}
+
 unsigned Pipe::do_write(const char *buf, unsigned size)
 {
        if(size==0)